mini_fb 1.0.5 → 1.0.6

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.
Files changed (2) hide show
  1. data/lib/mini_fb.rb +68 -46
  2. metadata +4 -4
data/lib/mini_fb.rb CHANGED
@@ -36,9 +36,9 @@ module MiniFB
36
36
  class FaceBookError < StandardError
37
37
  attr_accessor :code
38
38
  # Error that happens during a facebook call.
39
- def initialize( error_code, error_msg )
39
+ def initialize(error_code, error_msg)
40
40
  @code = error_code
41
- super("Facebook error #{error_code}: #{error_msg}" )
41
+ super("Facebook error #{error_code}: #{error_msg}")
42
42
  end
43
43
  end
44
44
 
@@ -152,7 +152,7 @@ module MiniFB
152
152
 
153
153
  # The secret argument should be an instance of FacebookSecret
154
154
  # to hide value from simple introspection.
155
- def MiniFB.call( api_key, secret, method, kwargs )
155
+ def MiniFB.call(api_key, secret, method, kwargs)
156
156
 
157
157
  puts 'kwargs=' + kwargs.inspect if @@logging
158
158
 
@@ -185,7 +185,7 @@ module MiniFB
185
185
  else
186
186
 
187
187
  begin
188
- response = Net::HTTP.post_form( URI.parse(FB_URL), post_params(kwargs))
188
+ response = Net::HTTP.post_form(URI.parse(FB_URL), post_params(kwargs))
189
189
  rescue SocketError => err
190
190
  # why are we catching this and throwing as different error? hmmm..
191
191
  # raise IOError.new( "Cannot connect to the facebook server: " + err )
@@ -200,9 +200,9 @@ module MiniFB
200
200
 
201
201
  puts 'response=' + body.inspect if @@logging
202
202
  begin
203
- data = JSON.parse( body )
204
- if data.include?( "error_msg" )
205
- raise FaceBookError.new( data["error_code"] || 1, data["error_msg"] )
203
+ data = JSON.parse(body)
204
+ if data.include?("error_msg")
205
+ raise FaceBookError.new(data["error_code"] || 1, data["error_msg"])
206
206
  end
207
207
 
208
208
  rescue JSON::ParserError => ex
@@ -242,12 +242,12 @@ module MiniFB
242
242
 
243
243
  # Call Facebook with POST multipart/form-data request
244
244
  uri = URI.parse(FB_URL)
245
- Net::HTTP.start(uri.host) {|http| http.post uri.path, query, header}
245
+ Net::HTTP.start(uri.host) { |http| http.post uri.path, query, header }
246
246
  end
247
247
 
248
248
  # Returns true is signature is valid, false otherwise.
249
- def MiniFB.verify_signature( secret, arguments )
250
- signature = arguments.delete( "fb_sig" )
249
+ def MiniFB.verify_signature(secret, arguments)
250
+ signature = arguments.delete("fb_sig")
251
251
  return false if signature.nil?
252
252
 
253
253
  unsigned = Hash.new
@@ -263,12 +263,12 @@ module MiniFB
263
263
 
264
264
  arg_string = String.new
265
265
  signed.sort.each { |kv| arg_string << kv[0] << "=" << kv[1] }
266
- if Digest::MD5.hexdigest( arg_string + secret ) == signature
266
+ if Digest::MD5.hexdigest(arg_string + secret) == signature
267
267
  return true
268
268
  end
269
269
  return false
270
270
  end
271
-
271
+
272
272
  # Parses cookies in order to extract the facebook cookie and parse it into a useable hash
273
273
  #
274
274
  # options:
@@ -276,8 +276,8 @@ module MiniFB
276
276
  # * secret - the connect application secret
277
277
  # * cookies - the cookies given by facebook - it is ok to just pass all of the cookies, the method will do the filtering for you.
278
278
  def MiniFB.parse_cookie_information(app_id, cookies)
279
- return nil if cookies["fbs_#{app_id}"].nil?
280
- Hash[*cookies["fbs_#{app_id}"].split('&').map{|v| v.gsub('"', '').split('=', 2) }.flatten]
279
+ return nil if cookies["fbs_#{app_id}"].nil?
280
+ Hash[*cookies["fbs_#{app_id}"].split('&').map { |v| v.gsub('"', '').split('=', 2) }.flatten]
281
281
  end
282
282
 
