mirror of
https://github.com/nov/fb_graph2
synced 2023-03-27 23:22:15 -04:00
app edges
This commit is contained in:
parent
46458a0a23
commit
5e4a703956
21 changed files with 246 additions and 5 deletions
|
@ -1,5 +1,18 @@
|
||||||
module FbGraph2
|
module FbGraph2
|
||||||
class App < Node
|
class App < Node
|
||||||
|
include Edge::Achievements
|
||||||
|
include Edge::AppLinkHosts
|
||||||
|
include Edge::AppEventTypes
|
||||||
|
include Edge::Banned
|
||||||
|
include Edge::Groups
|
||||||
|
include Edge::Picture
|
||||||
|
include Edge::Roles
|
||||||
|
include Edge::Scores
|
||||||
|
include Edge::StaticResources
|
||||||
|
include Edge::Subscriptions
|
||||||
|
include Edge::TestUsers
|
||||||
|
include Edge::Translations
|
||||||
|
|
||||||
register_attributes(
|
register_attributes(
|
||||||
raw: [
|
raw: [
|
||||||
:id, :android_key_hash, :app_domains, :auth_dialog_data_help_url, :auth_dialog_headline,
|
:id, :android_key_hash, :app_domains, :auth_dialog_data_help_url, :auth_dialog_headline,
|
||||||
|
|
12
lib/fb_graph2/edge/app_event_types.rb
Normal file
12
lib/fb_graph2/edge/app_event_types.rb
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
module FbGraph2
|
||||||
|
class Edge
|
||||||
|
module AppEventTypes
|
||||||
|
def app_event_types(params = {})
|
||||||
|
types = self.edge :app_event_types, params
|
||||||
|
types.collect do |type|
|
||||||
|
Struct::AppEventType.new type
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
12
lib/fb_graph2/edge/app_link_hosts.rb
Normal file
12
lib/fb_graph2/edge/app_link_hosts.rb
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
module FbGraph2
|
||||||
|
class Edge
|
||||||
|
module AppLinkHosts
|
||||||
|
def app_link_hosts(params = {})
|
||||||
|
hosts = self.edge :app_link_hosts, params
|
||||||
|
hosts.collect do |host|
|
||||||
|
AppLinkHost.new(hosts[:id], hosts).authenticate self.access_token
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
12
lib/fb_graph2/edge/banned.rb
Normal file
12
lib/fb_graph2/edge/banned.rb
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
module FbGraph2
|
||||||
|
class Edge
|
||||||
|
module Banned
|
||||||
|
def banned(params = {})
|
||||||
|
users = self.edge :banned, params
|
||||||
|
users.collect do |user|
|
||||||
|
User.new(user[:id], user).authenticate self.access_token
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
12
lib/fb_graph2/edge/roles.rb
Normal file
12
lib/fb_graph2/edge/roles.rb
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
module FbGraph2
|
||||||
|
class Edge
|
||||||
|
module Roles
|
||||||
|
def roles(params = {})
|
||||||
|
roles = self.edge :roles, params
|
||||||
|
roles.collect do |role|
|
||||||
|
Struct::Role.new role
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
13
lib/fb_graph2/edge/static_resources.rb
Normal file
13
lib/fb_graph2/edge/static_resources.rb
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
module FbGraph2
|
||||||
|
class Edge
|
||||||
|
module StaticResources
|
||||||
|
def static_resources(params = {})
|
||||||
|
resources = self.edge :staticresources, params
|
||||||
|
resources.collect do |resource|
|
||||||
|
Struct::StaticResource.new resource
|
||||||
|
end
|
||||||
|
end
|
||||||
|
alias_method :staticresources, :static_resources
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
12
lib/fb_graph2/edge/subscriptions.rb
Normal file
12
lib/fb_graph2/edge/subscriptions.rb
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
module FbGraph2
|
||||||
|
class Edge
|
||||||
|
module Subscriptions
|
||||||
|
def subscriptions(params = {})
|
||||||
|
subscriptions = self.edge :subscriptions, params
|
||||||
|
subscriptions.collect do |subscription|
|
||||||
|
Struct::Subscription.new subscription
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
12
lib/fb_graph2/edge/test_users.rb
Normal file
12
lib/fb_graph2/edge/test_users.rb
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
module FbGraph2
|
||||||
|
class Edge
|
||||||
|
module TestUsers
|
||||||
|
def test_users(params = {})
|
||||||
|
users = self.edge :accounts, params, edge_scope: :'test-users'
|
||||||
|
users.collect do |user|
|
||||||
|
User.new(user[:id], user)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
17
lib/fb_graph2/edge/translations.rb
Normal file
17
lib/fb_graph2/edge/translations.rb
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
module FbGraph2
|
||||||
|
class Edge
|
||||||
|
module Translations
|
||||||
|
def translations(params = {})
|
||||||
|
translations = self.edge :translations, params
|
||||||
|
translations.collect do |translation|
|
||||||
|
Translation.new(translation[:id], translation).authenticate self.authenticate
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def translation!(params = {})
|
||||||
|
self.post params, edge: :translations
|
||||||
|
end
|
||||||
|
alias_method :translate!, :translation!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -10,6 +10,7 @@ module FbGraph2
|
||||||
def initialize(id, attributes = {})
|
def initialize(id, attributes = {})
|
||||||
self.id = id
|
self.id = id
|
||||||
assign attributes if respond_to? :assign
|
assign attributes if respond_to? :assign
|
||||||
|
authenticate attributes[:access_token] if attributes.include? :access_token
|
||||||
end
|
end
|
||||||
|
|
||||||
def authenticate(access_token)
|
def authenticate(access_token)
|
||||||
|
|
25
lib/fb_graph2/struct/app_event_type.rb
Normal file
25
lib/fb_graph2/struct/app_event_type.rb
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
module FbGraph2
|
||||||
|
class Struct
|
||||||
|
class AppEventType < Struct
|
||||||
|
register_attributes(
|
||||||
|
raw: [:event_name, :display_name, :description],
|
||||||
|
custom: [:parameters]
|
||||||
|
)
|
||||||
|
|
||||||
|
class Parameter < Struct
|
||||||
|
register_attributes(
|
||||||
|
raw: [:parameter_name, :display_name, :description]
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def initialize(attributes = {})
|
||||||
|
super
|
||||||
|
if attributes.include? :parameters
|
||||||
|
self.parameters = Collection.new(attributes[:parameters]).collect do |param|
|
||||||
|
Parameter.new param
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
9
lib/fb_graph2/struct/role.rb
Normal file
9
lib/fb_graph2/struct/role.rb
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
module FbGraph2
|
||||||
|
class Struct
|
||||||
|
class Role < Struct
|
||||||
|
register_attributes(
|
||||||
|
raw: [:app_id, :user, :role]
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
17
lib/fb_graph2/struct/static_resource.rb
Normal file
17
lib/fb_graph2/struct/static_resource.rb
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
module FbGraph2
|
||||||
|
class Struct
|
||||||
|
class StaticResource < Struct
|
||||||
|
register_attributes(
|
||||||
|
raw: [:usage_stats, :prefetched_resources],
|
||||||
|
custom: [:https]
|
||||||
|
)
|
||||||
|
|
||||||
|
def initialize(attributes = {})
|
||||||
|
super
|
||||||
|
if attributes.include? :https
|
||||||
|
self.https = self.class.new attributes[:https]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
9
lib/fb_graph2/struct/subscription.rb
Normal file
9
lib/fb_graph2/struct/subscription.rb
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
module FbGraph2
|
||||||
|
class Struct
|
||||||
|
class Subscription < Struct
|
||||||
|
register_attributes(
|
||||||
|
raw: [:object, :callback_url, :fields, :active]
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
7
lib/fb_graph2/translation.rb
Normal file
7
lib/fb_graph2/translation.rb
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
module FbGraph2
|
||||||
|
class Translation < Node
|
||||||
|
register_attributes(
|
||||||
|
raw: [:translation, :approval_status, :native_string, :description]
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
18
spec/fb_graph2/edge/subscriptions_spec.rb
Normal file
18
spec/fb_graph2/edge/subscriptions_spec.rb
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe FbGraph2::Edge::Subscriptions do
|
||||||
|
context 'included in App' do
|
||||||
|
describe '#subscriptions' do
|
||||||
|
let(:app) { FbGraph2::App.app('app_token') }
|
||||||
|
it 'should return an Array of FbGraph2::Struct::Subscription' do
|
||||||
|
subscriptions = mock_graph :get, 'app/subscriptions', 'app/subscriptions', access_token: 'app_token' do
|
||||||
|
app.subscriptions
|
||||||
|
end
|
||||||
|
subscriptions.should_not be_blank
|
||||||
|
subscriptions.each do |subscription|
|
||||||
|
subscription.should be_instance_of FbGraph2::Struct::Subscription
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
19
spec/fb_graph2/edge/test_users_spec.rb
Normal file
19
spec/fb_graph2/edge/test_users_spec.rb
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe FbGraph2::Edge::TestUsers do
|
||||||
|
context 'included in App' do
|
||||||
|
describe '#test_users' do
|
||||||
|
let(:app) { FbGraph2::App.app('app_token') }
|
||||||
|
it 'should return an Array of FbGraph2::User with test_user token' do
|
||||||
|
users = mock_graph :get, 'app/accounts/test-users', 'app/test_users', access_token: 'app_token' do
|
||||||
|
app.test_users
|
||||||
|
end
|
||||||
|
users.should_not be_blank
|
||||||
|
users.each do |user|
|
||||||
|
user.should be_instance_of FbGraph2::User
|
||||||
|
user.access_token.should == 'test_user_token'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,5 +0,0 @@
|
||||||
require 'spec_helper'
|
|
||||||
|
|
||||||
describe FbGraph2::Page do
|
|
||||||
it :TODO
|
|
||||||
end
|
|
|
@ -8,6 +8,7 @@ describe FbGraph2 do
|
||||||
its(:logger) { should be_a Logger }
|
its(:logger) { should be_a Logger }
|
||||||
its(:api_version) { should == 'v2.0' }
|
its(:api_version) { should == 'v2.0' }
|
||||||
its(:root_url) { should == 'https://graph.facebook.com/v2.0' }
|
its(:root_url) { should == 'https://graph.facebook.com/v2.0' }
|
||||||
|
its(:object_classes) { should contain_exactly *FbGraph2::Node.subclasses }
|
||||||
it { should_not be_debugging }
|
it { should_not be_debugging }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
8
spec/mock_json/app/subscriptions.json
Normal file
8
spec/mock_json/app/subscriptions.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"data": [{
|
||||||
|
"object": "user",
|
||||||
|
"callback_url": "http://fbgraphsample.heroku.com/subscriptions/7",
|
||||||
|
"fields": ["email"],
|
||||||
|
"active": true
|
||||||
|
}]
|
||||||
|
}
|
17
spec/mock_json/app/test_users.json
Normal file
17
spec/mock_json/app/test_users.json
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"data": [{
|
||||||
|
"id": "100003934202581",
|
||||||
|
"login_url": "https://developers.facebook.com/checkpoint/test-user-login/100003934202581/",
|
||||||
|
"access_token": "test_user_token"
|
||||||
|
}, {
|
||||||
|
"id": "100003888272508",
|
||||||
|
"login_url": "https://developers.facebook.com/checkpoint/test-user-login/100003888272508/",
|
||||||
|
"access_token": "test_user_token"
|
||||||
|
}],
|
||||||
|
"paging": {
|
||||||
|
"cursors": {
|
||||||
|
"before": "MTAwMDAzOTM0MjAyNTgx",
|
||||||
|
"after": "MTAwMDAzODg4MjcyNTA4"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue