mini_fb 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 47673e1ef51af1dfe27fdefc65c2923c2ee65300
4
- data.tar.gz: 20c9ea4d481521de3a8cbc41796dcbb66ade9f29
3
+ metadata.gz: be505723cf0db6d36400587903da97d34d916c95
4
+ data.tar.gz: dc822865779c05341d3316547d57d9fbb0f48370
5
5
  SHA512:
6
- metadata.gz: 8846e74c083cd3ab2513d7efae29fcbe68f8a292f84efc9464d8bb8c8b88e9f879f096b8f83cba4f4e7a1c70d5bd24a6e393467768ba7452ad2b293704cfcdcf
7
- data.tar.gz: 0c1b39eebfa8e53877725bf6798d48bf727270b585ccae3fd9cdaccc1a7af6ea20339ee860a12f793a5ff32618b5faff1bcb6cf7e0afea051ccbd381da8d34ae
6
+ metadata.gz: a0e2e566abcaedf70de9c9b2b0c97c2dbbc6a05894174fc960ecfdd30dc06ab67f814942d107fb16dfff61562eabc7456fe18c4e086ee545efc16dd8c3b32b84
7
+ data.tar.gz: b32d26ce35a3ecb08744530a5739d0637ccc7192652c5126471f3367b285144e4cde24d11cd9eb45912052b594807589d738fd7b616090f671065b494c16ab85
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  pkg
2
2
  .idea
3
3
  mini_fb_tests.yml
4
+ *.gem
data/Gemfile CHANGED
@@ -2,4 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'rspec'
5
+ gem 'jeweler2'
6
+ gem 'rspec', '~> 2.11.0'
7
+ gem 'rake'
8
+ gem 'activesupport'
data/Gemfile.lock CHANGED
@@ -1,30 +1,44 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mini_fb (2.1.0)
4
+ mini_fb (2.0.0)
5
5
  hashie
6
- rest_client
6
+ hashie
7
+ rest-client
8
+ rest-client
7
9
 
8
10
  GEM
9
11
  remote: https://rubygems.org/
10
12
  specs:
11
- diff-lcs (1.2.5)
12
- hashie (2.0.5)
13
- netrc (0.7.7)
14
- rest_client (1.7.3)
15
- netrc (~> 0.7.7)
16
- rspec (2.14.1)
17
- rspec-core (~> 2.14.0)
18
- rspec-expectations (~> 2.14.0)
19
- rspec-mocks (~> 2.14.0)
20
- rspec-core (2.14.8)
21
- rspec-expectations (2.14.5)
22
- diff-lcs (>= 1.1.3, < 2.0)
23
- rspec-mocks (2.14.6)
13
+ activesupport (3.2.12)
14
+ i18n (~> 0.6)
15
+ multi_json (~> 1.0)
16
+ diff-lcs (1.1.3)
17
+ git (1.2.5)
18
+ hashie (2.0.2)
19
+ i18n (0.6.4)
20
+ jeweler2 (2.0.9)
21
+ git (>= 1.2.5)
22
+ mime-types (1.21)
23
+ multi_json (1.6.1)
24
+ rake (10.0.3)
25
+ rest-client (1.6.7)
26
+ mime-types (>= 1.16)
27
+ rspec (2.11.0)
28
+ rspec-core (~> 2.11.0)
29
+ rspec-expectations (~> 2.11.0)
30
+ rspec-mocks (~> 2.11.0)
31
+ rspec-core (2.11.1)
32
+ rspec-expectations (2.11.3)
33
+ diff-lcs (~> 1.1.3)
34
+ rspec-mocks (2.11.2)
24
35
 
25
36
  PLATFORMS
26
37
  ruby
27
38
 
28
39
  DEPENDENCIES
40
+ activesupport
41
+ jeweler2
29
42
  mini_fb!
30
- rspec
43
+ rake
44
+ rspec (~> 2.11.0)
data/lib/mini_fb.rb CHANGED
@@ -14,12 +14,11 @@
14
14
  require 'digest/md5'
15
15
  require 'erb'
16
16
  require 'json' unless defined? JSON
17
- require 'rest_client'
17
+ require 'httpclient'
18
18
  require 'hashie'
19
19
  require 'base64'
20
20
  require 'openssl'
21
21
  require 'logger'
22
- require_relative 'version'
23
22
 
24
23
  module MiniFB
25
24
 
@@ -29,6 +28,8 @@ module MiniFB
29
28
 
30
29
  @@logging = false
31
30
  @@log = Logger.new(STDOUT)
31
+ @@http = HTTPClient.new
32
+
32
33
 
33
34
  def self.log_level=(level)
34
35
  if level.is_a? Numeric
@@ -318,7 +319,7 @@ module MiniFB
318
319
  def self.verify_signed_request(secret, req)
319
320
  s, p = req.split(".")
320
321
  sig = base64_url_decode(s)
