mogli 0.0.37 → 0.0.38

Sign up to get free protection for your applications and to get access to all the features.
@@ -32,9 +32,5 @@ module Mogli
32
32
  def post(path, klass, query)
33
33
  super("#{application_id}/#{path}", klass, query)
34
34
  end
35
-
36
- def get_and_map(path, klass, query)
37
- super("#{application_id}/#{path}", klass, query)
38
- end
39
35
  end
40
36
  end
@@ -1,7 +1,7 @@
1
1
  module Mogli
2
2
  class Application < Model
3
3
 
4
- define_properties :id, :name, :description, :category, :subcategory, :link, :canvas_name, :namespace, :icon_url, :logo_url, :weekly_active_users, :monthly_active_users
4
+ define_properties :id, :name, :description, :category, :subcategory, :link, :canvas_name, :namespace, :icon_url, :logo_url, :weekly_active_users, :monthly_active_users, :daily_active_users
5
5
 
6
6
  has_association :feed, "Post"
7
7
  has_association :posts, "Post"
data/lib/mogli/client.rb CHANGED
@@ -159,12 +159,16 @@ module Mogli
159
159
  def extract_hash_or_array(hash_or_array,klass)
160
160
  hash_or_array = hash_or_array.parsed_response if hash_or_array.respond_to?(:parsed_response)
161
161
  return nil if hash_or_array == false
162
+ return [] if hash_or_array == {"count" => 0}
162
163
  return hash_or_array if hash_or_array.nil? or hash_or_array.kind_of?(Array)
163
164
  return extract_fetching_array(hash_or_array,klass) if is_fetching_array?(hash_or_array)
165
+ # Facebook doesn't return numbers or booleans in an object or list
166
+ # container; this will catch the number, "true" and "false" response case
164
167
  return hash_or_array
165
168
  end
166
169
 
167
170
  def is_fetching_array?(hash)
171
+ return false unless hash.respond_to? :has_key?
168
172
  hash.has_key?("data") and hash["data"].instance_of?(Array)
169
173
  end
170
174
 
@@ -173,6 +177,7 @@ module Mogli
173
177
  f.concat(hash["data"])
174
178
  f.client = self
175
179
  f.classes = Array(klass)
180
+ f.total_count = hash["count"]
176
181
  if paging=hash["paging"]
177
182
  f.next_url = URI.encode paging["next"] unless paging["next"].nil?
178
183
  f.previous_url = URI.encode paging["previous"] unless paging["previous"].nil?
@@ -206,7 +211,10 @@ module Mogli
206
211
  end
207
212
 
208
213
  def determine_class(klass_or_klasses,data)
209
- return constantize_string(data['type']) if data.key?('type') && klass_or_klasses == Mogli::Model
214
+ if data.respond_to?(:has_key?) && data.has_key?('type') &&
215
+ klass_or_klasses == Mogli::Model
216
+ return constantize_string(data['type'])
217
+ end
210
218
  klasses = Array(klass_or_klasses).map { |k| constantize_string(k)}
211
219
  klasses.detect {|klass| klass.recognize?(data)} || klasses.first
212
220
  end
@@ -1,6 +1,6 @@
1
1
  module Mogli
2
2
  class FetchingArray < Array
3
- attr_accessor :next_url, :previous_url, :client, :classes
3
+ attr_accessor :next_url, :previous_url, :client, :classes, :total_count
4
4
 
5
5
  def fetch_next
6
6
  return [] if next_url.nil? || next_url.empty?
@@ -32,7 +32,10 @@ module Mogli
32
32
  # Default value is empty array
33
33
  res[query] = []
34
34
  # Find subquery by name in response
35
- vals = response.find{|r| r['name'] == query.to_s}
35
+ vals = response.find{|r|
36
+ return false unless r.is_a? Hash
37
+ r['name'] == query.to_s
38
+ }
36
39
  if vals && vals.has_key?('fql_result_set')
37
40
  res[query] = @client.map_to_class(vals['fql_result_set'], @queries[query][1])
38
41
  end
@@ -40,4 +43,4 @@ module Mogli
40
43
  end
41
44
  end
42
45
  end
43
- end
46
+ end
data/lib/mogli/model.rb CHANGED
@@ -116,7 +116,7 @@ module Mogli
116
116
 
117
117
  def self.has_association(name,klass)
118
118
  define_method name do |*fields|
