em-facebook 0.1.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/.gitignore +4 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/HISTORY.md +5 -0
- data/README.md +19 -0
- data/Rakefile +10 -0
- data/em-facebook.gemspec +26 -0
- data/lib/em-facebook.rb +8 -0
- data/lib/em-facebook/facebook.rb +45 -0
- data/lib/em-facebook/version.rb +5 -0
- data/spec/facebook_spec.rb +40 -0
- data/spec/spec_helper.rb +1 -0
- metadata +105 -0
data/.gitignore
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm 1.9.3@em-facebook --create
|
data/Gemfile
ADDED
data/HISTORY.md
ADDED
data/README.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
EM-Facebook
|
2
|
+
===========
|
3
|
+
|
4
|
+
A very simple em-synchrony based Facebook Graph API client.
|
5
|
+
|
6
|
+
Example usage
|
7
|
+
-------------
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
require 'em-facebook'
|
11
|
+
|
12
|
+
EM.synchrony do
|
13
|
+
facebook = EM::Facebook.new('access token')
|
14
|
+
facebook.me # => ...
|
15
|
+
facebook.music # => ...
|
16
|
+
|
17
|
+
EM.stop
|
18
|
+
end
|
19
|
+
```
|
data/Rakefile
ADDED
data/em-facebook.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "em-facebook/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "em-facebook"
|
7
|
+
s.version = EventMachine::Facebook::VERSION
|
8
|
+
s.authors = ["Niklas Holmgren", "Sebastian Falk"]
|
9
|
+
s.email = ["niklas@sutajio.se", "sebastian.falk@netlight.se"]
|
10
|
+
s.homepage = "http://github.com/ProjectDaisy/em-facebook"
|
11
|
+
s.summary = %q{EM-Synchrony based Facebook Graph API client}
|
12
|
+
s.description = s.summary
|
13
|
+
|
14
|
+
s.rubyforge_project = "em-facebook"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_dependency "em-synchrony"
|
22
|
+
s.add_dependency "multi_json"
|
23
|
+
|
24
|
+
s.add_development_dependency "rspec"
|
25
|
+
s.add_development_dependency "rake"
|
26
|
+
end
|
data/lib/em-facebook.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
module EventMachine
|
2
|
+
class Facebook
|
3
|
+
class Exception < RuntimeError; end
|
4
|
+
|
5
|
+
API_URL = 'https://graph.facebook.com/'
|
6
|
+
|
7
|
+
def initialize(access_token = nil)
|
8
|
+
@access_token = access_token
|
9
|
+
end
|
10
|
+
|
11
|
+
def me
|
12
|
+
response = get('me')
|
13
|
+
response['error'].nil? ? response : nil
|
14
|
+
end
|
15
|
+
|
16
|
+
def music
|
17
|
+
response = get('me/music')
|
18
|
+
response['error'].nil? ? response : nil
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
def url(path)
|
24
|
+
if @access_token
|
25
|
+
"#{API_URL}#{path}?access_token=#{CGI.escape(@access_token)}"
|
26
|
+
else
|
27
|
+
"#{API_URL}#{path}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def get(path)
|
32
|
+
http = client(url(path)).get
|
33
|
+
if http.response_header.status == 0
|
34
|
+
raise Exception.new('Facebook connection failure')
|
35
|
+
else
|
36
|
+
MultiJson.decode(http.response)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def client(url)
|
41
|
+
EM::HttpRequest.new(url)
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.expand_path('spec/spec_helper')
|
2
|
+
require 'em-facebook'
|
3
|
+
|
4
|
+
describe EventMachine::Facebook do
|
5
|
+
|
6
|
+
around(:each) do |example|
|
7
|
+
EM.synchrony do
|
8
|
+
example.run
|
9
|
+
EM.stop
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:access_token) do
|
14
|
+
'AAACiDgkUZCv8BAFV4VWWySqQ4S6dmTr32f8ur2fMK1kUh3V9S9MyK8sgrMHYvLpJ9TVT2gkUBWmL6cSSx6oC1hkFOUkhHl29myKGYNAZDZD'
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'raises an exception when there is something wrong with network/facebook server/etc' do
|
18
|
+
user_token = 'somebadtoken'
|
19
|
+
facebook = EM::Facebook.new(user_token)
|
20
|
+
facebook.stub!(:url).and_return('http://notaworkingfacebookurl.facebook.com')
|
21
|
+
lambda { facebook.me }.should raise_error(EM::Facebook::Exception)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'returns nil when the access token is not valid' do
|
25
|
+
EM::Facebook.new('an erronous access token').me.should == nil
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'responds with a correct user when the access token is valid' do
|
29
|
+
user_hash = EM::Facebook.new(access_token).me
|
30
|
+
user_hash['id'].should == '100003368997874'
|
31
|
+
user_hash['name'].should == 'Test Testsson'
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'responds with an artist array when calling for music using a valid access token' do
|
35
|
+
music_hash = EM::Facebook.new(access_token).music
|
36
|
+
music_hash.should_not == nil
|
37
|
+
music_hash['data'].kind_of?(Array).should == true
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'pp'
|
metadata
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: em-facebook
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Niklas Holmgren
|
9
|
+
- Sebastian Falk
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2012-02-23 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: em-synchrony
|
17
|
+
requirement: &70243687661800 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *70243687661800
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: multi_json
|
28
|
+
requirement: &70243687661320 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *70243687661320
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rspec
|
39
|
+
requirement: &70243687660820 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
type: :development
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *70243687660820
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rake
|
50
|
+
requirement: &70243687660280 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
type: :development
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *70243687660280
|
59
|
+
description: EM-Synchrony based Facebook Graph API client
|
60
|
+
email:
|
61
|
+
- niklas@sutajio.se
|
62
|
+
- sebastian.falk@netlight.se
|
63
|
+
executables: []
|
64
|
+
extensions: []
|
65
|
+
extra_rdoc_files: []
|
66
|
+
files:
|
67
|
+
- .gitignore
|
68
|
+
- .rvmrc
|
69
|
+
- Gemfile
|
70
|
+
- HISTORY.md
|
71
|
+
- README.md
|
72
|
+
- Rakefile
|
73
|
+
- em-facebook.gemspec
|
74
|
+
- lib/em-facebook.rb
|
75
|
+
- lib/em-facebook/facebook.rb
|
76
|
+
- lib/em-facebook/version.rb
|
77
|
+
- spec/facebook_spec.rb
|
78
|
+
- spec/spec_helper.rb
|
79
|
+
homepage: http://github.com/ProjectDaisy/em-facebook
|
80
|
+
licenses: []
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options: []
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
none: false
|
87
|
+
requirements:
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
requirements: []
|
98
|
+
rubyforge_project: em-facebook
|
99
|
+
rubygems_version: 1.8.15
|
100
|
+
signing_key:
|
101
|
+
specification_version: 3
|
102
|
+
summary: EM-Synchrony based Facebook Graph API client
|
103
|
+
test_files:
|
104
|
+
- spec/facebook_spec.rb
|
105
|
+
- spec/spec_helper.rb
|