283
283
  # Validates that the cookies sent by the user are those that were set by facebook. Since your
@@ -288,17 +288,17 @@ module MiniFB
288
288
  # * secret - the connect application secret
289
289
  # * cookies - the cookies given by facebook - it is ok to just pass all of the cookies, the method will do the filtering for you.
290
290
  def MiniFB.verify_cookie_signature(app_id, secret, cookies)
291
- fb_keys = MiniFB.parse_cookie_information(app_id, cookies)
292
- return false if fb_keys.nil?
293
-
294
- signature = fb_keys.delete('sig')
295
- return signature == Digest::MD5.hexdigest(fb_keys.map{|k,v| "#{k}=#{v}"}.sort.join + secret)
291
+ fb_keys = MiniFB.parse_cookie_information(app_id, cookies)
292
+ return false if fb_keys.nil?
293
+
294
+ signature = fb_keys.delete('sig')
295
+ return signature == Digest::MD5.hexdigest(fb_keys.map { |k, v| "#{k}=#{v}" }.sort.join + secret)
296
296
  end
297
-
297
+
298
298
  # <b>DEPRECATED:</b> Please use <tt>verify_cookie_signature</tt> instead.
299
299
  def MiniFB.verify_connect_signature(api_key, secret, cookies)
300
- warn "DEPRECATION WARNING: 'verify_connect_signature' has been renamed to 'verify_cookie_signature' as Facebook no longer calls this 'connect'"
301
- MiniFB.verify_cookie_signature(api_key, secret, cookies)
300
+ warn "DEPRECATION WARNING: 'verify_connect_signature' has been renamed to 'verify_cookie_signature' as Facebook no longer calls this 'connect'"
301
+ MiniFB.verify_cookie_signature(api_key, secret, cookies)
302
302
  end
303
303
 
304
304
  # Returns the login/add app url for your application.
@@ -324,7 +324,7 @@ module MiniFB
324
324
  oauth_url << "?client_id=#{app_id}"
325
325
  oauth_url << "&redirect_uri=#{URI.escape(redirect_uri)}"
326
326
  # oauth_url << "&scope=#{options[:scope]}" if options[:scope]
327
- oauth_url << ("&" + options.each.map { |k,v| "%s=%s" % [k, v] }.join('&')) unless options.empty?
327
+ oauth_url << ("&" + options.map { |k, v| "%s=%s" % [k, v] }.join('&')) unless options.empty?
328
328
  oauth_url
329
329
  end
330
330
 
@@ -357,7 +357,8 @@ module MiniFB
357
357
  params = options[:params] || {}
358
358
  params["access_token"] = "#{(access_token)}"
359
359
  params["metadata"] = "1" if options[:metadata]
360
- return fetch(url)
360
+ options[:params] = params
361
+ return fetch(url, options)
361
362
  end
362
363
 
363
364
  # Posts data to the Facebook Graph API
@@ -368,10 +369,20 @@ module MiniFB
368
369
  def self.post(access_token, id, options={})
369
370
  url = "#{graph_base}#{id}"
370
371
  url << "/#{options[:type]}" if options[:type]
372
+ options.delete(:type)
371
373
  params = options[:params] || {}
374
+ options.each do |key, value|
375
+ if value.kind_of?(File)
376
+ params[key] = value
377
+ else
378
+ params[key] = "#{value}"
379
+ end
380
+ end
372
381
  params["access_token"] = "#{(access_token)}"
373
382
  params["metadata"] = "1" if options[:metadata]
374
- return fetch(url, :params => params, :method => :post)
383
+ options[:params] = params
384
+ options[:method] = :post
385
+ return fetch(url, options)
375
386
 
376
387
  end
377
388
 
@@ -383,45 +394,56 @@ module MiniFB
383
394
  params["metadata"] = "1" if options[:metadata]
384
395
  params["query"] = fql_query
385
396
  params["format"] = "JSON"
386
- return fetch(url, :params => params)
397
+ options[:params] = params
398
+ return fetch(url, options)
387
399
  end
388
400
 
389
401
  # Uses new Oauth 2 authentication against old Facebook REST API
402
+ # options:
403
+ # - params: Any additional parameters you would like to submit
390
404
  def self.rest(access_token, api_method, options={})
391
405
  url = "https://api.facebook.com/method/#{api_method}"
392
406
  params = options[:params] || {}
393
407
  params[:access_token] = access_token
