infomeme_client 0.2.6 → 0.2.8
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/VERSION +1 -1
- data/infomeme_client.gemspec +3 -3
- data/lib/infomeme_client/communication.rb +69 -67
- metadata +11 -11
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.8
|
data/infomeme_client.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{infomeme_client}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.8"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Infomeme Ltd."]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-04-26}
|
13
13
|
s.description = %q{A RubyGem for implementing both Infomeme client and meme applications.
|
14
14
|
More coming soon...}
|
15
15
|
s.email = %q{infomeme@infomeme.com}
|
@@ -76,7 +76,7 @@ Gem::Specification.new do |s|
|
|
76
76
|
]
|
77
77
|
s.homepage = %q{https://api.infomeme.com}
|
78
78
|
s.require_paths = ["lib"]
|
79
|
-
s.rubygems_version = %q{1.
|
79
|
+
s.rubygems_version = %q{1.5.3}
|
80
80
|
s.summary = %q{A RubyGem for implementing both Infomeme client and meme applications.}
|
81
81
|
s.test_files = [
|
82
82
|
"test/helper.rb",
|
@@ -1,75 +1,77 @@
|
|
1
1
|
module InfomemeClient::Communication
|
2
|
-
|
3
|
-
|
2
|
+
def get(path, headers = {})
|
3
|
+
request(:get, path, headers)
|
4
|
+
end
|
5
|
+
|
6
|
+
def post(path, body = "", headers = {})
|
7
|
+
request(:post, path, body, headers)
|
8
|
+
end
|
9
|
+
|
10
|
+
def put(path, body = "", headers = {})
|
11
|
+
request(:put, path, body, headers)
|
12
|
+
end
|
13
|
+
|
14
|
+
def request(method, path, *args)
|
15
|
+
token_request(token, method, path, *args)
|
16
|
+
end
|
17
|
+
|
18
|
+
def handle_response(method, path, *args, &block)
|
19
|
+
response = request(method, path, *args)
|
20
|
+
response.raise_error
|
21
|
+
if block_given?
|
22
|
+
if block.arity == 1
|
23
|
+
yield response
|
24
|
+
else
|
25
|
+
yield unless response.error?
|
26
|
+
end
|
27
|
+
else
|
28
|
+
response
|
4
29
|
end
|
5
|
-
|
6
|
-
|
7
|
-
|
30
|
+
end
|
31
|
+
|
32
|
+
def extract_from_response(extract, method, path, *args)
|
33
|
+
handle_response(method, path, *args) do |resp|
|
34
|
+
resp.extract(extract) unless resp.error?
|
8
35
|
end
|
9
|
-
|
10
|
-
|
11
|
-
|
36
|
+
end
|
37
|
+
|
38
|
+
def extract_or_response(extract, method, path, options, headers = {})
|
39
|
+
no_extract = options[:no_extract] || false
|
40
|
+
options.delete(:no_extract)
|
41
|
+
if [:put, :post].include?(method.to_sym)
|
42
|
+
args = [method, path, options, headers]
|
43
|
+
else
|
44
|
+
args = [method, finalize_get_url(path, options), headers]
|
12
45
|
end
|
13
|
-
|
14
|
-
|
15
|
-
|
46
|
+
if no_extract
|
47
|
+
handle_response(*args)
|
48
|
+
else
|
49
|
+
extract_from_response(*args.unshift(extract))
|
16
50
|
end
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
else
|
28
|
-
response
|
29
|
-
end
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
def token_request(token, method, path, *args)
|
55
|
+
body = [:post, :put].include?(method.to_sym) ? (args.shift || {}) : {}
|
56
|
+
headers = args.shift || {}
|
57
|
+
headers.store("Accept", "application/json") #override to use json
|
58
|
+
if [:post, :put].include?(method.to_sym) && (! headers.key?("Content-Type") || headers["Content-Type"] == "application/json")
|
59
|
+
body = body.to_json unless body.is_a?(String)
|
60
|
+
headers.store("Content-Type", "application/json")
|
30
61
|
end
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
62
|
+
args.unshift headers
|
63
|
+
args.unshift body if [:post, :put].include?(method.to_sym)
|
64
|
+
begin
|
65
|
+
resp = token.request(method, path, *args).body
|
66
|
+
InfomemeClient::Response.new JSON.parse(resp)
|
67
|
+
rescue => e
|
68
|
+
InfomemeClient::Response.new e
|
36
69
|
end
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
args = [method, finalize_get_url(path, options), headers]
|
45
|
-
end
|
46
|
-
if no_extract
|
47
|
-
handle_response *args
|
48
|
-
else
|
49
|
-
extract_from_response *args.unshift(extract)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
def token_request(token, method, path, *args)
|
55
|
-
body = [:post, :put].include?(method.to_sym) ? (args.shift || {}) : {}
|
56
|
-
headers = args.shift || {}
|
57
|
-
headers.store("Accept", "application/json") #override to use json
|
58
|
-
if [:post, :put].include?(method.to_sym) && (! headers.key?("Content-Type") || headers["Content-Type"] == "application/json")
|
59
|
-
body = body.to_json unless body.is_a?(String)
|
60
|
-
headers.store("Content-Type", "application/json")
|
61
|
-
end
|
62
|
-
args.unshift headers
|
63
|
-
args.unshift body if [:post, :put].include?(method.to_sym)
|
64
|
-
begin
|
65
|
-
resp = token.request(method, path, *args).body
|
66
|
-
InfomemeClient::Response.new JSON.parse(resp)
|
67
|
-
rescue => e
|
68
|
-
InfomemeClient::Response.new e
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def finalize_get_url(url, params)
|
73
|
-
url + (url.include?("?") ? "&" : "?") + params.collect {|key, val| "#{key.to_s}=#{CGI.escape(val.to_s)}"}.join("&")
|
74
|
-
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def finalize_get_url(url, params)
|
73
|
+
url ||= ""
|
74
|
+
url + (url.include?("?") ? "&" : "?") + params.collect {|key, val| "#{key.to_s}=#{CGI.escape(val.to_s)}"}.join("&")
|
75
|
+
end
|
76
|
+
|
75
77
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: infomeme_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-04-26 00:00:00.000000000 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: oauth
|
17
|
-
requirement: &
|
17
|
+
requirement: &22466900 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *22466900
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: json
|
28
|
-
requirement: &
|
28
|
+
requirement: &22466400 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *22466400
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: multipart-post
|
39
|
-
requirement: &
|
39
|
+
requirement: &22465900 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *22465900
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: mime-types
|
50
|
-
requirement: &
|
50
|
+
requirement: &22465400 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *22465400
|
59
59
|
description: ! "A RubyGem for implementing both Infomeme client and meme applications.\n
|
60
60
|
More coming soon..."
|
61
61
|
email: infomeme@infomeme.com
|
@@ -141,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
141
141
|
version: '0'
|
142
142
|
requirements: []
|
143
143
|
rubyforge_project:
|
144
|
-
rubygems_version: 1.
|
144
|
+
rubygems_version: 1.5.3
|
145
145
|
signing_key:
|
146
146
|
specification_version: 3
|
147
147
|
summary: A RubyGem for implementing both Infomeme client and meme applications.
|