119
- body_args = fields.empty? ? {} : {:fields => fields}
119
+ body_args = fields.empty? ? {} : {:fields => fields.join(',')}
120
120
  if (ret=instance_variable_get("@#{name}")).nil?
121
121
  ret = client.get_and_map("#{id}/#{name}",klass, body_args)
122
122
  instance_variable_set("@#{name}",ret)
data/lib/mogli/photo.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Mogli
2
2
  class Photo < Model
3
3
  define_properties :id, :name, :tags, :picture, :source, :height, :width, :images, :link, :icon,
4
- :created_time, :updated_time, :position, :comments
4
+ :created_time, :updated_time, :position, :comments, :likes
5
5
  creation_properties :message
6
6
 
7
7
  hash_populating_accessor :from, "User","Page"
@@ -0,0 +1,5 @@
1
+ module Mogli
2
+ class Subscription < Model
3
+ define_properties :callback_url, :fields, :active, :object
4
+ end
5
+ end
data/lib/mogli/user.rb CHANGED
@@ -4,8 +4,8 @@ module Mogli
4
4
 
5
5
  define_properties :username, :first_name, :last_name, :link, :about, :birthday, :gender,
6
6
  :email, :website, :timezone, :updated_time, :verified, :political, :bio,
7
- :relationship_status, :locale, :religion, :quotes, :third_party_id,
8
- :inspirational_people, :sports, :with, :middle_name, :category
7
+ :interested_in, :relationship_status, :locale, :religion, :quotes, :third_party_id,
8
+ :inspirational_people, :sports, :with, :middle_name, :category, :installed
9
9
 
10
10
  def self.recognize?(hash)
11
11
  !hash.has_key?("category")
@@ -34,6 +34,8 @@ module Mogli
34
34
  has_association :accounts, "Page"
35
35
  has_association :apprequests, "AppRequest"
36
36
 
37
+ has_association :events, "Event"
38
+
37
39
  attr_reader :extended_permissions
38
40
 
39
41
  # raised when asked to check for a permission that mogli doesn't know about
data/spec/user_spec.rb CHANGED
@@ -25,15 +25,16 @@ describe Mogli::User do
25
25
 
26
26
  it "finds optional fields for a user" do
27
27
  Mogli::Client.should_receive(:get).with("https://graph.facebook.com/1",
28
- :query=>{:fields => "birthday,gender"}).and_return({:id=>1, :birthday=>'09/15', :gender => 'male'})
29
- user = Mogli::User.find(1, nil, :birthday, :gender)
28
+ :query=>{:fields => "birthday,gender,installed"}).and_return({:id=>1, :birthday=>'09/15', :gender => 'male', :installed => true})
29
+ user = Mogli::User.find(1, nil, :birthday, :gender, :installed)
30
30
  user.birthday.should == '09/15'
31
31
  user.gender.should == 'male'
32
+ user.installed.should == true
32
33
  end
33
34
 
34
35
  it "finds a user's friends with optional fields" do
35
36
  mock_client.should_receive(:get_and_map).with(
36
- "1/friends", "User", {:fields => [:birthday, :gender]}).and_return(
37
+ "1/friends", "User", {:fields => 'birthday,gender'}).and_return(
37
38
  [Mogli::User.new(:id=>2, :birthday=>'09/15', :gender => 'male')])
38
39
  friends = user_1.friends(:birthday, :gender)
39
40
  friends.size.should == 1
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mogli
3
3
  version: !ruby/object:Gem::Version
4
- hash: 85
5
- prerelease:
4
+ prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 0
9
- - 37
10
- version: 0.0.37
8
+ - 38
9
+ version: 0.0.38
11
10
  platform: ruby
12
11
  authors:
13
12
  - Mike Mangino
@@ -15,17 +14,16 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2011-12-23 00:00:00 Z
17
+ date: 2012-06-12 00:00:00 -04:00
18
+ default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: hashie
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
24
  requirements:
26
- - - ~>
25
+ - - ">="
27
26
  - !ruby/object:Gem::Version
28
- hash: 19
29
27
  segments:
30
28
  - 1
31
29
  - 1
@@ -37,11 +35,9 @@ dependencies:
37
35
  name: httmultiparty
38
36
  prerelease: false
39
37
  requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
38
  requirements:
42
39
  - - ">="
43
40
  - !ruby/object:Gem::Version
44
- hash: 31
45
41
  segments:
46
42
  - 0
47
43
  - 3
