person_data_export.rb
1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
module PersonDataExport
def person_attr_to_hash person
attrs = {}
attrs = person_friends_attrs(attrs, person)
attrs = person_commuinities_attrs(attrs, person)
attrs = person_softwares_attrs(attrs, person)
attrs = person_data_attr_to_hash(attrs, person)
attrs
end
def person_data_attr_to_hash(attrs, person)
attrs['articles-count'] = person.articles.count
attrs['data'] = profile_attrs(person)
attrs
end
def person_friends_attrs(attrs, person)
attrs['friends-count'] = person.friends.count
attrs['friends'] = []
person.friends.each do |friend|
attrs['friends'] << profile_attrs(friend)
end
attrs
end
def person_commuinities_attrs(attrs, person)
communities_count = person.communities.count - person.softwares.count
attrs['communities-count'] = person.respond_to?("softwares") ?
communities_count :
person.communities.count
attrs['communities'] = []
person.communities.each do |community|
if community.respond_to?("software?")
attrs['communities'] << profile_attrs(community)
end
end
attrs
end
def person_softwares_attrs(attrs, person)
attrs['softwares-count'] = person.respond_to?("softwares") ?
person.softwares.count : 0
attrs['softwares'] = []
if person.respond_to?("softwares")
person.softwares.each do |software|
attrs['softwares'] << profile_attrs(software)
end
end
attrs
end
private
def profile_attrs(profile)
profile = {
"id" => profile.id,
"identifier" => profile.identifier,
"name" => profile.name,
"type" => profile.type
}
end
end