fb_joy 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +13 -0
- data/Gemfile.lock +38 -0
- data/LICENSE +20 -0
- data/README.md +78 -0
- data/Rakefile +39 -0
- data/VERSION +1 -0
- data/fb_joy.gemspec +88 -0
- data/lib/fb_joy.rb +12 -0
- data/lib/joey/action.rb +16 -0
- data/lib/joey/affiliation.rb +15 -0
- data/lib/joey/album.rb +42 -0
- data/lib/joey/comment.rb +20 -0
- data/lib/joey/education.rb +20 -0
- data/lib/joey/education_history.rb +15 -0
- data/lib/joey/fetching_array.rb +26 -0
- data/lib/joey/hs_info.rb +15 -0
- data/lib/joey/image.rb +5 -0
- data/lib/joey/like.rb +13 -0
- data/lib/joey/location.rb +17 -0
- data/lib/joey/model.rb +84 -0
- data/lib/joey/page.rb +31 -0
- data/lib/joey/parser_helpers.rb +7 -0
- data/lib/joey/photo.rb +41 -0
- data/lib/joey/post.rb +67 -0
- data/lib/joey/privacy.rb +15 -0
- data/lib/joey/profile.rb +33 -0
- data/lib/joey/property.rb +15 -0
- data/lib/joey/relative.rb +15 -0
- data/lib/joey/rest_api.rb +116 -0
- data/lib/joey/status.rb +15 -0
- data/lib/joey/tag.rb +15 -0
- data/lib/joey/television.rb +15 -0
- data/lib/joey/user.rb +83 -0
- data/lib/joey/version.rb +9 -0
- data/lib/joey/video.rb +22 -0
- data/lib/joey/work.rb +20 -0
- data/lib/joey/work_history.rb +18 -0
- metadata +167 -0
data/lib/joey/status.rb
ADDED
data/lib/joey/tag.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
module Joey
|
2
|
+
class Tag < Model
|
3
|
+
define_properties :id, :name, :x, :y, :created_time
|
4
|
+
|
5
|
+
def validate
|
6
|
+
created_time.to_time rescue errors << { :message => 'created_time is not compatible' }
|
7
|
+
end
|
8
|
+
|
9
|
+
def valid?
|
10
|
+
self.validate
|
11
|
+
puts self.errors.inspect unless self.errors.empty?
|
12
|
+
self.errors.empty?
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/joey/user.rb
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'joey/parser_helpers'
|
2
|
+
|
3
|
+
module Joey
|
4
|
+
class User < Profile
|
5
|
+
include Joey::ParserHelpers
|
6
|
+
|
7
|
+
define_properties :first_name, :last_name, :middle_name, :link, :about, :about_me, :birthday, :gender,
|
8
|
+
:email, :website, :timezone, :updated_time, :verified, :religion, :political
|
9
|
+
define_properties :pic_small, :pic_big, :pic_square, :pic, :pic_big_with_logo, :pic_small_with_logo,
|
10
|
+
:pic_square_with_logo, :pic_with_logo, :picture
|
11
|
+
define_properties :is_app_user, :books, :username, :significant_other_id, :meeting_for, :tv, :meeting_sex, :relationship_status
|
12
|
+
define_properties :wall_count, :uid, :movies, :sex, :birthday_date, :notes_count, :activities, :profile_blurb, :music, :locale
|
13
|
+
define_properties :profile_url, :profile_update_time, :interests, :is_blocked, :quotes, :interested_in, :bio
|
14
|
+
define_properties :start_time # Hack to check if it is an event
|
15
|
+
|
16
|
+
def self.recognize?(hash)
|
17
|
+
!hash.has_key?("category")
|
18
|
+
end
|
19
|
+
|
20
|
+
hash_populating_accessor :status, "Status"
|
21
|
+
hash_populating_accessor :work, "Work"
|
22
|
+
hash_populating_accessor :work_history, "WorkHistory"
|
23
|
+
hash_populating_accessor :education, "Education"
|
24
|
+
hash_populating_accessor :education_history, "EducationHistory"
|
25
|
+
|
26
|
+
hash_populating_accessor :location, "Page"
|
27
|
+
hash_populating_accessor :current_location, "Location"
|
28
|
+
hash_populating_accessor :hometown, "Page"
|
29
|
+
hash_populating_accessor :hometown_location, "Location"
|
30
|
+
hash_populating_accessor :hs_info, "HsInfo"
|
31
|
+
hash_populating_accessor :affiliations, "Affiliation"
|
32
|
+
hash_populating_accessor :family, "Relative"
|
33
|
+
|
34
|
+
#has_association :activities,"Activity"
|
35
|
+
has_association :friends, "User"
|
36
|
+
has_association :home, "Post"
|
37
|
+
#has_association :interests, "Interest"
|
38
|
+
#has_association :music, "Music"
|
39
|
+
#has_association :books, "Book"
|
40
|
+
#has_association :movies, "Movie"
|
41
|
+
has_association :television, "Television"
|
42
|
+
has_association :likes, "Page"
|
43
|
+
|
44
|
+
def has_app_permission?(ext_perm)
|
45
|
+
permissions = client.get_object('me/permissions', {})['data'].first
|
46
|
+
boolianize(permissions[ext_perm])
|
47
|
+
end
|
48
|
+
|
49
|
+
def friends!(ids)
|
50
|
+
data = self.client.rest_call('users.getInfo', :uids => ids, :fields =>
|
51
|
+
'about_me,activities,affiliations,books,birthday,birthday_date,current_location,education_history,
|
52
|
+
email,family,first_name,hometown_location,hs_info,interests,is_app_user,is_blocked,last_name,
|
53
|
+
locale,meeting_for,meeting_sex,movies,music,name,notes_count,pic,pic_big,pic_small,pic_square,
|
54
|
+
pic_with_logo,pic_big_with_logo,pic_small_with_logo,pic_square_with_logo,
|
55
|
+
political,profile_blurb,profile_update_time,profile_url,quotes,relationship_status,religion,sex,
|
56
|
+
significant_other_id,status,timezone,tv,username,wall_count,website,work_history')
|
57
|
+
self.client.map_data(data, self.class)
|
58
|
+
end
|
59
|
+
|
60
|
+
def info(args)
|
61
|
+
data = self.client.rest_call('users.getInfo', :uids => self.id, :fields => args.join(','))
|
62
|
+
user = self.client.map_data(data, self.class).first
|
63
|
+
user.id = self.id
|
64
|
+
user
|
65
|
+
end
|
66
|
+
|
67
|
+
def validate
|
68
|
+
errors << { :message => 'id should not be nil' } if id.nil?
|
69
|
+
errors << { :message => "name should be string but is #{name.inspect}" } unless name.is_a?(String)
|
70
|
+
errors << { :message => "gender should be 'male' or 'female' but is #{gender.inspect}" } unless ['male', 'female', nil].include?(gender)
|
71
|
+
errors << { :message => "pic big is neither string nor nil but is #{pic_big.inspect}" } unless pic_big.is_a?(String) || pic_big.nil?
|
72
|
+
errors << { :message => "current location is neither Joey::Location nor nil but is #{current_location.inspect}" } unless current_location.is_a?(Joey::Location) || current_location.nil?
|
73
|
+
errors << { :message => "Facebook is an idiot. This is an event instead of a Joey::User or Joey::Page" } unless start_time.nil?
|
74
|
+
# updated_time.to_time rescue errors << { :message => 'updated_time is not compatible' }
|
75
|
+
end
|
76
|
+
|
77
|
+
def valid?
|
78
|
+
self.validate
|
79
|
+
puts self.errors.inspect unless self.errors.empty?
|
80
|
+
self.errors.empty?
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
data/lib/joey/version.rb
ADDED
data/lib/joey/video.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
module Joey
|
2
|
+
class Video < Model
|
3
|
+
|
4
|
+
define_properties :id, :name, :description, :length, :created_time,
|
5
|
+
:updated_time, :icon, :picture, :embed_html, :caption, :link, :source, :likes
|
6
|
+
|
7
|
+
hash_populating_accessor :from, "User", "Page"
|
8
|
+
hash_populating_accessor :tags, "Tag"
|
9
|
+
|
10
|
+
has_association :comments, "Comment"
|
11
|
+
|
12
|
+
def validate
|
13
|
+
self.errors = []
|
14
|
+
end
|
15
|
+
|
16
|
+
def valid?
|
17
|
+
self.validate
|
18
|
+
puts self.errors.inspect unless self.errors.empty?
|
19
|
+
self.errors.empty?
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/joey/work.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Joey
|
2
|
+
class Work < Model
|
3
|
+
|
4
|
+
define_properties :start_date, :end_date, :description
|
5
|
+
|
6
|
+
hash_populating_accessor :employer, "Page"
|
7
|
+
hash_populating_accessor :location, "Page"
|
8
|
+
hash_populating_accessor :position, "Page"
|
9
|
+
|
10
|
+
def validate
|
11
|
+
valid = true
|
12
|
+
end
|
13
|
+
|
14
|
+
def valid?
|
15
|
+
self.validate
|
16
|
+
puts self.errors.inspect unless self.errors.empty?
|
17
|
+
self.errors.empty?
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Joey
|
2
|
+
class WorkHistory < Model
|
3
|
+
define_properties :start_date, :position, :company_name, :description, :end_date
|
4
|
+
|
5
|
+
hash_populating_accessor :location, "Location"
|
6
|
+
|
7
|
+
def validate
|
8
|
+
valid = true
|
9
|
+
end
|
10
|
+
|
11
|
+
def valid?
|
12
|
+
self.validate
|
13
|
+
puts self.errors.inspect unless self.errors.empty?
|
14
|
+
self.errors.empty?
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
metadata
ADDED
@@ -0,0 +1,167 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fb_joy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Waseem Ahmad
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-05-07 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: hashie
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 2.3.0
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.3.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: bundler
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.0.0
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.0.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: jeweler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.6.3
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.6.3
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: simplecov
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0.5'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0.5'
|
94
|
+
description: Object wrappers for nodes in the Facebook OpenGraph
|
95
|
+
email: talk.to.waseem@gmail.com
|
96
|
+
executables: []
|
97
|
+
extensions: []
|
98
|
+
extra_rdoc_files:
|
99
|
+
- LICENSE
|
100
|
+
- README.md
|
101
|
+
files:
|
102
|
+
- Gemfile
|
103
|
+
- Gemfile.lock
|
104
|
+
- LICENSE
|
105
|
+
- README.md
|
106
|
+
- Rakefile
|
107
|
+
- VERSION
|
108
|
+
- fb_joy.gemspec
|
109
|
+
- lib/fb_joy.rb
|
110
|
+
- lib/joey/action.rb
|
111
|
+
- lib/joey/affiliation.rb
|
112
|
+
- lib/joey/album.rb
|
113
|
+
- lib/joey/comment.rb
|
114
|
+
- lib/joey/education.rb
|
115
|
+
- lib/joey/education_history.rb
|
116
|
+
- lib/joey/fetching_array.rb
|
117
|
+
- lib/joey/hs_info.rb
|
118
|
+
- lib/joey/image.rb
|
119
|
+
- lib/joey/like.rb
|
120
|
+
- lib/joey/location.rb
|
121
|
+
- lib/joey/model.rb
|
122
|
+
- lib/joey/page.rb
|
123
|
+
- lib/joey/parser_helpers.rb
|
124
|
+
- lib/joey/photo.rb
|
125
|
+
- lib/joey/post.rb
|
126
|
+
- lib/joey/privacy.rb
|
127
|
+
- lib/joey/profile.rb
|
128
|
+
- lib/joey/property.rb
|
129
|
+
- lib/joey/relative.rb
|
130
|
+
- lib/joey/rest_api.rb
|
131
|
+
- lib/joey/status.rb
|
132
|
+
- lib/joey/tag.rb
|
133
|
+
- lib/joey/television.rb
|
134
|
+
- lib/joey/user.rb
|
135
|
+
- lib/joey/version.rb
|
136
|
+
- lib/joey/video.rb
|
137
|
+
- lib/joey/work.rb
|
138
|
+
- lib/joey/work_history.rb
|
139
|
+
homepage: http://github.com/kristianmandrup/joey
|
140
|
+
licenses:
|
141
|
+
- MIT
|
142
|
+
post_install_message:
|
143
|
+
rdoc_options: []
|
144
|
+
require_paths:
|
145
|
+
- lib
|
146
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
148
|
+
requirements:
|
149
|
+
- - ! '>='
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0'
|
152
|
+
segments:
|
153
|
+
- 0
|
154
|
+
hash: 3548198302155452458
|
155
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
|
+
none: false
|
157
|
+
requirements:
|
158
|
+
- - ! '>='
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
requirements: []
|
162
|
+
rubyforge_project:
|
163
|
+
rubygems_version: 1.8.24
|
164
|
+
signing_key:
|
165
|
+
specification_version: 3
|
166
|
+
summary: Ruby Wrapper API for Facebook OpenGraph
|
167
|
+
test_files: []
|