mosaic-facebook 0.2.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|