mosaic-facebook 0.2.1 → 0.9.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.
- data/lib/mosaic/facebook/api/api_object.rb +5 -2
- data/lib/mosaic/facebook/api/notification.rb +3 -3
- data/lib/mosaic/facebook/fql/fql_object.rb +3 -3
- data/lib/mosaic/facebook/graph/account.rb +1 -1
- data/lib/mosaic/facebook/graph/graph_object.rb +11 -7
- data/lib/mosaic/facebook/graph/user.rb +1 -1
- data/lib/mosaic/facebook/object.rb +22 -27
- data/lib/mosaic/facebook/version.rb +1 -1
- data/lib/mosaic_facebook.rb +2 -2
- data/mosaic-facebook.gemspec +5 -1
- data/spec/spec_helper.rb +0 -1
- metadata +72 -5
@@ -5,12 +5,12 @@ require 'mosaic/facebook/error'
|
|
5
5
|
module Mosaic
|
6
6
|
module Facebook
|
7
7
|
class Notification < Mosaic::Facebook::Api::ApiObject
|
8
|
-
|
8
|
+
|
9
9
|
class << self
|
10
10
|
# send_email requires these parameters: to, subject, body, access_token
|
11
11
|
def send_email(options)
|
12
|
-
response = get(
|
13
|
-
raise Mosaic::Facebook::Error.new(response['error_response']) if response.include?('error_response')
|
12
|
+
response = new.get('/method/notifications.sendEmail', options)
|
13
|
+
raise Mosaic::Facebook::Error.new(response.body['error_response']) if response.body.include?('error_response')
|
14
14
|
response
|
15
15
|
end
|
16
16
|
end
|
@@ -40,19 +40,19 @@ module Mosaic
|
|
40
40
|
when Hash
|
41
41
|
conditions.collect { |name,value| build_fql_condition(name,value) }.join(' AND ')
|
42
42
|
else
|
43
|
-
raise TypeError,
|
43
|
+
raise TypeError, 'expected string or hash of FQL conditions'
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
47
|
def find(*args)
|
48
|
-
response =
|
48
|
+
response = find_by_sql(*args)
|
49
49
|
data = response['fql_query_response'][record_name] || []
|
50
50
|
data = [data] unless data.is_a?(Array)
|
51
51
|
data.collect { |attributes| new(attributes) }
|
52
52
|
end
|
53
53
|
|
54
54
|
def find_by_fql(*args)
|
55
|
-
response = get('/method/fql.query',
|
55
|
+
response = new.get('/method/fql.query', build_fql(*args))
|
56
56
|
raise Mosaic::Facebook::Error.new(response['error_response']) if response.include?('error_response')
|
57
57
|
response
|
58
58
|
end
|
@@ -16,7 +16,7 @@ module Mosaic
|
|
16
16
|
class << self
|
17
17
|
def all(options = {})
|
18
18
|
# need 'manage_pages' extended permission to get pages (via accounts connection)
|
19
|
-
@all ||= find(
|
19
|
+
@all ||= find('/me/accounts', options)
|
20
20
|
end
|
21
21
|
|
22
22
|
def find_by_name(name, options = {})
|
@@ -2,31 +2,35 @@ module Mosaic
|
|
2
2
|
module Facebook
|
3
3
|
module Graph
|
4
4
|
class GraphObject < Mosaic::Facebook::Object
|
5
|
-
|
5
|
+
class << self
|
6
|
+
def base_uri
|
7
|
+
'https://graph.facebook.com'
|
8
|
+
end
|
9
|
+
end
|
6
10
|
|
7
11
|
def delete(path, options = {})
|
8
12
|
response = super(path, options)
|
9
|
-
raise Mosaic::Facebook::Error.new(response['error']) if !response.success?
|
13
|
+
raise Mosaic::Facebook::Error.new(response.body['error']) if !response.success?
|
10
14
|
response
|
11
15
|
end
|
12
16
|
|
13
17
|
def get(path, options = {})
|
14
18
|
response = super(path, options)
|
15
|
-
raise Mosaic::Facebook::Error.new(response['error']) if !response.success?
|
19
|
+
raise Mosaic::Facebook::Error.new(response.body['error']) if !response.success?
|
16
20
|
response
|
17
21
|
end
|
18
22
|
|
19
23
|
def post(path, options = {})
|
20
24
|
response = super(path, options)
|
21
|
-
raise Mosaic::Facebook::Error.new(response['error']) if !response.success?
|
25
|
+
raise Mosaic::Facebook::Error.new(response.body['error']) if !response.success?
|
22
26
|
response
|
23
27
|
end
|
24
28
|
|
25
29
|
class << self
|
26
30
|
def find(path, options = {})
|
27
|
-
response = get(path,
|
28
|
-
raise Mosaic::Facebook::Error.new(response['error']) if !response.success?
|
29
|
-
data = response.
|
31
|
+
response = new.get(path, options)
|
32
|
+
raise Mosaic::Facebook::Error.new(response.body['error']) if !response.success?
|
33
|
+
data = response.body
|
30
34
|
if data.include?('data')
|
31
35
|
data['data'].collect { |attributes| new(attributes) }
|
32
36
|
else
|
@@ -1,24 +1,42 @@
|
|
1
|
-
require '
|
1
|
+
require 'faraday'
|
2
|
+
require 'faraday_middleware'
|
3
|
+
require 'mosaic/facebook/error'
|
4
|
+
require 'multi_xml'
|
2
5
|
|
3
6
|
module Mosaic
|
4
7
|
module Facebook
|
5
8
|
class Object
|
6
|
-
include HTTParty
|
7
9
|
# debug_output
|
8
10
|
|
11
|
+
class << self
|
12
|
+
def base_uri
|
13
|
+
raise NotImplementedError
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
9
17
|
def initialize(attributes = {})
|
10
18
|
attributes.each { |key,value| instance_variable_set("@#{key}".to_sym, value) }
|
19
|
+
|
20
|
+
@conn = Faraday.new do |faraday|
|
21
|
+
faraday.request :retry, :max => 3,
|
22
|
+
:exceptions => [Exception, Mosaic::Facebook::UnknownError]
|
23
|
+
faraday.request :url_encoded
|
24
|
+
faraday.response :json, :content_type => /\bjson$/
|
25
|
+
faraday.response :xml, :content_type => /\bxml$/
|
26
|
+
|
27
|
+
faraday.adapter Faraday.default_adapter
|
28
|
+
end
|
11
29
|
end
|
12
30
|
|
13
31
|
def get(path, options = {})
|
14
32
|
query = { :access_token => self.class.facebook_access_token }.merge(options)
|
15
|
-
self.class.
|
33
|
+
@conn.get URI.join(self.class.base_uri, path), query
|
16
34
|
end
|
17
35
|
|
18
36
|
def post(path, options)
|
19
37
|
query = { :access_token => self.class.facebook_access_token }.merge(options)
|
20
38
|
body = Hash[instance_variables.collect { |ivar| [ivar.sub(/@/,''),instance_variable_get(ivar)] }]
|
21
|
-
self.class.
|
39
|
+
@conn.post URI.join(self.class.base_uri, path), :query => query, :body => serialize_body(body)
|
22
40
|
end
|
23
41
|
|
24
42
|
class << self
|
@@ -64,29 +82,6 @@ module Mosaic
|
|
64
82
|
def serialize_body(body)
|
65
83
|
body.to_json
|
66
84
|
end
|
67
|
-
|
68
|
-
def perform_request_with_retry(http_method, path, options)
|
69
|
-
with_retry do
|
70
|
-
perform_request_without_retry(http_method, path, options)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
# alias_method_chain :perform_request, :retry
|
74
|
-
alias_method :perform_request_without_retry, :perform_request
|
75
|
-
alias_method :perform_request, :perform_request_with_retry
|
76
|
-
|
77
|
-
def with_retry(exception = Exception, attempts = 3)
|
78
|
-
tries = 0
|
79
|
-
begin
|
80
|
-
return yield
|
81
|
-
rescue exception => e
|
82
|
-
if tries < attempts
|
83
|
-
tries += 1
|
84
|
-
logger.debug "#{e.class.name}: #{e.message}: retry ##{tries}"
|
85
|
-
retry
|
86
|
-
end
|
87
|
-
raise e
|
88
|
-
end
|
89
|
-
end
|
90
85
|
end
|
91
86
|
end
|
92
87
|
end
|
data/lib/mosaic_facebook.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
STDERR.puts
|
2
|
-
require 'mosaic/facebook'
|
1
|
+
STDERR.puts 'This version of the gem has been deprecated. Please upgrade to mosaic-facebook.'
|
2
|
+
require 'mosaic/facebook'
|
data/mosaic-facebook.gemspec
CHANGED
@@ -18,10 +18,14 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.rubyforge_project = "mosaic_facebook"
|
19
19
|
s.required_rubygems_version = ">= 1.3.4"
|
20
20
|
|
21
|
-
s.add_dependency "
|
21
|
+
s.add_dependency "faraday", "~> 0.8.7"
|
22
|
+
s.add_dependency "faraday_middleware", "~> 0.9.0"
|
23
|
+
s.add_dependency "multi_xml", "~> 0.5.3"
|
22
24
|
s.add_dependency "activesupport", "~> 3.0"
|
23
25
|
|
26
|
+
s.add_development_dependency "debugger"
|
24
27
|
s.add_development_dependency "rspec"
|
28
|
+
s.add_development_dependency "rake"
|
25
29
|
|
26
30
|
s.files = `git ls-files`.split("\n")
|
27
31
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mosaic-facebook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,16 +9,16 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: faraday
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.8.7
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,39 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.8.7
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: faraday_middleware
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.9.0
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.9.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: multi_xml
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.5.3
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.5.3
|
30
62
|
- !ruby/object:Gem::Dependency
|
31
63
|
name: activesupport
|
32
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -43,6 +75,22 @@ dependencies:
|
|
43
75
|
- - ~>
|
44
76
|
- !ruby/object:Gem::Version
|
45
77
|
version: '3.0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: debugger
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
46
94
|
- !ruby/object:Gem::Dependency
|
47
95
|
name: rspec
|
48
96
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,6 +107,22 @@ dependencies:
|
|
59
107
|
- - ! '>='
|
60
108
|
- !ruby/object:Gem::Version
|
61
109
|
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rake
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
62
126
|
description: small app written and improved over time to solve our need to connect
|
63
127
|
and fetch data from facebook
|
64
128
|
email:
|
@@ -127,6 +191,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
127
191
|
- - ! '>='
|
128
192
|
- !ruby/object:Gem::Version
|
129
193
|
version: '0'
|
194
|
+
segments:
|
195
|
+
- 0
|
196
|
+
hash: 2014683090419711334
|
130
197
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
198
|
none: false
|
132
199
|
requirements:
|