fanforce 0.5.2 → 0.5.3
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/README.md +40 -2
- data/lib/fanforce/errors.rb +1 -1
- data/lib/fanforce/main.rb +7 -33
- data/lib/fanforce/response.rb +88 -0
- data/lib/fanforce/utils.rb +6 -6
- data/lib/fanforce/version.rb +1 -1
- metadata +2 -1
data/README.md
CHANGED
@@ -84,12 +84,50 @@ BadRequestError
|
|
84
84
|
|
85
85
|
## Utils
|
86
86
|
|
87
|
-
ff.
|
87
|
+
ff.get_url(path, query_params)
|
88
88
|
|
89
|
-
ff.
|
89
|
+
ff.curl_command(method, path, query_params)
|
90
90
|
|
91
91
|
ff.validate_auth
|
92
92
|
|
93
|
+
ff.to_query_string
|
94
|
+
|
95
|
+
ff.compile_jquery_tmpls
|
96
|
+
|
97
|
+
ff.decode_json
|
98
|
+
|
99
|
+
ff.parse_url
|
100
|
+
|
101
|
+
ff.remove_sensitive_params
|
102
|
+
|
103
|
+
ff.remove_internal_params
|
104
|
+
|
105
|
+
## Handling Results
|
106
|
+
|
107
|
+
response.result
|
108
|
+
response.results
|
109
|
+
|
110
|
+
response.total_results
|
111
|
+
response.current_results
|
112
|
+
response.current_page
|
113
|
+
response.total_pages
|
114
|
+
|
115
|
+
## Paging
|
116
|
+
|
117
|
+
response.prev_url
|
118
|
+
response.next_url
|
119
|
+
|
120
|
+
## Logging
|
121
|
+
|
122
|
+
By default logging is turned off.
|
123
|
+
```ruby
|
124
|
+
Fanforce.config do |config|
|
125
|
+
config.logging = true
|
126
|
+
end
|
127
|
+
```
|
128
|
+
|
129
|
+
For more info, see RestClient.logging.
|
130
|
+
|
93
131
|
## More Information
|
94
132
|
|
95
133
|
Visit the Fanforce Developers site to explore the full API access methods available.
|
data/lib/fanforce/errors.rb
CHANGED
@@ -13,7 +13,7 @@ class Fanforce
|
|
13
13
|
rescue Exception => e
|
14
14
|
@response = "Error decoding JSON in Fanforce gem: #{e.message}"
|
15
15
|
end
|
16
|
-
@request_url = "#{@path}?#{Fanforce::Utils.
|
16
|
+
@request_url = "#{@path}?#{Fanforce::Utils.to_query_string(@query_params)}"
|
17
17
|
super(@response.is_a?(Hash) ? @response[:msg] : @response)
|
18
18
|
end
|
19
19
|
|
data/lib/fanforce/main.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require_relative 'errors'
|
2
2
|
require_relative 'utils'
|
3
|
+
require_relative 'response'
|
3
4
|
require 'rest-client'
|
4
5
|
|
5
6
|
class Fanforce
|
@@ -23,10 +24,9 @@ class Fanforce
|
|
23
24
|
end
|
24
25
|
|
25
26
|
def get(path, req_params={})
|
26
|
-
url = complete_url(path)
|
27
27
|
req_params = apply_auth(req_params)
|
28
|
-
RestClient.get(url,
|
29
|
-
|
28
|
+
RestClient.get(url(path, req_params), :accept => :json) do |response, request, result, &block|
|
29
|
+
Fanforce::Response.new(response, request, complete_url(path), req_params)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -44,7 +44,7 @@ class Fanforce
|
|
44
44
|
url = complete_url(path)
|
45
45
|
req_params = apply_auth(req_params)
|
46
46
|
RestClient.post(url, req_params.to_json, :content_type => :json, :accept => :json) do |response, request, result, &block|
|
47
|
-
|
47
|
+
Fanforce::Response.new(response, request, url, req_params)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -52,15 +52,15 @@ class Fanforce
|
|
52
52
|
url = complete_url(path)
|
53
53
|
req_params = apply_auth(req_params)
|
54
54
|
RestClient.put(url, req_params.to_json, :content_type => :json, :accept => :json) do |response, request, result, &block|
|
55
|
-
|
55
|
+
Fanforce::Response.new(response, request, url, req_params)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
59
|
def delete(path, req_params={})
|
60
60
|
url = complete_url(path)
|
61
61
|
req_params = apply_auth(req_params)
|
62
|
-
RestClient.delete(url, {:params => req_params, :accept => :json}) do |response, request, result, &block|
|
63
|
-
|
62
|
+
RestClient.delete(url, {:params => to_query_string(req_params), :accept => :json}) do |response, request, result, &block|
|
63
|
+
Fanforce::Response.new(response, request, url, req_params)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
@@ -74,32 +74,6 @@ class Fanforce
|
|
74
74
|
{success: true}
|
75
75
|
end
|
76
76
|
|
77
|
-
def handle_response(response, request, url, req_params)
|
78
|
-
log request.url
|
79
|
-
log request.payload.to_json
|
80
|
-
case response.code
|
81
|
-
when 200, 201
|
82
|
-
begin
|
83
|
-
response = decode_json(response)
|
84
|
-
rescue
|
85
|
-
raise UnknownError.new(response, request, url, req_params)
|
86
|
-
end
|
87
|
-
when 400
|
88
|
-
raise BadRequestError.new(response, request, url, req_params)
|
89
|
-
when 401
|
90
|
-
raise Unauthorized.new(response, request, url, req_params)
|
91
|
-
when 403
|
92
|
-
raise ForbiddenError.new(response, request, url, req_params)
|
93
|
-
when 404
|
94
|
-
raise NotFoundError.new(response, request, url, req_params)
|
95
|
-
when 422
|
96
|
-
raise UnprocessableEntityError.new(response, request, url, req_params)
|
97
|
-
else
|
98
|
-
raise UnknownError.new(response, request, url, req_params)
|
99
|
-
end
|
100
|
-
response
|
101
|
-
end
|
102
|
-
|
103
77
|
def auth(auth_data=nil)
|
104
78
|
@auth_hash ||= {}
|
105
79
|
return @auth_hash if is_blank?(auth_data)
|
@@ -0,0 +1,88 @@
|
|
1
|
+
class Fanforce::Response
|
2
|
+
|
3
|
+
def initialize(response, request, url, req_params)
|
4
|
+
case response.code
|
5
|
+
when 200, 201
|
6
|
+
begin
|
7
|
+
@raw_response = Fanforce::Utils.decode_json(response)
|
8
|
+
if !@raw_response[:results].nil?
|
9
|
+
@results = @raw_response[:results]
|
10
|
+
@current_results = @raw_response[:current_results]
|
11
|
+
@total_results = @raw_response[:total_results]
|
12
|
+
@current_page = @raw_response[:current_page]
|
13
|
+
@total_pages = @raw_response[:total_pages]
|
14
|
+
if request.method == :get and @raw_response[:total_pages] > @raw_response[:current_page]
|
15
|
+
next_page = @raw_response[:current_page] + 1
|
16
|
+
@next_url = "#{url}?#{Fanforce::Utils.to_query_string(req_params.merge(page: next_page))}"
|
17
|
+
end
|
18
|
+
if request.method == :get and @raw_response[:current_page] > 1
|
19
|
+
prev_page = @raw_response[:current_page] - 1
|
20
|
+
@prev_url = "#{url}?#{Fanforce::Utils.to_query_string(req_params.merge(page: prev_page))}"
|
21
|
+
end
|
22
|
+
else
|
23
|
+
@result = raw_json
|
24
|
+
end
|
25
|
+
rescue
|
26
|
+
raise Fanforce::UnknownError.new(response, request, url, req_params)
|
27
|
+
end
|
28
|
+
when 400
|
29
|
+
raise Fanforce::BadRequestError.new(response, request, url, req_params)
|
30
|
+
when 401
|
31
|
+
raise Fanforce::Unauthorized.new(response, request, url, req_params)
|
32
|
+
when 403
|
33
|
+
raise Fanforce::ForbiddenError.new(response, request, url, req_params)
|
34
|
+
when 404
|
35
|
+
raise Fanforce::NotFoundError.new(response, request, url, req_params)
|
36
|
+
when 422
|
37
|
+
raise Fanforce::UnprocessableEntityError.new(response, request, url, req_params)
|
38
|
+
else
|
39
|
+
raise Fanforce::UnknownError.new(response, request, url, req_params)
|
40
|
+
end
|
41
|
+
response
|
42
|
+
end
|
43
|
+
|
44
|
+
def to_json
|
45
|
+
to_hash.to_json
|
46
|
+
end
|
47
|
+
|
48
|
+
def to_hash
|
49
|
+
@raw_response
|
50
|
+
end
|
51
|
+
|
52
|
+
def [](key)
|
53
|
+
@raw_response[key]
|
54
|
+
end
|
55
|
+
|
56
|
+
def result
|
57
|
+
@result || (raise NoMethodError, 'This API response returns more than 1 record. Try using "results".')
|
58
|
+
end
|
59
|
+
|
60
|
+
def results
|
61
|
+
@results || (raise NoMethodError, 'This API response only returns 1 record. Try using "result".')
|
62
|
+
end
|
63
|
+
|
64
|
+
def total_results
|
65
|
+
@total_results || 1
|
66
|
+
end
|
67
|
+
|
68
|
+
def current_results
|
69
|
+
@current_results || 1
|
70
|
+
end
|
71
|
+
|
72
|
+
def current_page
|
73
|
+
@current_page || 1
|
74
|
+
end
|
75
|
+
|
76
|
+
def total_pages
|
77
|
+
@total_pages || 1
|
78
|
+
end
|
79
|
+
|
80
|
+
def prev_url
|
81
|
+
@prev_url || nil
|
82
|
+
end
|
83
|
+
|
84
|
+
def next_url
|
85
|
+
@next_url || nil
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
data/lib/fanforce/utils.rb
CHANGED
@@ -106,7 +106,7 @@ module Fanforce::Utils
|
|
106
106
|
|
107
107
|
def to_param(obj, namespace=nil)
|
108
108
|
if obj.is_a?(Array)
|
109
|
-
collect { |e| e
|
109
|
+
collect { |e| to_param(e) }.join '/'
|
110
110
|
elsif obj.is_a?(Hash)
|
111
111
|
to_query_string(obj, namespace)
|
112
112
|
elsif obj.is_a?(NilClass)
|
@@ -121,7 +121,7 @@ module Fanforce::Utils
|
|
121
121
|
end
|
122
122
|
|
123
123
|
def log(str)
|
124
|
-
puts "Fanforce: #{str}"
|
124
|
+
#puts "Fanforce: #{str}"
|
125
125
|
end
|
126
126
|
|
127
127
|
def decode_json(str, symbolize_keys=true)
|
@@ -155,13 +155,13 @@ module Fanforce::Utils
|
|
155
155
|
def curl_command(method, url, req_params)
|
156
156
|
case method
|
157
157
|
when :get
|
158
|
-
"curl \"#{url}?#{
|
158
|
+
"curl \"#{url}?#{to_query_string(req_params)}\""
|
159
159
|
when :post
|
160
|
-
"curl -X POST -d \"#{
|
160
|
+
"curl -X POST -d \"#{to_query_string(req_params)}\" #{url}"
|
161
161
|
when :put
|
162
|
-
"curl -X PUT -d \"#{
|
162
|
+
"curl -X PUT -d \"#{to_query_string(req_params)}\" #{url.to_json}"
|
163
163
|
when :delete
|
164
|
-
"curl --request DELETE \"#{url}?#{
|
164
|
+
"curl --request DELETE \"#{url}?#{to_query_string(req_params)}\""
|
165
165
|
else
|
166
166
|
raise 'Unknown request method'
|
167
167
|
end
|
data/lib/fanforce/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fanforce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- lib/fanforce/config.rb
|
95
95
|
- lib/fanforce/errors.rb
|
96
96
|
- lib/fanforce/main.rb
|
97
|
+
- lib/fanforce/response.rb
|
97
98
|
- lib/fanforce/utils.rb
|
98
99
|
- lib/fanforce/version.rb
|
99
100
|
- lib/ff_globals.rb
|