321
- expected_sig = OpenSSL::HMAC.digest('SHA256', secret, p.tr("-_", "+/"))
322
+ expected_sig = OpenSSL::HMAC.digest('SHA256', secret, p)
322
323
  return sig == expected_sig
323
324
  end
324
325
 
@@ -508,7 +509,7 @@ module MiniFB
508
509
  oauth_url << "&redirect_uri=#{CGI.escape(redirect_uri)}"
509
510
  oauth_url << "&client_secret=#{secret}"
510
511
  oauth_url << "&code=#{CGI.escape(code)}"
511
- resp = RestClient.get oauth_url
512
+ resp = @@http.get oauth_url
512
513
  puts 'resp=' + resp.body.to_s if @@logging
513
514
  params = {}
514
515
  params_array = resp.split("&")
@@ -526,7 +527,7 @@ module MiniFB
526
527
  oauth_url << "&client_secret=#{secret}"
527
528
  oauth_url << "&grant_type=fb_exchange_token"
528
529
  oauth_url << "&fb_exchange_token=#{CGI.escape(access_token)}"
529
- resp = RestClient.get oauth_url
530
+ resp = @@http.get oauth_url
530
531
  puts 'resp=' + resp.body.to_s if @@logging
531
532
  params = {}
532
533
  params_array = resp.split("&")
@@ -557,13 +558,12 @@ module MiniFB
557
558
  params["type"] = "client_cred"
558
559
  params["client_id"] = "#{app_id}"
559
560
  params["client_secret"] = "#{secret}"
560
- # resp = RestClient.get url
561
561
  options = {}
562
562
  options[:params] = params
563
563
  options[:method] = :get
564
564
  options[:response_type] = :params
565
565
  resp = fetch(url, options)
566
- puts 'resp=' + resp if @@logging
566
+ puts 'resp=' + resp.to_s if @@logging
567
567
  resp
568
568
  end
569
569
 
@@ -583,6 +583,28 @@ module MiniFB
583
583
  return fetch(url, options)
584
584
  end
585
585
 
586
+ # Gets multiple data from the Facebook Graph API
587
+ # options:
588
+ # - type: eg: feed, home, etc
589
+ # - metadata: to include metadata in response. true/false
590
+ # - params: Any additional parameters you would like to submit
591
+ # Example:
592
+ #
593
+ # MiniFB.multiget(access_token, [123, 234])
594
+ #
595
+ # Can throw a connection Timeout if there is too many items
596
+ def self.multiget(access_token, ids, options={})
597
+ url = "#{graph_base}"
598
+ url << "#{options[:type]}" if options[:type]
599
+ params = options[:params] || {}
600
+ params["ids"] = ids.join(',')
601
+ params["access_token"] = "#{(access_token)}"
602
+ params["metadata"] = "1" if options[:metadata]
603
+ params["fields"] = options[:fields].join(",") if options[:fields]
604
+ options[:params] = params
605
+ return fetch(url, options)
606
+ end
607
+
586
608
  # Posts data to the Facebook Graph API
587
609
  # options:
588
610
  # - type: eg: feed, home, etc
@@ -608,6 +630,31 @@ module MiniFB
608
630
 
609
631
  end
610
632
 
633
+ # Sends a DELETE request to the Facebook Graph API
634
+ # options:
635
+ # - type: eg: feed, home, etc
636
+ # - metadata: to include metadata in response. true/false
637
+ # - params: Any additional parameters you would like to submit
638
+ def self.delete(access_token, ids, options={})
639
+ url = "#{graph_base}"
640
+ params = options[:params] || {}
641
+ if ids.is_a?(Array)
642
+ params["ids"] = ids.join(',')
643
+ else
644
+ url << "#{ids}"
645
+ end
646
+ url << "/#{options[:type]}" if options[:type]
647
+ options.delete(:type)
648
+ options.each do |key, value|
649
+ params[key] = "#{value}"
650
+ end
651
+ params["access_token"] = "#{(access_token)}"
652
+ options[:params] = params
653
+ options[:method] = :delete
654
+ return fetch(url, options)
655
+
656
+ end
657
+
611
658
  # Executes an FQL query
612
659
  def self.fql(access_token, fql_query, options={})
613
660
  url = "https://api.facebook.com/method/fql.query"
@@ -651,18 +698,27 @@ module MiniFB
651
698
  def self.fetch(url, options={})
652
699
 
653
700
  begin
654
- if options[:method] == :post
701
+ case options[:method]
702
+ when :post
655
703
  @@log.debug 'url_post=' + url if @@logging
656
- resp = RestClient.post url, options[:params]
704
+ response = @@http.post url, options[:params]
705
+ when :delete
706
+ if options[:params] && options[:params].size > 0
707
+ url += '?' + options[:params].map { |k, v| CGI.escape(k.to_s) + '=' + CGI.escape(v.to_s) }.join('&')
708
+ end
709
+ @@log.debug 'url_delete=' + url if @@logging
710
+ response = @@http.delete url
657
711
  else