394
408
  params[:format] = "JSON"
395
- return fetch(url, :params => params, :method => method)
409
+ options[:params] = params
410
+ return fetch(url, options)
396
411
  end
397
412
 
398
413
 
399
414
  def self.fetch(url, options={})
400
- puts 'url=' + url if @@logging
401
- begin
402
- if options[:method] == :post
415
+
416
+ begin
417
+ if options[:method] == :post
418
+ puts 'url_post=' + url if @@logging
403
419
  resp = RestClient.post url, options[:params]
404
420
  else
405
421
  if options[:params] && options[:params].size > 0
406
- url += '?' + options[:params].each.map {|k,v| URI.escape("%s=%s" % [k,v])}.join('&')
422
+ url += '?' + options[:params].map { |k, v| URI.escape("%s=%s" % [k, v]) }.join('&')
407
423
  end
424
+ puts 'url_get=' + url if @@logging
408
425
  resp = RestClient.get url
409
426
  end
410
-
427
+
411
428
  puts 'resp=' + resp.body.to_s if @@logging
412
-
413
- begin
414
- res_hash = JSON.parse(resp.body)
429
+
430
+ begin
431
+ res_hash = JSON.parse(resp.body)
415
432
  rescue
416
- # quick fix for things like stream.publish that don't return json
417
- res_hash = JSON.parse("{\"response\": #{resp.body.to_s}}")
418
- end
419
-
420
- if res_hash.is_a? Array # fql return this
421
- res_hash.collect! {|x| Hashie::Mash.new(x) }
433
+ # quick fix for things like stream.publish that don't return json
434
+ res_hash = JSON.parse("{\"response\": #{resp.body.to_s}}")
435
+ end
436
+
437
+ if res_hash.is_a? Array # fql return this
438
+ res_hash.collect! { |x| Hashie::Mash.new(x) }
422
439
  else
423
440
  res_hash = Hashie::Mash.new(res_hash)
424
441
  end
442
+
443
+ if res_hash.include?("error_msg")
444
+ raise FaceBookError.new(res_hash["error_code"] || 1, res_hash["error_msg"])
445
+ end
446
+
425
447
  return res_hash
426
448
  rescue RestClient::Exception => ex
427
449
  puts ex.http_code.to_s
@@ -439,7 +461,7 @@ module MiniFB
439
461
  "interests", "likes",
440
462
  "location", "notes", "online_presence", "photo_video_tags", "photos", "relationships",
441
463
  "religion_politics", "status", "videos", "website", "work_history"]
442
- scope_names.each { |x| all_scopes << "user_" + x; all_scopes << "friends_" + x}
464
+ scope_names.each { |x| all_scopes << "user_" + x; all_scopes << "friends_" + x }
443
465
  all_scopes << "read_friendlists"
444
466
  all_scopes << "read_stream"
445
467
  all_scopes << "publish_stream"
@@ -464,9 +486,9 @@ module MiniFB
464
486
  # to hide value from simple introspection.
465
487
  #
466
488
  # DEPRECATED, use verify_signature instead
467
- def MiniFB.validate( secret, arguments )
489
+ def MiniFB.validate(secret, arguments)
468
490
 
469
- signature = arguments.delete( "fb_sig" )
491
+ signature = arguments.delete("fb_sig")
470
492
  return arguments if signature.nil?
471
493
 
472
494
  unsigned = Hash.new
@@ -482,7 +504,7 @@ module MiniFB
482
504
 
483
505
  arg_string = String.new
484
506
  signed.sort.each { |kv| arg_string << kv[0] << "=" << kv[1] }
485
- if Digest::MD5.hexdigest( arg_string + secret ) != signature
507
+ if Digest::MD5.hexdigest(arg_string + secret) != signature
486
508
  unsigned # Hash is incorrect, return only unsigned fields.
487
509
  else
488
510
  unsigned.merge signed
@@ -494,7 +516,7 @@ module MiniFB
494
516
  # Proc cannot be dumped or introspected by normal tools.
495
517
  attr_reader :value
496
518
 
497
- def initialize( value )
519
+ def initialize(value)
498
520
  @value = Proc.new { value }
499
521
  end
500
522
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_fb
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 5
10
- version: 1.0.5
9
+ - 6
10
+ version: 1.0.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Travis Reeder
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-06-13 00:00:00 -07:00
19
+ date: 2010-06-25 00:00:00 -07:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency