wacky_graph 0.1
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/wacky_graph.rb +2 -0
- data/lib/wacky_graph/error.rb +15 -0
- data/lib/wacky_graph/request.rb +51 -0
- metadata +49 -0
data/lib/wacky_graph.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
module WackyGraph
|
2
|
+
class GraphError < StandardError
|
3
|
+
attr_accessor :message, :type, :code, :error_subcode
|
4
|
+
# attr_accessor :type
|
5
|
+
# attr_accessor :code
|
6
|
+
# attr_accessor :error_subcode
|
7
|
+
|
8
|
+
def initialize(message, type, code, error_subcode)
|
9
|
+
@message = message
|
10
|
+
@type = type
|
11
|
+
@code = code
|
12
|
+
@error_subcode = error_subcode
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
|
3
|
+
module WackyGraph
|
4
|
+
GRAPH_BASE_URI = 'http://graph.facebook.com'
|
5
|
+
SECURE_GRAPH_BASE_URI = 'https://graph.facebook.com'
|
6
|
+
|
7
|
+
class GraphRequest
|
8
|
+
attr_accessor :oauth_token
|
9
|
+
|
10
|
+
def initialize(oauth_token)
|
11
|
+
@oauth_token = oauth_token
|
12
|
+
end
|
13
|
+
|
14
|
+
def get(path, options = {})
|
15
|
+
uri = build_uri(path, options)
|
16
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
17
|
+
http.use_ssl = true if uri.scheme == 'https'
|
18
|
+
request = Net::HTTP::Get.new(uri.request_uri)
|
19
|
+
response = http.request(request)
|
20
|
+
data = JSON.parse(response.body)
|
21
|
+
case response
|
22
|
+
when Net::HTTPOK
|
23
|
+
return data
|
24
|
+
when Net::HTTPBadRequest
|
25
|
+
exception = GraphError.new(data["error"]["message"], data["error"]["type"], data["error"]["code"], data["error"]["error_subcode"])
|
26
|
+
raise exception
|
27
|
+
else
|
28
|
+
raise "Unhandled response from Facebook Graph API"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def post(path, params)
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def build_uri(path, options)
|
39
|
+
options[:params] = {} if options[:params].nil?
|
40
|
+
if options[:no_authorization] || @oauth_token.nil?
|
41
|
+
base_uri = GRAPH_BASE_URI
|
42
|
+
else
|
43
|
+
base_uri = SECURE_GRAPH_BASE_URI
|
44
|
+
options[:params][:access_token] = @oauth_token
|
45
|
+
end
|
46
|
+
uri = URI(base_uri + path)
|
47
|
+
uri.query = URI.encode_www_form(options[:params])
|
48
|
+
uri
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
metadata
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wacky_graph
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Matt Rushton
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-06-26 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Wacky Graph is a gem extracted from Wacky Words Friends for using the
|
15
|
+
Facebook graph API.
|
16
|
+
email:
|
17
|
+
- mrushton7@yahoo.com
|
18
|
+
executables: []
|
19
|
+
extensions: []
|
20
|
+
extra_rdoc_files: []
|
21
|
+
files:
|
22
|
+
- lib/wacky_graph.rb
|
23
|
+
- lib/wacky_graph/error.rb
|
24
|
+
- lib/wacky_graph/request.rb
|
25
|
+
homepage: http://www.wackywordsfriends.com
|
26
|
+
licenses: []
|
27
|
+
post_install_message:
|
28
|
+
rdoc_options: []
|
29
|
+
require_paths:
|
30
|
+
- lib
|
31
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
32
|
+
none: false
|
33
|
+
requirements:
|
34
|
+
- - ! '>='
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '0'
|
37
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ! '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
requirements: []
|
44
|
+
rubyforge_project:
|
45
|
+
rubygems_version: 1.8.24
|
46
|
+
signing_key:
|
47
|
+
specification_version: 3
|
48
|
+
summary: Gem for the Facebook graph API.
|
49
|
+
test_files: []
|