mogli 0.0.39 → 0.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/mogli.rb +3 -0
- data/lib/mogli/client.rb +8 -3
- data/lib/mogli/event.rb +3 -1
- data/lib/mogli/friendlist.rb +10 -0
- data/lib/mogli/model.rb +8 -1
- data/lib/mogli/permissions.rb +80 -0
- data/lib/mogli/place.rb +40 -0
- data/lib/mogli/user.rb +5 -0
- data/spec/client_spec.rb +26 -5
- metadata +5 -2
data/lib/mogli.rb
CHANGED
@@ -20,6 +20,7 @@ require "mogli/comment"
|
|
20
20
|
require "mogli/domain"
|
21
21
|
require "mogli/education"
|
22
22
|
require "mogli/event"
|
23
|
+
require "mogli/friendlist"
|
23
24
|
require "mogli/group"
|
24
25
|
require "mogli/insight"
|
25
26
|
require "mogli/insight_value"
|
@@ -31,6 +32,7 @@ require "mogli/music"
|
|
31
32
|
require "mogli/note"
|
32
33
|
require "mogli/page"
|
33
34
|
require "mogli/photo"
|
35
|
+
require "mogli/place"
|
34
36
|
require "mogli/post"
|
35
37
|
require "mogli/status"
|
36
38
|
require "mogli/television"
|
@@ -41,3 +43,4 @@ require "mogli/test_user"
|
|
41
43
|
require "mogli/client"
|
42
44
|
require "mogli/app_client"
|
43
45
|
require "mogli/fql_multiquery"
|
46
|
+
require "mogli/permissions"
|
data/lib/mogli/client.rb
CHANGED
@@ -27,7 +27,7 @@ module Mogli
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def fql_path
|
30
|
-
"https://
|
30
|
+
"https://graph.facebook.com/fql"
|
31
31
|
end
|
32
32
|
|
33
33
|
def fql_multiquery_path
|
@@ -137,9 +137,9 @@ module Mogli
|
|
137
137
|
end
|
138
138
|
|
139
139
|
def fql_query(query,klass=nil,format="json")
|
140
|
-
data = self.class.
|
140
|
+
data = self.class.get(fql_path,:query=>default_params.merge({:q=>query,:format=>format})).parsed_response
|
141
141
|
return data unless format=="json"
|
142
|
-
map_data(data,klass)
|
142
|
+
map_data(data["data"],klass)
|
143
143
|
end
|
144
144
|
|
145
145
|
def fql_multiquery(queries)
|
@@ -161,6 +161,11 @@ module Mogli
|
|
161
161
|
def map_data(data,klass=nil)
|
162
162
|
raise_error_if_necessary(data)
|
163
163
|
hash_or_array = extract_hash_or_array(data,klass)
|
164
|
+
if hash_or_array.is_a?(Array) && hash_or_array.size == 2 && hash_or_array[1].is_a?(Hash) && hash_or_array[1]['body']
|
165
|
+
# responses from batch queries are buried inside a
|
166
|
+
# completely different data structure
|
167
|
+
hash_or_array = JSON.parse(hash_or_array[1]['body'].first).values
|
168
|
+
end
|
164
169
|
hash_or_array = map_to_class(hash_or_array,klass) if klass
|
165
170
|
hash_or_array
|
166
171
|
end
|
data/lib/mogli/event.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Mogli
|
2
2
|
class Event < Model
|
3
3
|
set_search_type
|
4
|
-
define_properties :id, :name, :description, :start_time, :end_time, :location, :privacy, :updated_time
|
4
|
+
define_properties :id, :name, :description, :start_time, :end_time, :location, :privacy, :updated_time, :rsvp_status
|
5
5
|
creation_properties :start_time, :end_time, :link, :name, :description, :privacy
|
6
6
|
|
7
7
|
hash_populating_accessor :venue, "Address"
|
@@ -12,5 +12,7 @@ module Mogli
|
|
12
12
|
has_association :attending, "User"
|
13
13
|
has_association :declined, "User"
|
14
14
|
has_association :feed, "Post"
|
15
|
+
|
16
|
+
fql_mapping :eid=>:id
|
15
17
|
end
|
16
18
|
end
|
data/lib/mogli/model.rb
CHANGED
@@ -20,10 +20,11 @@ module Mogli
|
|
20
20
|
@_values = {}
|
21
21
|
self.client=client
|
22
22
|
hash.each do |k,v|
|
23
|
-
self.send("#{k}=",v)
|
23
|
+
self.send("#{self.class.fql_mapping[k]||k}=",v)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
|
27
28
|
def post_params
|
28
29
|
post_params = {}
|
29
30
|
self.class.creation_keys.each do |key|
|
@@ -54,6 +55,12 @@ module Mogli
|
|
54
55
|
other.extend(ClassMethods)
|
55
56
|
end
|
56
57
|
|
58
|
+
def self.fql_mapping(hash=nil)
|
59
|
+
if hash
|
60
|
+
@fql_mapping = hash
|
61
|
+
end
|
62
|
+
@fql_mapping || {}
|
63
|
+
end
|
57
64
|
def method_missing(method, *args)
|
58
65
|
method_as_s = method.to_s
|
59
66
|
if method_as_s.to_s[-1].chr == "="
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module Mogli
|
2
|
+
class Permissions < Model
|
3
|
+
|
4
|
+
define_properties \
|
5
|
+
:user_about_me,
|
6
|
+
:user_activities,
|
7
|
+
:user_birthday,
|
8
|
+
:user_checkins,
|
9
|
+
:user_education_history,
|
10
|
+
:user_events,
|
11
|
+
:user_games_activity,
|
12
|
+
:user_groups,
|
13
|
+
:user_hometown,
|
14
|
+
:user_interests,
|
15
|
+
:user_likes,
|
16
|
+
:user_location,
|
17
|
+
:user_notes,
|
18
|
+
:user_online_presence,
|
19
|
+
:user_photo_video_tags,
|
20
|
+
:user_photos,
|
21
|
+
:user_relationship_details,
|
22
|
+
:user_relationships,
|
23
|
+
:user_religion_politics,
|
24
|
+
:user_status,
|
25
|
+
:user_subscriptions,
|
26
|
+
:user_videos,
|
27
|
+
:user_website,
|
28
|
+
:user_work_history,
|
29
|
+
:friends_about_me,
|
30
|
+
:friends_activities,
|
31
|
+
:friends_birthday,
|
32
|
+
:friends_checkins,
|
33
|
+
:friends_education_history,
|
34
|
+
:friends_events,
|
35
|
+
:friends_games_activity,
|
36
|
+
:friends_groups,
|
37
|
+
:friends_hometown,
|
38
|
+
:friends_interests,
|
39
|
+
:friends_likes,
|
40
|
+
:friends_location,
|
41
|
+
:friends_notes,
|
42
|
+
:friends_online_presence,
|
43
|
+
:friends_photo_video_tags,
|
44
|
+
:friends_photos,
|
45
|
+
:friends_relationship_details,
|
46
|
+
:friends_relationships,
|
47
|
+
:friends_religion_politics,
|
48
|
+
:friends_status,
|
49
|
+
:friends_subscriptions,
|
50
|
+
:friends_videos,
|
51
|
+
:friends_website,
|
52
|
+
:friends_work_history,
|
53
|
+
:ads_management,
|
54
|
+
:create_event,
|
55
|
+
:create_note,
|
56
|
+
:email,
|
57
|
+
:export_stream,
|
58
|
+
:manage_friendlists,
|
59
|
+
:manage_notifications,
|
60
|
+
:manage_pages,
|
61
|
+
:offline_access,
|
62
|
+
:photo_upload,
|
63
|
+
:publish_actions,
|
64
|
+
:publish_checkins,
|
65
|
+
:publish_stream,
|
66
|
+
:read_friendlists,
|
67
|
+
:read_insights,
|
68
|
+
:read_mailbox,
|
69
|
+
:read_requests,
|
70
|
+
:read_stream,
|
71
|
+
:rsvp_event,
|
72
|
+
:share_item,
|
73
|
+
:sms,
|
74
|
+
:status_update,
|
75
|
+
:video_upload,
|
76
|
+
:xmpp_login
|
77
|
+
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
data/lib/mogli/place.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
|
2
|
+
module Mogli
|
3
|
+
class Place < Model
|
4
|
+
|
5
|
+
define_properties :id, :name, :category, :username, :can_post, :phone, :website, :checkins, :link, :public_transit, :likes, :picture
|
6
|
+
hash_populating_accessor :location, "Address"
|
7
|
+
hash_populating_accessor :restaurant_services, "RestaurantServices"
|
8
|
+
hash_populating_accessor :restaurant_specialties, "RestaurantSpecialties"
|
9
|
+
hash_populating_accessor :parking, "Parking"
|
10
|
+
hash_populating_accessor :payment_options, "PaymentOptions"
|
11
|
+
hash_populating_accessor :hours, "Hours"
|
12
|
+
end
|
13
|
+
|
14
|
+
class RestaurantServices < Model
|
15
|
+
define_properties :groups, :catering, :waiter, :kids, :outdoor, :reserve, :walkins, :delivery, :takeout
|
16
|
+
end
|
17
|
+
|
18
|
+
class RestaurantSpecialties < Model
|
19
|
+
define_properties :drinks, :coffee, :breakfast, :dinner, :lunch
|
20
|
+
end
|
21
|
+
|
22
|
+
class Parking < Model
|
23
|
+
define_properties :valet, :street, :lot
|
24
|
+
end
|
25
|
+
|
26
|
+
class PaymentOptions < Model
|
27
|
+
define_properties :mastercard, :amex, :cash_only, :visa, :discover
|
28
|
+
end
|
29
|
+
|
30
|
+
class Hours < Model
|
31
|
+
define_properties :sun_1_open, :sun_1_close, :sun_2_open, :sun_2_close
|
32
|
+
define_properties :mon_1_open, :mon_1_close, :mon_2_open, :mon_2_close
|
33
|
+
define_properties :tue_1_open, :tue_1_close, :tue_2_open, :tue_2_close
|
34
|
+
define_properties :wed_1_open, :wed_1_close, :wed_2_open, :wed_2_close
|
35
|
+
define_properties :thu_1_open, :thu_1_close, :thu_2_open, :thu_2_close
|
36
|
+
define_properties :fri_1_open, :fri_1_close, :fri_2_open, :fri_2_close
|
37
|
+
define_properties :sat_1_open, :sat_1_close, :sat_2_open, :sat_2_close
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
data/lib/mogli/user.rb
CHANGED
@@ -108,6 +108,11 @@ module Mogli
|
|
108
108
|
extended_permissions[permission]
|
109
109
|
end
|
110
110
|
|
111
|
+
# revoke all permissions for this user
|
112
|
+
def revoke_permission
|
113
|
+
client.delete("#{id}/permissions")
|
114
|
+
end
|
115
|
+
|
111
116
|
private
|
112
117
|
|
113
118
|
# queries all extended permissions for this user for the current application
|
data/spec/client_spec.rb
CHANGED
@@ -205,31 +205,52 @@ describe Mogli::Client do
|
|
205
205
|
|
206
206
|
describe "fql queries" do
|
207
207
|
it "defaults to json" do
|
208
|
-
Mogli::Client.should_receive(:
|
208
|
+
Mogli::Client.should_receive(:get).with("https://graph.facebook.com/fql",:query=>{:q=>"query",:format=>"json",:access_token=>"1234"}).and_return({:data=>[]})
|
209
209
|
client = Mogli::Client.new("1234")
|
210
210
|
client.fql_query("query")
|
211
211
|
end
|
212
212
|
|
213
213
|
it "supports xml" do
|
214
|
-
Mogli::Client.should_receive(:
|
214
|
+
Mogli::Client.should_receive(:get).with("https://graph.facebook.com/fql",:query=>{:q=>"query",:format=>"xml",:access_token=>"1234"}).and_return({:data=>[]})
|
215
215
|
client = Mogli::Client.new("1234")
|
216
216
|
client.fql_query("query",nil,"xml")
|
217
217
|
end
|
218
218
|
|
219
219
|
it "creates objects if given a class" do
|
220
|
-
Mogli::Client.should_receive(:
|
220
|
+
Mogli::Client.should_receive(:get).and_return({:data=>{"id"=>12451752, "first_name"=>"Mike", "last_name"=>"Mangino" }})
|
221
221
|
client = Mogli::Client.new("1234")
|
222
222
|
client.fql_query("query","user").should be_an_instance_of(Mogli::User)
|
223
223
|
end
|
224
224
|
|
225
|
+
it "Maps the fields if necessary" do
|
226
|
+
Mogli::Client.should_receive(:get).and_return({:data=>
|
227
|
+
[
|
228
|
+
{
|
229
|
+
:eid=> 182880348415052,
|
230
|
+
:name=> "Eeyores 48th Birthday Party"
|
231
|
+
},
|
232
|
+
{
|
233
|
+
:eid=> 172962332756022,
|
234
|
+
:name=> "Cake Walk - Featuring the Artwork of Emily Pelton"
|
235
|
+
}
|
236
|
+
]
|
237
|
+
})
|
238
|
+
client = Mogli::Client.new("1234")
|
239
|
+
events = client.fql_query("query","event")
|
240
|
+
events.first.should be_an_instance_of(Mogli::Event)
|
241
|
+
events.first.id.should == 182880348415052
|
242
|
+
|
243
|
+
end
|
244
|
+
|
245
|
+
|
225
246
|
it "returns a hash if no class is given" do
|
226
|
-
Mogli::Client.should_receive(:
|
247
|
+
Mogli::Client.should_receive(:get).and_return(:data=>{"id"=>12451752, "first_name"=>"Mike", "last_name"=>"Mangino" })
|
227
248
|
client = Mogli::Client.new("1234")
|
228
249
|
client.fql_query("query").should be_an_instance_of(Hash)
|
229
250
|
end
|
230
251
|
|
231
252
|
it "doesn't create objects if the format is xml" do
|
232
|
-
Mogli::Client.should_receive(:
|
253
|
+
Mogli::Client.should_receive(:get).and_return(:data=>{"id"=>12451752, "first_name"=>"Mike", "last_name"=>"Mangino" })
|
233
254
|
client = Mogli::Client.new("1234")
|
234
255
|
client.fql_query("query","user","xml").should be_an_instance_of(Hash)
|
235
256
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mogli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.40
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hashie
|
@@ -154,6 +154,7 @@ files:
|
|
154
154
|
- lib/mogli/event.rb
|
155
155
|
- lib/mogli/fetching_array.rb
|
156
156
|
- lib/mogli/fql_multiquery.rb
|
157
|
+
- lib/mogli/friendlist.rb
|
157
158
|
- lib/mogli/group.rb
|
158
159
|
- lib/mogli/insight.rb
|
159
160
|
- lib/mogli/insight_value.rb
|
@@ -166,7 +167,9 @@ files:
|
|
166
167
|
- lib/mogli/music.rb
|
167
168
|
- lib/mogli/note.rb
|
168
169
|
- lib/mogli/page.rb
|
170
|
+
- lib/mogli/permissions.rb
|
169
171
|
- lib/mogli/photo.rb
|
172
|
+
- lib/mogli/place.rb
|
170
173
|
- lib/mogli/post.rb
|
171
174
|
- lib/mogli/profile.rb
|
172
175
|
- lib/mogli/status.rb
|