From 53dfdec60861349dbc2d67da7e441221971c6373 Mon Sep 17 00:00:00 2001 From: nov Date: Fri, 31 Oct 2014 18:13:14 +0900 Subject: [PATCH] Graph API v2.2 - page settings & app permissions --- lib/fb_graph2/app.rb | 1 + lib/fb_graph2/edge/settings.rb | 12 ++++++++++ lib/fb_graph2/page.rb | 1 + lib/fb_graph2/struct/setting.rb | 9 +++++++ spec/fb_graph2/edge/settings_spec.rb | 19 +++++++++++++++ spec/mock_json/page/settings.json | 36 ++++++++++++++++++++++++++++ 6 files changed, 78 insertions(+) create mode 100644 lib/fb_graph2/edge/settings.rb create mode 100644 lib/fb_graph2/struct/setting.rb create mode 100644 spec/fb_graph2/edge/settings_spec.rb create mode 100644 spec/mock_json/page/settings.json diff --git a/lib/fb_graph2/app.rb b/lib/fb_graph2/app.rb index fa54388..a737908 100644 --- a/lib/fb_graph2/app.rb +++ b/lib/fb_graph2/app.rb @@ -5,6 +5,7 @@ module FbGraph2 include Edge::AppEventTypes include Edge::Banned include Edge::Groups + include Edge::Permissions include Edge::Picture include Edge::Roles include Edge::Scores diff --git a/lib/fb_graph2/edge/settings.rb b/lib/fb_graph2/edge/settings.rb new file mode 100644 index 0000000..2022b61 --- /dev/null +++ b/lib/fb_graph2/edge/settings.rb @@ -0,0 +1,12 @@ +module FbGraph2 + class Edge + module Settings + def settings(params = {}) + settings = self.edge :settings, params + settings.collect! do |setting| + Struct::Setting.new setting + end + end + end + end +end \ No newline at end of file diff --git a/lib/fb_graph2/page.rb b/lib/fb_graph2/page.rb index 870bd21..757f546 100644 --- a/lib/fb_graph2/page.rb +++ b/lib/fb_graph2/page.rb @@ -14,6 +14,7 @@ module FbGraph2 include Edge::Photos include Edge::Posts include Edge::PromotablePosts + include Edge::Settings include Edge::Statuses include Edge::Tagged include Edge::Videos diff --git a/lib/fb_graph2/struct/setting.rb b/lib/fb_graph2/struct/setting.rb new file mode 100644 index 0000000..28867df --- /dev/null +++ b/lib/fb_graph2/struct/setting.rb @@ -0,0 +1,9 @@ +module FbGraph2 + class Struct + class Setting < Struct + register_attributes( + raw: [:setting, :value] + ) + end + end +end \ No newline at end of file diff --git a/spec/fb_graph2/edge/settings_spec.rb b/spec/fb_graph2/edge/settings_spec.rb new file mode 100644 index 0000000..e7c9ded --- /dev/null +++ b/spec/fb_graph2/edge/settings_spec.rb @@ -0,0 +1,19 @@ +require 'spec_helper' + +describe FbGraph2::Edge::Settings do + context 'included in Page' do + describe '#settings' do + let(:page) { FbGraph2::Page.new('page_id').authenticate('page_token') } + it 'should return an Array of FbGraph2::Struct::Permission' do + settings = mock_graph :get, 'page_id/settings', 'page/settings', access_token: 'page_token' do + page.settings + end + settings.should be_instance_of FbGraph2::Edge + settings.should_not be_blank + settings.each do |setting| + setting.should be_instance_of FbGraph2::Struct::Setting + end + end + end + end +end \ No newline at end of file diff --git a/spec/mock_json/page/settings.json b/spec/mock_json/page/settings.json new file mode 100644 index 0000000..e56b812 --- /dev/null +++ b/spec/mock_json/page/settings.json @@ -0,0 +1,36 @@ +{ + "data": [ + { + "setting": "USERS_CAN_POST", + "value": true + }, + { + "setting": "USERS_CAN_MESSAGE", + "value": true + }, + { + "setting": "USERS_CAN_POST_PHOTOS", + "value": true + }, + { + "setting": "USERS_CAN_TAG_PHOTOS", + "value": false + }, + { + "setting": "WALL_COMBINED_POSTS", + "value": true + }, + { + "setting": "PLATFORM_OPTOUTS_CAN_POST", + "value": true + }, + { + "setting": "SHOW_RECENT_POSTS_BY_OTHERS", + "value": true + }, + { + "setting": "APPEARS_IN_RELATED_PAGES", + "value": true + } + ] +} \ No newline at end of file