fb_graph2 0.0.0

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dc282842ac8e4f9c5d5c23370f1d24c1081a314d
4
+ data.tar.gz: 9a7ad863eda44a83f1daf55d2b27a9fc2a44a4ae
5
+ SHA512:
6
+ metadata.gz: 6ac13ec30238246300656403271e17e34e79f493d958a8279cad910ab145983423693fad330c5b283d0cb837bd859d29327b381b2084df7d5776b4086deade6b
7
+ data.tar.gz: 44a5171f50873c25513a1ada57e250b60f1e4ac5f6b0d8d220ecb617f6b848bedb71ffb1a68f8ed4fda7ccf375bfb873318e5ca0e8f7429999c86d0347caf63c
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in fb_graph2.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 nov matake
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # FbGraph2
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'fb_graph2'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install fb_graph2
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it ( https://github.com/[my-github-username]/fb_graph2/fork )
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,18 @@
1
+ require 'bundler/gem_tasks'
2
+
3
+ require 'rspec/core/rake_task'
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ namespace :coverage do
7
+ desc 'Open coverage report'
8
+ task :report do
9
+ require 'simplecov'
10
+ `open '#{File.join SimpleCov.coverage_path, 'index.html'}'`
11
+ end
12
+ end
13
+
14
+ task :spec do
15
+ Rake::Task[:'coverage:report'].invoke unless ENV['TRAVIS_RUBY_VERSION']
16
+ end
17
+
18
+ task :default => :spec
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.0
data/fb_graph2.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ Gem::Specification.new do |gem|
2
+ gem.name = 'fb_graph2'
3
+ gem.version = File.read('VERSION').delete("\n\r")
4
+ gem.authors = ['nov matake']
5
+ gem.email = ['nov@matake.jp']
6
+ gem.summary = %q{Facebook Graph API v2.0 Wrapper in Ruby}
7
+ gem.description = %q{Facebook Graph API v2.0 Wrapper in Ruby}
8
+ gem.homepage = ''
9
+ gem.license = 'MIT'
10
+
11
+ gem.files = `git ls-files -z`.split("\x0")
12
+ gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|gem|features)/})
14
+ gem.require_paths = ['lib']
15
+
16
+ gem.add_runtime_dependency 'httpclient', '>= 2.3'
17
+ gem.add_runtime_dependency 'rack-oauth2', '>= 1.0'
18
+ gem.add_runtime_dependency 'multi_json'
19
+ gem.add_runtime_dependency 'activesupport', '>= 4.0'
20
+ gem.add_development_dependency 'rake'
21
+ gem.add_development_dependency 'simplecov'
22
+ gem.add_development_dependency 'rspec', '>= 2'
23
+ end
@@ -0,0 +1,27 @@
1
+ module FbGraph2
2
+ class Application < Node
3
+ register_attributes(
4
+ raw: [
5
+ :id, :android_key_hash, :app_domains, :auth_dialog_data_help_url, :auth_dialog_headline,
6
+ :auth_dialog_perms_explanation, :auth_referral_enabled, :auth_referral_extended_perms,
7
+ :auth_referral_friend_perms, :auth_referral_user_perms, :canvas_fluid_height, :canvas_fluid_width,
8
+ :canvas_url, :category, :company, :contact_email, :creator_uid, :daily_active_users, :daily_active_users_rank,
9
+ :deauth_callback_url, :description, :hosting_url, :icon_url, :ios_bundle_id, :iphone_app_store_id,
10
+ :link, :logo_url, :mobile_web_url, :monthly_active_users, :monthly_active_users_rank, :name,
11
+ :namespace, :page_tab_default_name, :page_tab_url, :privacy_policy_url, :secure_canvas_url,
12
+ :secure_page_tab_url, :server_ip_whitelist, :social_discovery, :subcategory, :terms_of_service_url,
13
+ :user_support_email, :user_support_url, :website_url, :weekly_active_users
14
+ ],
15
+ timestamp: [:created_time],
16
+ custom: [
17
+ :auth_referral_default_activity_privacy, :auth_referral_response_type, :context, :migrations,
18
+ :object_store_urls, :restrictions
19
+ ]
20
+ )
21
+
22
+ def initialize(id, attributes = {})
23
+ super
24
+ # TODO: handle custom attributes.
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,72 @@
1
+ module FbGraph2
2
+ module AttributeAssigner
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ extend ClassMethods
7
+ attr_accessor :raw_attributes
8
+ cattr_accessor :registered_attributes
9
+ end
10
+
11
+ module ClassMethods
12
+ def register_attributes(attributes)
13
+ self.registered_attributes = attributes
14
+ send :attr_accessor, *attributes.values.flatten
15
+ end
16
+ end
17
+
18
+ def assign(attributes)
19
+ self.raw_attributes = attributes
20
+ self.class.registered_attributes.each do |type, keys|
21
+ keys.each do |key|
22
+ raw = attributes[key]
23
+ if raw.present?
24
+ value = case type
25
+ when :raw
26
+ raw
27
+ when :date
28
+ Date.parse raw
29
+ when :time
30
+ Time.parse raw
31
+ when :timestamp
32
+ Time.at raw
33
+ when :application
34
+ Application.new raw[:id], raw
35
+ when :page
36
+ Page.new raw[:id], raw
37
+ when :pages
38
+ Collection.new(raw).collect do |_raw_|
39
+ Page.new _raw_[:id], _raw_
40
+ end
41
+ when :profile
42
+ as_profile raw
43
+ when :profiles
44
+ Collection.new(raw).collect do |_raw_|
45
+ as_profile _raw_
46
+ end
47
+ when :user
48
+ User.new raw[:id], raw
49
+ when :custom
50
+ # NOTE: handle custom attributes in each class
51
+ end
52
+ self.send :"#{key}=", value
53
+ end
54
+ end
55
+ end
56
+ end
57
+
58
+ private
59
+
60
+ def as_profile(raw)
61
+ klass = if raw.include?(:namespace)
62
+ Application
63
+ elsif raw.include?(:category)
64
+ Page
65
+ else
66
+ # TODO: needs to handle Event and Group here.
67
+ User
68
+ end
69
+ klass.new raw[:id], raw
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,20 @@
1
+ module FbGraph2
2
+ class Collection < Array
3
+ attr_reader :previous, :next, :total_count, :unread_count, :updated_time, :cursors
4
+
5
+ def initialize(collection = nil)
6
+ collection = case collection
7
+ when Hash
8
+ collection
9
+ when Array
10
+ {
11
+ data: collection,
12
+ count: collection.size
13
+ }
14
+ else
15
+ raise ArgumentError.new("Invalid collection")
16
+ end
17
+ replace Array(collection[:data])
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,12 @@
1
+ module FbGraph2
2
+ class Edge
3
+ module Accounts
4
+ def accounts(params = {})
5
+ pages = self.edge :accounts, params
6
+ pages.collect do |page|
7
+ Page.new(page[:id], page).authenticate page[:access_token]
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module FbGraph2
2
+ class Edge
3
+ module Feed
4
+ def feed(params = {})
5
+ posts = self.edge :feed, params
6
+ posts.collect do |post|
7
+ Post.new(post[:id], post).authenticate self.access_token
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module FbGraph2
2
+ class Edge
3
+ module Friends
4
+ def friends(params = {})
5
+ users = self.edge :friends, params
6
+ users.collect do |user|
7
+ User.new(user[:id], user).authenticate self.access_token
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,18 @@
1
+ module FbGraph2
2
+ class Edge < Collection
3
+ attr_accessor :owner, :edge, :params, :options, :collection
4
+
5
+ def initialize(owner, edge, params = {}, options = {})
6
+ self.owner = owner
7
+ self.edge = edge
8
+ self.params = params
9
+ self.options = options
10
+ self.collection = options.delete(:collection) || Collection.new
11
+ replace collection
12
+ end
13
+ end
14
+ end
15
+
16
+ Dir[File.join(__dir__, 'edge/*.rb')].each do |file|
17
+ require file
18
+ end
@@ -0,0 +1,83 @@
1
+ module FbGraph2
2
+ class Node
3
+ attr_accessor :id, :access_token, :raw_attributes
4
+
5
+ def self.inherited(klass)
6
+ klass.include AttributeAssigner
7
+ end
8
+
9
+ def initialize(id, attributes = {})
10
+ self.id = id
11
+ assign attributes if respond_to?(:assign)
12
+ end
13
+
14
+ def authenticate(access_token)
15
+ self.access_token = access_token
16
+ self
17
+ end
18
+
19
+ def fetch(params = {})
20
+ attributes = get params
21
+ self.class.new(attributes[:id], attributes).authenticate access_token
22
+ end
23
+
24
+ def self.fetch(identifier, params = {})
25
+ new(identifier).fetch params
26
+ end
27
+
28
+ def edge(edge, params = {}, options = {})
29
+ Edge.new(
30
+ self,
31
+ edge,
32
+ params,
33
+ options.merge(
34
+ collection: edge_for(edge, params, options)
35
+ )
36
+ )
37
+ end
38
+
39
+ protected
40
+
41
+ def http_client
42
+ FbGraph2.http_client(access_token)
43
+ end
44
+
45
+ def get(params = {}, options = {})
46
+ handle_response do
47
+ http_client.get build_endpoint(options), build_params(params)
48
+ end
49
+ end
50
+
51
+ private
52
+
53
+ def edge_for(edge, params = {}, options = {})
54
+ collection = get params, options.merge(:edge => edge)
55
+ Collection.new collection
56
+ end
57
+
58
+ def build_endpoint(options = {})
59
+ File.join [
60
+ File.join(FbGraph2.root_url, id.to_s),
61
+ options[:edge],
62
+ options[:edge_scope]
63
+ ].compact.collect(&:to_s)
64
+ end
65
+
66
+ def build_params(params = {})
67
+ params.present? ? params : nil
68
+ end
69
+
70
+ def handle_response
71
+ response = yield
72
+ _response_ = MultiJson.load(response.body).with_indifferent_access
73
+ case response.status
74
+ when 200...300
75
+ _response_
76
+ else
77
+ raise response.body
78
+ end
79
+ rescue MultiJson::DecodeError
80
+ raise Exception.new(response.status, "Unparsable Response: #{response.body}")
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,25 @@
1
+ module FbGraph2
2
+ class Page < Node
3
+ register_attributes(
4
+ raw: [
5
+ :about, :attire, :band_members, :booking_agent, :can_post, :category, :checkins, :company_overview,
6
+ :current_location, :description, :directed_by, :founded, :general_info, :general_manager, :hometown,
7
+ :is_permanently_closed, :is_published, :is_unclaimed, :likes, :link, :mission, :name, :phone, :press_contact,
8
+ :products, :talking_about_count, :username, :website, :were_here_count,
9
+ # only within /:user_id/accounts context
10
+ :perms
11
+ ],
12
+ date: [:birthday],
13
+ page: [:best_page],
14
+ custom: [
15
+ :category_list, :cover, :context, :hours, :location, :parking, :price_range, :restaurant_services,
16
+ :restaurant_specialties
17
+ ]
18
+ )
19
+
20
+ def initialize(id, attributes = {})
21
+ super
22
+ # TODO: handle custom attributes.
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,23 @@
1
+ module FbGraph2
2
+ class Post < Node
3
+ register_attributes(
4
+ raw: [
5
+ :caption, :description, :icon, :is_hidden, :link, :message, :name, :object_id, :picture,
6
+ :source, :story
7
+ ],
8
+ time: [:created_time, :updated_time],
9
+ application: [:application],
10
+ page: [:place],
11
+ profile: [:from],
12
+ profiles: [:to, :with_tags],
13
+ custom: [
14
+ :actions, :message_tags, :privacy, :properties, :shares, :status_type, :type
15
+ ]
16
+ )
17
+
18
+ def initialize(id, attributes = {})
19
+ super
20
+ # TODO: handle custom attributes.
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,17 @@
1
+ module FbGraph2
2
+ module RequestFilter
3
+ class Authenticator < Rack::OAuth2::AccessToken::Authenticator
4
+ def initialize(access_token)
5
+ _access_token_ = case access_token
6
+ when Rack::OAuth2::AccessToken
7
+ access_token
8
+ else
9
+ Rack::OAuth2::AccessToken::Bearer.new(
10
+ access_token: access_token
11
+ )
12
+ end
13
+ super _access_token_
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ module FbGraph2
2
+ module RequestFilter
3
+ class Debugger
4
+ def filter_request(request)
5
+ started = "======= [FbGraph2] API REQUEST STARTED ======="
6
+ log started, request.dump
7
+ end
8
+
9
+ def filter_response(request, response)
10
+ finished = "======= [FbGraph2] API REQUEST FINISHED ======="
11
+ log '-' * 50, response.dump, finished
12
+ end
13
+
14
+ private
15
+
16
+ def log(*outputs)
17
+ outputs.each do |output|
18
+ FbGraph2.logger.info output
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,30 @@
1
+ module FbGraph2
2
+ class User < Node
3
+ include Edge::Accounts
4
+ include Edge::Friends
5
+ include Edge::Feed
6
+
7
+ register_attributes(
8
+ raw: [
9
+ :about, :bio, :email, :first_name, :gender, :installed, :is_verified, :link, :locale,
10
+ :middle_name, :name, :name_format, :political, :quotes, :relationship_status, :religion,
11
+ :timezone, :third_party_id, :verified, :website
12
+ ],
13
+ time: [:updated_time], # NOTE: undocumented attribute
14
+ date: [:birthday],
15
+ page: [:hometown, :location],
16
+ pages: [:favorite_athletes, :favorite_teams, :inspirational_people, :languages],
17
+ user: [:significant_other],
18
+ custom: [:age_range, :context, :cover, :currency, :education, :work]
19
+ )
20
+
21
+ def initialize(id, attributes = {})
22
+ super
23
+ # TODO: handle custom attributes.
24
+ end
25
+
26
+ def self.me(access_token)
27
+ new(:me).authenticate access_token
28
+ end
29
+ end
30
+ end
data/lib/fb_graph2.rb ADDED
@@ -0,0 +1,55 @@
1
+ require 'active_support/all'
2
+ require 'rack/oauth2'
3
+
4
+ module FbGraph2
5
+ cattr_accessor :api_version, :gem_version, :logger, :debugging, :_http_config_
6
+
7
+ self.api_version = 'v2.0'
8
+ self.gem_version = File.read(File.join(__dir__, '../VERSION')).delete("\n\r")
9
+ self.logger = Logger.new(STDOUT)
10
+ self.logger.progname = 'FbGraph2'
11
+
12
+ class << self
13
+ def root_url
14
+ File.join('https://graph.facebook.com', api_version)
15
+ end
16
+
17
+ def debugging?
18
+ !!self.debugging
19
+ end
20
+ def debug!
21
+ Rack::OAuth2.debug!
22
+ self.debugging = true
23
+ end
24
+
25
+ def http_client(access_token = nil)
26
+ _http_client_ = HTTPClient.new(
27
+ agent_name: "FbGraph2 (#{gem_version})"
28
+ )
29
+ _http_client_.request_filter.delete_if do |filter|
30
+ filter.is_a? HTTPClient::WWWAuth
31
+ end
32
+ _http_client_.request_filter << RequestFilter::Authenticator.new(access_token) if access_token.present?
33
+ _http_client_.request_filter << RequestFilter::Debugger.new if self.debugging?
34
+ _http_config_.try(:call, _http_client_)
35
+ _http_client_
36
+ end
37
+ def http_config(&block)
38
+ Rack::OAuth2.http_config &block unless Rack::OAuth2.http_config
39
+ self._http_config_ ||= block
40
+ end
41
+ end
42
+ end
43
+
44
+ require 'fb_graph2/attribute_assigner'
45
+ require 'fb_graph2/node'
46
+ require 'fb_graph2/collection'
47
+ require 'fb_graph2/edge'
48
+ [
49
+ '.',
50
+ 'request_filter'
51
+ ].each do |dir|
52
+ Dir[File.join(__dir__, 'fb_graph2', dir, '*.rb')].each do |file|
53
+ require file
54
+ end
55
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe FbGraph2::Node do
4
+ describe '.new' do
5
+ it 'should support access_token option' do
6
+ FbGraph2::Node.new(
7
+ 'matake', :access_token => 'access_token'
8
+ ).access_token.should == 'access_token'
9
+ end
10
+
11
+ it 'should store raw attributes' do
12
+ attributes = {:key => :value}
13
+ FbGraph2::Node.new(12345, attributes).raw_attributes.should == attributes
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ describe FbGraph2::User do
4
+ it do
5
+ p FbGraph2::User, FbGraph2::User.registered_attributes
6
+ p FbGraph2::Page, FbGraph2::Page.registered_attributes
7
+ end
8
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe FbGraph2 do
4
+ subject { FbGraph2 }
5
+ after { FbGraph2.debugging = false }
6
+
7
+ its(:logger) { should be_a Logger }
8
+ its(:debugging?) { should be_false }
9
+
10
+ describe '.debug!' do
11
+ before { FbGraph2.debug! }
12
+ its(:debugging?) { should be_true }
13
+ end
14
+
15
+ describe '.http_client' do
16
+ context 'with http_config' do
17
+ before do
18
+ FbGraph2.http_config do |config|
19
+ config.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
20
+ config.connect_timeout = 30
21
+ config.send_timeout = 40
22
+ config.receive_timeout = 60
23
+ end
24
+ end
25
+ it 'should configure Rack::OAuth2 and FbGraph2 http_client' do
26
+ [Rack::OAuth2, FbGraph2].each do |klass|
27
+ klass.http_client.ssl_config.verify_mode.should == OpenSSL::SSL::VERIFY_NONE
28
+ klass.http_client.connect_timeout.should == 30
29
+ klass.http_client.send_timeout.should == 40
30
+ klass.http_client.receive_timeout.should == 60
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,8 @@
1
+ require 'simplecov'
2
+
3
+ SimpleCov.start do
4
+ add_filter 'spec'
5
+ end
6
+
7
+ require 'rspec'
8
+ require 'fb_graph2'
metadata ADDED
@@ -0,0 +1,167 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fb_graph2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - nov matake
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httpclient
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '2.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '2.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rack-oauth2
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '1.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: multi_json
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '4.0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '4.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '2'
111
+ description: Facebook Graph API v2.0 Wrapper in Ruby
112
+ email:
113
+ - nov@matake.jp
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - ".gitignore"
119
+ - Gemfile
120
+ - LICENSE.txt
121
+ - README.md
122
+ - Rakefile
123
+ - VERSION
124
+ - fb_graph2.gemspec
125
+ - lib/fb_graph2.rb
126
+ - lib/fb_graph2/application.rb
127
+ - lib/fb_graph2/attribute_assigner.rb
128
+ - lib/fb_graph2/collection.rb
129
+ - lib/fb_graph2/edge.rb
130
+ - lib/fb_graph2/edge/accounts.rb
131
+ - lib/fb_graph2/edge/feed.rb
132
+ - lib/fb_graph2/edge/friends.rb
133
+ - lib/fb_graph2/node.rb
134
+ - lib/fb_graph2/page.rb
135
+ - lib/fb_graph2/post.rb
136
+ - lib/fb_graph2/request_filter/authenticator.rb
137
+ - lib/fb_graph2/request_filter/debugger.rb
138
+ - lib/fb_graph2/user.rb
139
+ - spec/fb_graph2/node_spec.rb
140
+ - spec/fb_graph2/user_spec.rb
141
+ - spec/fb_graph2_spec.rb
142
+ - spec/spec_helper.rb
143
+ homepage: ''
144
+ licenses:
145
+ - MIT
146
+ metadata: {}
147
+ post_install_message:
148
+ rdoc_options: []
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ required_rubygems_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ requirements: []
162
+ rubyforge_project:
163
+ rubygems_version: 2.2.2
164
+ signing_key:
165
+ specification_version: 4
166
+ summary: Facebook Graph API v2.0 Wrapper in Ruby
167
+ test_files: []