@@ -53,11 +49,9 @@ dependencies:
53
49
  name: httparty
54
50
  prerelease: false
55
51
  requirement: &id003 !ruby/object:Gem::Requirement
56
- none: false
57
52
  requirements:
58
53
  - - ">="
59
54
  - !ruby/object:Gem::Version
60
- hash: 9
61
55
  segments:
62
56
  - 0
63
57
  - 4
@@ -69,27 +63,29 @@ dependencies:
69
63
  name: multi_json
70
64
  prerelease: false
71
65
  requirement: &id004 !ruby/object:Gem::Requirement
72
- none: false
73
66
  requirements:
74
- - - ~>
67
+ - - ">="
75
68
  - !ruby/object:Gem::Version
76
- hash: 17
77
69
  segments:
78
70
  - 1
79
71
  - 0
80
72
  - 3
81
73
  version: 1.0.3
74
+ - - <
75
+ - !ruby/object:Gem::Version
76
+ segments:
77
+ - 1
78
+ - 4
79
+ version: "1.4"
82
80
  type: :runtime
83
81
  version_requirements: *id004
84
82
  - !ruby/object:Gem::Dependency
85
83
  name: json
86
84
  prerelease: false
87
85
  requirement: &id005 !ruby/object:Gem::Requirement
88
- none: false
89
86
  requirements:
90
87
  - - ">="
91
88
  - !ruby/object:Gem::Version
92
- hash: 3
93
89
  segments:
94
90
  - 0
95
91
  version: "0"
@@ -99,11 +95,9 @@ dependencies:
99
95
  name: rake
100
96
  prerelease: false
101
97
  requirement: &id006 !ruby/object:Gem::Requirement
102
- none: false
103
98
  requirements:
104
99
  - - ">="
105
100
  - !ruby/object:Gem::Version
106
- hash: 3
107
101
  segments:
108
102
  - 0
109
103
  version: "0"
@@ -113,11 +107,9 @@ dependencies:
113
107
  name: rspec
114
108
  prerelease: false
115
109
  requirement: &id007 !ruby/object:Gem::Requirement
116
- none: false
117
110
  requirements:
118
111
  - - ">="
119
112
  - !ruby/object:Gem::Version
120
- hash: 3
121
113
  segments:
122
114
  - 0
123
115
  version: "0"
@@ -167,24 +159,14 @@ files:
167
159
  - lib/mogli/post.rb
168
160
  - lib/mogli/profile.rb
169
161
  - lib/mogli/status.rb
162
+ - lib/mogli/subscription.rb
170
163
  - lib/mogli/television.rb
171
164
  - lib/mogli/test_user.rb
172
165
  - lib/mogli/user.rb
173
166
  - lib/mogli/video.rb
174
167
  - lib/mogli/work.rb
175
168
  - lib/mogli.rb
176
- - spec/app_client_spec.rb
177
- - spec/authenticator_spec.rb
178
- - spec/client/client_event_spec.rb
179
- - spec/client/client_user_spec.rb
180
- - spec/client_spec.rb
181
- - spec/fetching_array_spec.rb
182
- - spec/model_spec.rb
183
- - spec/page_spec.rb
184
- - spec/profile_spec.rb
185
- - spec/spec_helper.rb
186
- - spec/test_user_spec.rb
187
- - spec/user_spec.rb
169
+ has_rdoc: true
188
170
  homepage: http://developers.facebook.com/docs/api
189
171
  licenses: []
190
172
 
@@ -194,27 +176,23 @@ rdoc_options: []
194
176
  require_paths:
195
177
  - lib
196
178
  required_ruby_version: !ruby/object:Gem::Requirement
197
- none: false
198
179
  requirements:
199
180
  - - ">="
200
181
  - !ruby/object:Gem::Version
201
- hash: 3
202
182
  segments:
203
183
  - 0
204
184
  version: "0"
205
185
  required_rubygems_version: !ruby/object:Gem::Requirement
206
- none: false
207
186
  requirements:
208
187
  - - ">="
209
188
  - !ruby/object:Gem::Version
210
- hash: 3
211
189
  segments:
212
190
  - 0
213
191
  version: "0"
214
192
  requirements: []
215
193
 
216
194
  rubyforge_project:
217
- rubygems_version: 1.8.8
195
+ rubygems_version: 1.3.6
218
196
  signing_key:
219
197
  specification_version: 3
220
198
  summary: Open Graph Library for Ruby