fbgraph 0.0.2
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/Manifest +12 -0
- data/README +0 -0
- data/Rakefile +12 -0
- data/fbgraph.gemspec +33 -0
- data/lib/fbgraph.rb +10 -0
- data/lib/fbgraph/authorization.rb +20 -0
- data/lib/fbgraph/base.rb +65 -0
- data/lib/fbgraph/client.rb +35 -0
- data/lib/fbgraph/search.rb +18 -0
- data/lib/fbgraph/selection.rb +40 -0
- data/specs/lib/fbauth/authorization_spec.rb +0 -0
- data/specs/lib/fbauth/base_spec.rb +0 -0
- data/specs/lib/fbauth/search_spec.rb +0 -0
- metadata +87 -0
data/Manifest
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
README
|
2
|
+
Rakefile
|
3
|
+
lib/fbgraph.rb
|
4
|
+
lib/fbgraph/authorization.rb
|
5
|
+
lib/fbgraph/base.rb
|
6
|
+
lib/fbgraph/client.rb
|
7
|
+
lib/fbgraph/search.rb
|
8
|
+
lib/fbgraph/selection.rb
|
9
|
+
specs/lib/fbauth/authorization_spec.rb
|
10
|
+
specs/lib/fbauth/base_spec.rb
|
11
|
+
specs/lib/fbauth/search_spec.rb
|
12
|
+
Manifest
|
data/README
ADDED
File without changes
|
data/Rakefile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'echoe'
|
4
|
+
|
5
|
+
Echoe.new('fbgraph', '0.0.2') do |p|
|
6
|
+
p.description = "A Gem for Facebook Open Graph API"
|
7
|
+
p.url = "http://github.com/nsanta/fbgraph"
|
8
|
+
p.author = "Nicolas Santa"
|
9
|
+
p.email = "nicolas55ar@gmail.com"
|
10
|
+
p.ignore_pattern = ["tmp/*", "script/*"]
|
11
|
+
p.development_dependencies = ['oauth2']
|
12
|
+
end
|
data/fbgraph.gemspec
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{fbgraph}
|
5
|
+
s.version = "0.0.2"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Nicolas Santa"]
|
9
|
+
s.date = %q{2010-05-07}
|
10
|
+
s.description = %q{A Gem for Facebook Open Graph API}
|
11
|
+
s.email = %q{nicolas55ar@gmail.com}
|
12
|
+
s.extra_rdoc_files = ["README", "lib/fbgraph.rb", "lib/fbgraph/authorization.rb", "lib/fbgraph/base.rb", "lib/fbgraph/client.rb", "lib/fbgraph/search.rb", "lib/fbgraph/selection.rb"]
|
13
|
+
s.files = ["README", "Rakefile", "lib/fbgraph.rb", "lib/fbgraph/authorization.rb", "lib/fbgraph/base.rb", "lib/fbgraph/client.rb", "lib/fbgraph/search.rb", "lib/fbgraph/selection.rb", "specs/lib/fbauth/authorization_spec.rb", "specs/lib/fbauth/base_spec.rb", "specs/lib/fbauth/search_spec.rb", "Manifest", "fbgraph.gemspec"]
|
14
|
+
s.homepage = %q{http://github.com/nsanta/fbgraph}
|
15
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Fbgraph", "--main", "README"]
|
16
|
+
s.require_paths = ["lib"]
|
17
|
+
s.rubyforge_project = %q{fbgraph}
|
18
|
+
s.rubygems_version = %q{1.3.5}
|
19
|
+
s.summary = %q{A Gem for Facebook Open Graph API}
|
20
|
+
|
21
|
+
if s.respond_to? :specification_version then
|
22
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
23
|
+
s.specification_version = 3
|
24
|
+
|
25
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
26
|
+
s.add_development_dependency(%q<oauth2>, [">= 0"])
|
27
|
+
else
|
28
|
+
s.add_dependency(%q<oauth2>, [">= 0"])
|
29
|
+
end
|
30
|
+
else
|
31
|
+
s.add_dependency(%q<oauth2>, [">= 0"])
|
32
|
+
end
|
33
|
+
end
|
data/lib/fbgraph.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module FBGraph
|
2
|
+
|
3
|
+
class Authorization
|
4
|
+
|
5
|
+
def initialize(client)
|
6
|
+
@client = client
|
7
|
+
end
|
8
|
+
|
9
|
+
def authorize_url(params = {})
|
10
|
+
@client.oauth_client.web_server.authorize_url(params)
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
def process_callback(code, options = {})
|
15
|
+
@client.consumer = @client.oauth_client.web_server.get_access_token(code, options)
|
16
|
+
@client.access_token = @client.consumer.token
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
data/lib/fbgraph/base.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
module FBGraph
|
2
|
+
|
3
|
+
class Base
|
4
|
+
|
5
|
+
attr_reader :objects , :connection_type
|
6
|
+
|
7
|
+
def initialize(client)
|
8
|
+
@client = client
|
9
|
+
end
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
def find(objects)
|
14
|
+
@objects = objects
|
15
|
+
return self
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
def connection(connection_type)
|
20
|
+
@connection_type = connection_type
|
21
|
+
return self
|
22
|
+
end
|
23
|
+
|
24
|
+
def params(params)
|
25
|
+
@params = params
|
26
|
+
return self
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
def info(parsed = true)
|
31
|
+
if @objects.is_a? Array
|
32
|
+
@params.merge!({:ids => ids.join(',')})
|
33
|
+
uri = build_open_graph_uri(nil , nil , @params)
|
34
|
+
elsif @objects.is_a? String
|
35
|
+
uri = build_open_graph_uri(@objects , @connection_type , @params)
|
36
|
+
end
|
37
|
+
result = @client.consumer.get(uri)
|
38
|
+
return parsed ? JSON.parse(result) : result
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
def publish(parsed = true)
|
43
|
+
consume!(:post , parsed)
|
44
|
+
end
|
45
|
+
|
46
|
+
def delete(parsed = true)
|
47
|
+
@params = {:method => 'delete'}
|
48
|
+
consume!(:post, parsed)
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def build_open_graph_uri(id,connection_type = nil, params = {})
|
54
|
+
request = "/" + [id , connection_type].compact.join('/')
|
55
|
+
request += "?"+params.to_a.map{|p| p.join('=')}.join('&')
|
56
|
+
request
|
57
|
+
end
|
58
|
+
|
59
|
+
def consume!(verb, parse)
|
60
|
+
uri = build_open_graph_uri(@objects , @connection_type , @params)
|
61
|
+
result = @client.consumer.send(verb,uri)
|
62
|
+
return parsed ? JSON.parse(result) : result
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module FBGraph
|
2
|
+
|
3
|
+
class Client
|
4
|
+
attr_accessor :client_id , :secret_id , :facebook_uri , :access_token , :consumer
|
5
|
+
|
6
|
+
|
7
|
+
def initialize(options)
|
8
|
+
self.client_id , self.secret_id = options[:client_id] , options[:secret_id]
|
9
|
+
@facebook_uri = 'https://graph.facebook.com'
|
10
|
+
if self.access_token = options[:token]
|
11
|
+
self.consumer = OAuth2::AccessToken.new(oauth_client , self.access_token)
|
12
|
+
end
|
13
|
+
return true
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
def authorization
|
18
|
+
FBGraph::Authorization.new(self)
|
19
|
+
end
|
20
|
+
|
21
|
+
def selection
|
22
|
+
FBGraph::Selection.new(self)
|
23
|
+
end
|
24
|
+
|
25
|
+
def search
|
26
|
+
FBGraph::Search.new(self)
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
def oauth_client
|
31
|
+
OAuth2::Client.new(client_id, secret_id, :site => facebook_uri)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module FBGraph
|
2
|
+
class Selection < Base
|
3
|
+
|
4
|
+
def me
|
5
|
+
find('me')
|
6
|
+
end
|
7
|
+
|
8
|
+
OBJECTS = %w(user album event group link note page photo post status video).freeze
|
9
|
+
|
10
|
+
CONNECTION_TYPES = %w(home photos comments feed noreply
|
11
|
+
maybe invited attending declined picture
|
12
|
+
members picture tagged links groups albums
|
13
|
+
statuses videos notes posts events friends
|
14
|
+
activities interests music books movies television
|
15
|
+
likes inbox outbox updates).freeze
|
16
|
+
|
17
|
+
OBJECTS.each do |object|
|
18
|
+
class_eval <<-METHOD
|
19
|
+
def #{object}(object)
|
20
|
+
find(object)
|
21
|
+
self
|
22
|
+
end
|
23
|
+
METHOD
|
24
|
+
end
|
25
|
+
|
26
|
+
CONNECTION_TYPES.each do |object|
|
27
|
+
class_eval <<-METHOD
|
28
|
+
def #{object}(object)
|
29
|
+
connection(object)
|
30
|
+
self
|
31
|
+
end
|
32
|
+
METHOD
|
33
|
+
end
|
34
|
+
|
35
|
+
def metadata
|
36
|
+
@params.merge!({:metadata => '1'})
|
37
|
+
self
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
metadata
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fbgraph
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nicolas Santa
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-05-07 00:00:00 -03:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: oauth2
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
description: A Gem for Facebook Open Graph API
|
26
|
+
email: nicolas55ar@gmail.com
|
27
|
+
executables: []
|
28
|
+
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- README
|
33
|
+
- lib/fbgraph.rb
|
34
|
+
- lib/fbgraph/authorization.rb
|
35
|
+
- lib/fbgraph/base.rb
|
36
|
+
- lib/fbgraph/client.rb
|
37
|
+
- lib/fbgraph/search.rb
|
38
|
+
- lib/fbgraph/selection.rb
|
39
|
+
files:
|
40
|
+
- README
|
41
|
+
- Rakefile
|
42
|
+
- lib/fbgraph.rb
|
43
|
+
- lib/fbgraph/authorization.rb
|
44
|
+
- lib/fbgraph/base.rb
|
45
|
+
- lib/fbgraph/client.rb
|
46
|
+
- lib/fbgraph/search.rb
|
47
|
+
- lib/fbgraph/selection.rb
|
48
|
+
- specs/lib/fbauth/authorization_spec.rb
|
49
|
+
- specs/lib/fbauth/base_spec.rb
|
50
|
+
- specs/lib/fbauth/search_spec.rb
|
51
|
+
- Manifest
|
52
|
+
- fbgraph.gemspec
|
53
|
+
has_rdoc: true
|
54
|
+
homepage: http://github.com/nsanta/fbgraph
|
55
|
+
licenses: []
|
56
|
+
|
57
|
+
post_install_message:
|
58
|
+
rdoc_options:
|
59
|
+
- --line-numbers
|
60
|
+
- --inline-source
|
61
|
+
- --title
|
62
|
+
- Fbgraph
|
63
|
+
- --main
|
64
|
+
- README
|
65
|
+
require_paths:
|
66
|
+
- lib
|
67
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: "0"
|
72
|
+
version:
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: "1.2"
|
78
|
+
version:
|
79
|
+
requirements: []
|
80
|
+
|
81
|
+
rubyforge_project: fbgraph
|
82
|
+
rubygems_version: 1.3.5
|
83
|
+
signing_key:
|
84
|
+
specification_version: 3
|
85
|
+
summary: A Gem for Facebook Open Graph API
|
86
|
+
test_files: []
|
87
|
+
|