658
712
  if options[:params] && options[:params].size > 0
659
713
  url += '?' + options[:params].map { |k, v| CGI.escape(k.to_s) + '=' + CGI.escape(v.to_s) }.join('&')
660
714
  end
661
715
  @@log.debug 'url_get=' + url if @@logging
662
- resp = RestClient.get url
716
+ response = @@http.get url
663
717
  end
664
718
 
665
- @@log.debug 'resp=' + resp.to_s if @@log.debug?
719
+ resp = response.body
720
+ @@log.debug 'Response = ' + resp if @@logging
721
+ @@log.debug 'API Version =' + resp.headers["Facebook-API-Version"].to_s if @@logging
666
722
 
667
723
  if options[:response_type] == :params
668
724
  # Some methods return a param like string, for example: access_token=11935261234123|rW9JMxbN65v_pFWQl5LmHHABC
@@ -694,11 +750,11 @@ module MiniFB
694
750
  end
695
751
 
696
752
  return res_hash
697
- rescue RestClient::Exception => ex
698
- puts "ex.http_code=" + ex.http_code.to_s if @@logging
699
- puts 'ex.http_body=' + ex.http_body if @@logging
700
- res_hash = JSON.parse(ex.http_body) # probably should ensure it has a good response
701
- raise MiniFB::FaceBookError.new(ex.http_code, "#{res_hash["error"]["type"]}: #{res_hash["error"]["message"]}")
753
+ rescue Exception => ex
754
+ puts "ex.http_code=" + response.status if @@logging
755
+ puts 'ex.http_body=' + resp if @@logging
756
+ res_hash = JSON.parse(resp) # probably should ensure it has a good response
757
+ raise MiniFB::FaceBookError.new(response.status, "#{res_hash["error"]["type"]}: #{res_hash["error"]["message"]}")
702
758
  end
703
759
 
704
760
  end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module MiniFB
2
- VERSION = "2.1.0"
2
+ VERSION = "2.2.0"
3
3
  end
data/mini_fb.gemspec CHANGED
@@ -3,8 +3,8 @@ require File.expand_path('../lib/version', __FILE__)
3
3
  Gem::Specification.new do |gem|
4
4
  gem.authors = ["Travis Reeder"]
5
5
  gem.email = ["travis@appoxy.com"]
6
- gem.description = "Tiny facebook library by Appoxy.com"
7
- gem.summary = "Tiny facebook library by Appoxy.com"
6
+ gem.description = "Tiny facebook library. By http://www.appoxy.com"
7
+ gem.summary = "Tiny facebook library. By http://www.appoxy.com"
8
8
  gem.homepage = "http://github.com/appoxy/mini_fb/"
9
9
 
10
10
  gem.files = `git ls-files`.split($\)
@@ -15,8 +15,7 @@ Gem::Specification.new do |gem|
15
15
  gem.version = MiniFB::VERSION
16
16
 
17
17
  gem.required_rubygems_version = ">= 1.3.6"
18
- gem.required_ruby_version = Gem::Requirement.new(">= 1.9")
19
- gem.add_runtime_dependency "rest_client", ">= 0"
18
+ gem.required_ruby_version = Gem::Requirement.new(">= 1.8")
19
+ gem.add_runtime_dependency "httpclient", ">= 0"
20
20
  gem.add_runtime_dependency "hashie", ">= 0"
21
-
22
21
  end
metadata CHANGED
@@ -1,52 +1,52 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_fb
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Travis Reeder
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-01 00:00:00.000000000 Z
11
+ date: 2016-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rest_client
14
+ name: httpclient
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: hashie
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- description: Tiny facebook library by Appoxy.com
41
+ description: Tiny facebook library. By http://www.appoxy.com
42
42
  email:
43
43
  - travis@appoxy.com
44
44
  executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
- - .gitignore
49
- - .rvmrc
48
+ - ".gitignore"
49
+ - ".rvmrc"
50
50
  - Gemfile
51
51
  - Gemfile.lock
52
52
  - LICENSE.txt
@@ -65,19 +65,19 @@ require_paths:
65
65
  - lib
66
66
  required_ruby_version: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - '>='
68
+ - - ">="
69
69
  - !ruby/object:Gem::Version
70
- version: '1.9'
70
+ version: '1.8'
71
71
  required_rubygems_version: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: 1.3.6
76
76
  requirements: []
77
77
  rubyforge_project:
78
- rubygems_version: 2.2.2
78
+ rubygems_version: 2.4.8
79
79
  signing_key:
80
80
  specification_version: 4
81
- summary: Tiny facebook library by Appoxy.com
81
+ summary: Tiny facebook library. By http://www.appoxy.com
82
82
  test_files:
83
83
  - spec/mini_fb_spec.rb