diff --git a/lib/community_data_export.rb b/lib/community_data_export.rb index 1844982..ebd59bc 100644 --- a/lib/community_data_export.rb +++ b/lib/community_data_export.rb @@ -1,11 +1,55 @@ module CommunityDataExport + COMMUNITY_FIELDS = %w(public_software acronym finality repository_link) + LICENSE_INFO_FIELDS = %w(id version link) + def community_attr_to_hash community attrs = {} attrs["members-count"] = community.members.count attrs["members"] = [] + attrs = community_members(attrs, community) + + if community.respond_to?("software?") && community.software? + attrs['software_data'] = software_data(community) + attrs = categories(attrs, community) + end + + attrs + end + + def software_data(community) + software_hash = {} + COMMUNITY_FIELDS.each do |m| + software_hash.merge!({m => community.software_info.send(m)}) + end + + software_hash['license_info'] = {} + LICENSE_INFO_FIELDS.each do |m| + software_hash['license_info'].merge!({m => community.software_info.license_info.send(m)}) + end + software_hash + end + + def categories(attrs, community) + attrs['software_data']["categories"] = [] + community.categories.each do |category| + if Category.last.parent.name == "Software" + category_info = { + "id" => category.id, + "name" => category.name, + "slug" => category.slug, + "path" => category.path + } + attrs['software_data']["categories"] << category_info + end + end + attrs + end + + + def community_members(attrs, community) community.members.each do |member| attrs_members = { "is_admin" => community.admins.include?(member), @@ -15,35 +59,6 @@ module CommunityDataExport } attrs['members'] << attrs_members end - - if community.respond_to?("software?") && community.software? - attrs['software_data'] = { - "public_software" => community.software_info.public_software, - "acronym" => community.software_info.acronym, - "finality" => community.software_info.finality, - "repository_link" => community.software_info.repository_link, - "license_info" => { - "id" => community.software_info.license_info.id, - "version" => community.software_info.license_info.version, - "link" => community.software_info.license_info.link, - }, - "categories" => [] - } - - community.categories.each do |category| - if Category.last.parent.name == "Software" - category_info = { - "id" => category.id, - "name" => category.name, - "slug" => category.slug, - "path" => category.path - } - - attrs['software_data']["categories"] << category_info - end - end - end - attrs end -- libgit2 0.21.2