joelind-koala 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +88 -0
- data/LICENSE +22 -0
- data/Manifest +29 -0
- data/Rakefile +17 -0
- data/init.rb +2 -0
- data/joelind-koala.gemspec +30 -0
- data/koala.gemspec +30 -0
- data/lib/koala/graph_api.rb +131 -0
- data/lib/koala/http_services.rb +70 -0
- data/lib/koala/realtime_updates.rb +95 -0
- data/lib/koala/rest_api.rb +23 -0
- data/lib/koala.rb +292 -0
- data/readme.md +104 -0
- data/spec/facebook_data.yml +44 -0
- data/spec/koala/api_base_tests.rb +80 -0
- data/spec/koala/graph_and_rest_api/graph_and_rest_api_no_token_tests.rb +10 -0
- data/spec/koala/graph_and_rest_api/graph_and_rest_api_with_token_tests.rb +11 -0
- data/spec/koala/graph_api/graph_api_no_access_token_tests.rb +105 -0
- data/spec/koala/graph_api/graph_api_with_access_token_tests.rb +139 -0
- data/spec/koala/live_testing_data_helper.rb +15 -0
- data/spec/koala/net_http_service_tests.rb +181 -0
- data/spec/koala/oauth/oauth_tests.rb +308 -0
- data/spec/koala/realtime_updates/realtime_updates_tests.rb +187 -0
- data/spec/koala/rest_api/rest_api_no_access_token_tests.rb +94 -0
- data/spec/koala/rest_api/rest_api_with_access_token_tests.rb +36 -0
- data/spec/koala_spec.rb +18 -0
- data/spec/koala_spec_helper.rb +30 -0
- data/spec/koala_spec_without_mocks.rb +19 -0
- data/spec/mock_facebook_responses.yml +228 -0
- data/spec/mock_http_service.rb +81 -0
- metadata +103 -0
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module Koala
|
5
|
+
module MockHTTPService
|
6
|
+
# Mocks all HTTP requests for with koala_spec_with_mocks.rb
|
7
|
+
|
8
|
+
# Mocked values to be included in TEST_DATA used in specs
|
9
|
+
ACCESS_TOKEN = '*'
|
10
|
+
OAUTH_CODE = 'OAUTHCODE'
|
11
|
+
|
12
|
+
# Loads testing data
|
13
|
+
TEST_DATA = YAML.load_file(File.join(File.dirname(__FILE__), 'facebook_data.yml'))
|
14
|
+
TEST_DATA.merge!('oauth_token' => Koala::MockHTTPService::ACCESS_TOKEN)
|
15
|
+
TEST_DATA['oauth_test_data'].merge!('code' => Koala::MockHTTPService::OAUTH_CODE)
|
16
|
+
|
17
|
+
# Useful in mock_facebook_responses.yml
|
18
|
+
OAUTH_DATA = TEST_DATA['oauth_test_data']
|
19
|
+
OAUTH_DATA.merge!({
|
20
|
+
'app_access_token' => Koala::MockHTTPService::ACCESS_TOKEN,
|
21
|
+
'session_key' => "session_key",
|
22
|
+
'multiple_session_keys' => ["session_key", "session_key_2"]
|
23
|
+
})
|
24
|
+
APP_ID = OAUTH_DATA['app_id']
|
25
|
+
SECRET = OAUTH_DATA['secret']
|
26
|
+
SUBSCRIPTION_DATA = TEST_DATA["subscription_test_data"]
|
27
|
+
|
28
|
+
# Loads the mock response data via ERB to substitue values for TEST_DATA (see oauth/access_token)
|
29
|
+
mock_response_file_path = File.join(File.dirname(__FILE__), 'mock_facebook_responses.yml')
|
30
|
+
RESPONSES = YAML.load(ERB.new(IO.read(mock_response_file_path)).result(binding))
|
31
|
+
|
32
|
+
def self.included(base)
|
33
|
+
base.class_eval do
|
34
|
+
|
35
|
+
def self.make_request(path, args, verb, options = {})
|
36
|
+
path = 'root' if path == ''
|
37
|
+
verb ||= 'get'
|
38
|
+
server = options[:rest_api] ? 'rest_api' : 'graph_api'
|
39
|
+
with_token = args.delete('access_token') == ACCESS_TOKEN ? 'with_token' : 'no_token'
|
40
|
+
|
41
|
+
# Assume format is always JSON
|
42
|
+
args.delete('format')
|
43
|
+
|
44
|
+
# Create a hash key for the arguments
|
45
|
+
args = args.empty? ? 'no_args' : args.sort{|a,b| a[0].to_s <=> b[0].to_s }.map{|arr| arr.join('=')}.join('&')
|
46
|
+
|
47
|
+
begin
|
48
|
+
response = RESPONSES[server][path][args][verb][with_token]
|
49
|
+
|
50
|
+
# Raises an error of with_token/no_token key is missing
|
51
|
+
raise NoMethodError unless response
|
52
|
+
|
53
|
+
# create response class object
|
54
|
+
response_object = if response.is_a? String
|
55
|
+
Koala::Response.new(200, response, {})
|
56
|
+
else
|
57
|
+
Koala::Response.new(response["code"] || 200, response["body"] || "", response["headers"] || {})
|
58
|
+
end
|
59
|
+
|
60
|
+
rescue NoMethodError
|
61
|
+
# Raises an error message with the place in the data YML
|
62
|
+
# to place a mock as well as a URL to request from
|
63
|
+
# Facebook's servers for the actual data
|
64
|
+
# (Don't forget to replace ACCESS_TOKEN with a real access token)
|
65
|
+
|
66
|
+
data_trace = [server, path, args, verb, with_token] * ': '
|
67
|
+
|
68
|
+
args = args == 'no_args' ? '' : "#{args}&"
|
69
|
+
args += 'format=json'
|
70
|
+
args += "&access_token=#{ACCESS_TOKEN}" if with_token
|
71
|
+
|
72
|
+
raise "Missing a mock response for #{data_trace}\nAPI PATH: #{[path, args].join('?')}"
|
73
|
+
end
|
74
|
+
|
75
|
+
response_object
|
76
|
+
end
|
77
|
+
|
78
|
+
end # class_eval
|
79
|
+
end # included
|
80
|
+
end
|
81
|
+
end
|
metadata
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: joelind-koala
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 8
|
8
|
+
- 1
|
9
|
+
version: 0.8.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Alex Koppel, Chris Baclig, Rafi Jacoby, Context Optional, Joe Lind
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-08-15 00:00:00 -04:00
|
18
|
+
default_executable:
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: Koala is a lightweight, flexible Ruby SDK for Facebook. It allows read/write access to the social graph via the Graph API and the older REST API, as well as support for realtime updates and OAuth and Facebook Connect authentication. Koala is fully tested and supports Net::HTTP and Typhoeus connections out of the box and can accept custom modules for other services. Build of 0.8.1 for testing compatibility.
|
22
|
+
email: joelind@gmail.com
|
23
|
+
executables: []
|
24
|
+
|
25
|
+
extensions: []
|
26
|
+
|
27
|
+
extra_rdoc_files:
|
28
|
+
- CHANGELOG
|
29
|
+
- LICENSE
|
30
|
+
- lib/koala.rb
|
31
|
+
- lib/koala/graph_api.rb
|
32
|
+
- lib/koala/http_services.rb
|
33
|
+
- lib/koala/realtime_updates.rb
|
34
|
+
- lib/koala/rest_api.rb
|
35
|
+
files:
|
36
|
+
- CHANGELOG
|
37
|
+
- LICENSE
|
38
|
+
- Manifest
|
39
|
+
- Rakefile
|
40
|
+
- init.rb
|
41
|
+
- koala.gemspec
|
42
|
+
- lib/koala.rb
|
43
|
+
- lib/koala/graph_api.rb
|
44
|
+
- lib/koala/http_services.rb
|
45
|
+
- lib/koala/realtime_updates.rb
|
46
|
+
- lib/koala/rest_api.rb
|
47
|
+
- readme.md
|
48
|
+
- spec/facebook_data.yml
|
49
|
+
- spec/koala/api_base_tests.rb
|
50
|
+
- spec/koala/graph_and_rest_api/graph_and_rest_api_no_token_tests.rb
|
51
|
+
- spec/koala/graph_and_rest_api/graph_and_rest_api_with_token_tests.rb
|
52
|
+
- spec/koala/graph_api/graph_api_no_access_token_tests.rb
|
53
|
+
- spec/koala/graph_api/graph_api_with_access_token_tests.rb
|
54
|
+
- spec/koala/live_testing_data_helper.rb
|
55
|
+
- spec/koala/net_http_service_tests.rb
|
56
|
+
- spec/koala/oauth/oauth_tests.rb
|
57
|
+
- spec/koala/realtime_updates/realtime_updates_tests.rb
|
58
|
+
- spec/koala/rest_api/rest_api_no_access_token_tests.rb
|
59
|
+
- spec/koala/rest_api/rest_api_with_access_token_tests.rb
|
60
|
+
- spec/koala_spec.rb
|
61
|
+
- spec/koala_spec_helper.rb
|
62
|
+
- spec/koala_spec_without_mocks.rb
|
63
|
+
- spec/mock_facebook_responses.yml
|
64
|
+
- spec/mock_http_service.rb
|
65
|
+
- joelind-koala.gemspec
|
66
|
+
has_rdoc: true
|
67
|
+
homepage: http://github.com/joelind/koala
|
68
|
+
licenses: []
|
69
|
+
|
70
|
+
post_install_message:
|
71
|
+
rdoc_options:
|
72
|
+
- --line-numbers
|
73
|
+
- --inline-source
|
74
|
+
- --title
|
75
|
+
- Joelind-koala
|
76
|
+
- --main
|
77
|
+
- readme.md
|
78
|
+
require_paths:
|
79
|
+
- lib
|
80
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
segments:
|
85
|
+
- 0
|
86
|
+
version: "0"
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
segments:
|
92
|
+
- 1
|
93
|
+
- 2
|
94
|
+
version: "1.2"
|
95
|
+
requirements: []
|
96
|
+
|
97
|
+
rubyforge_project: joelind-koala
|
98
|
+
rubygems_version: 1.3.6
|
99
|
+
signing_key:
|
100
|
+
specification_version: 3
|
101
|
+
summary: A lightweight, flexible library for Facebook with support for the Graph API, the old REST API, realtime updates, and OAuth validation.
|
102
|
+
test_files: []
|
103
|
+
|