paypal-sdk-core 0.2.1 → 0.2.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.
- checksums.yaml +15 -0
- data/CHANGELOG.txt +16 -0
- data/lib/generators/paypal/sdk/templates/paypal.rb +2 -2
- data/lib/generators/paypal/sdk/templates/paypal.yml +2 -2
- data/lib/paypal-sdk-core.rb +17 -25
- data/lib/paypal-sdk/core/api.rb +20 -0
- data/lib/paypal-sdk/core/api/base.rb +0 -2
- data/lib/paypal-sdk/core/api/rest.rb +30 -13
- data/lib/paypal-sdk/core/config.rb +25 -6
- data/lib/paypal-sdk/core/credential.rb +16 -0
- data/lib/paypal-sdk/core/openid_connect.rb +116 -0
- data/lib/paypal-sdk/core/openid_connect/api.rb +41 -0
- data/lib/paypal-sdk/core/openid_connect/data_types.rb +72 -0
- data/lib/paypal-sdk/core/openid_connect/get_api.rb +28 -0
- data/lib/paypal-sdk/core/openid_connect/request_data_type.rb +52 -0
- data/lib/paypal-sdk/core/openid_connect/set_api.rb +36 -0
- data/lib/paypal-sdk/core/util.rb +11 -0
- data/lib/paypal-sdk/core/version.rb +1 -1
- data/spec/core/api/platform_spec.rb +0 -1
- data/spec/core/api/rest_spec.rb +6 -0
- data/spec/core/config_spec.rb +48 -0
- data/spec/core/openid_connect_spec.rb +88 -0
- data/spec/log/rest_http.log +29 -30
- data/spec/log/test.log +670 -1970
- data/spec/spec_helper.rb +2 -2
- metadata +56 -50
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
N2FlZTU2MWY0MmE1ZmVkOTc4YTU0YTBiYzMwYWI1ODdhN2Y5MGNlZQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
YTVlMzA0MzY0OWU2ZGU0MDFmOTlmZDljNmY3YTE1ZTUzMjBkOWJmMA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
Mzk3ODAxOTEyZmMyNzdlMzVkMTUyNWRjM2VlMmZhMDk0OGRkYWYzMmRjNDlm
|
10
|
+
MGM1ZTdlYTA4Mzk5NzBkOGQzYmM3ZjgxMDU2NWJiMGY1NWVmOWJkNDZlNmYy
|
11
|
+
YTBmZWIxMDZkM2YxNGZmYjE1MmY3NWYwNzQzZjI2MTRlM2M0ZDc=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MTBmMThmZjZhZTRlN2E1N2RjMTIzNzVhNjg2ZDZlMDFkMWZiYmIwNmQyYWU0
|
14
|
+
MzVmYTZiZGNmN2QwMTcwZGU1ODVkYjhlNzAzMjRjNmUwNjNjOWUwZTkwMWVj
|
15
|
+
YjdjZWUyZTEzMmJiYmE4MTkxODIwMjE1NWExZmRjZjRjNWQyMzc=
|
data/CHANGELOG.txt
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
Version 0.2.2 - Apr 25, 2013
|
2
|
+
- Validate token expiry duration on every REST API call
|
3
|
+
- Removed exception handling for Socket and Timeout errors
|
4
|
+
- Added configure and logger methods to PayPal::SDK module
|
5
|
+
- Added PayPal:SDK::OpenIDConnect module
|
6
|
+
|
7
|
+
Version 0.2.1 - Mar 22, 2013
|
8
|
+
- Skip values for undefined members on initializer
|
9
|
+
|
10
|
+
Version 0.1.5 - Jan 28, 2013
|
11
|
+
- Fix OrderedHash issue with ruby 1.8.7
|
12
|
+
|
13
|
+
Version 0.1.4 - Jan 09, 2013
|
14
|
+
|
15
|
+
- Support ruby version 1.8.7
|
16
|
+
- Update IPN Endpoint
|
@@ -1,2 +1,2 @@
|
|
1
|
-
PayPal::SDK
|
2
|
-
PayPal::SDK
|
1
|
+
PayPal::SDK.load("config/paypal.yml", Rails.env)
|
2
|
+
PayPal::SDK.logger = Rails.logger
|
@@ -1,6 +1,6 @@
|
|
1
1
|
test: &default
|
2
2
|
|
3
|
-
# Credentials for
|
3
|
+
# Credentials for REST APIs
|
4
4
|
client_id: EBWKjlELKMYqRNQ6sYvFo64FtaRLRR5BdHEESmha49TM
|
5
5
|
client_secret: EO422dn3gQLgDbuwqTjzrFgFtaRLRR5BdHEESmha49TM
|
6
6
|
|
@@ -8,10 +8,10 @@ test: &default
|
|
8
8
|
mode: sandbox
|
9
9
|
|
10
10
|
# Credentials for Classic APIs
|
11
|
+
app_id: APP-80W284485P519543T
|
11
12
|
username: jb-us-seller_api1.paypal.com
|
12
13
|
password: WX4WTU3S8MY44S7F
|
13
14
|
signature: AFcWxV21C7fd0v3bYYYRCpSSRl31A7yDhhsPUU2XhtMoZXsWHFxu-RWy
|
14
|
-
app_id: APP-80W284485P519543T
|
15
15
|
# # With Certificate
|
16
16
|
# cert_path: "config/cert_key.pem"
|
17
17
|
sandbox_email_address: Platform.sdk.seller@gmail.com
|
data/lib/paypal-sdk-core.rb
CHANGED
@@ -8,39 +8,31 @@ module PayPal
|
|
8
8
|
autoload :Logging, "paypal-sdk/core/logging"
|
9
9
|
autoload :Authentication, "paypal-sdk/core/authentication"
|
10
10
|
autoload :Exceptions, "paypal-sdk/core/exceptions"
|
11
|
+
autoload :OpenIDConnect, "paypal-sdk/core/openid_connect"
|
12
|
+
autoload :API, "paypal-sdk/core/api"
|
13
|
+
autoload :Util, "paypal-sdk/core/util"
|
14
|
+
autoload :Credential, "paypal-sdk/core/credential"
|
11
15
|
|
12
|
-
|
13
|
-
autoload :Base, "paypal-sdk/core/api/base"
|
14
|
-
autoload :Merchant, "paypal-sdk/core/api/merchant"
|
15
|
-
autoload :Platform, "paypal-sdk/core/api/platform"
|
16
|
-
autoload :REST, "paypal-sdk/core/api/rest"
|
17
|
-
autoload :IPN, "paypal-sdk/core/api/ipn"
|
16
|
+
end
|
18
17
|
|
19
|
-
|
20
|
-
autoload :Base, "paypal-sdk/core/api/data_types/base"
|
21
|
-
autoload :Enum, "paypal-sdk/core/api/data_types/enum"
|
22
|
-
autoload :SimpleTypes, "paypal-sdk/core/api/data_types/simple_types"
|
23
|
-
autoload :ArrayWithBlock, "paypal-sdk/core/api/data_types/array_with_block"
|
24
|
-
end
|
25
|
-
end
|
18
|
+
autoload :OpenIDConnect, "paypal-sdk/core/openid_connect"
|
26
19
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
autoload :HTTPHelper, "paypal-sdk/core/util/http_helper"
|
20
|
+
class << self
|
21
|
+
def configure(options = {}, &block)
|
22
|
+
Core::Config.configure(options, &block)
|
31
23
|
end
|
32
24
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
autoload :Signature, "paypal-sdk/core/credential/signature"
|
25
|
+
def load(*args)
|
26
|
+
Core::Config.load(*args)
|
27
|
+
end
|
37
28
|
|
38
|
-
|
39
|
-
|
40
|
-
autoload :Subject, "paypal-sdk/core/credential/third_party/subject"
|
41
|
-
end
|
29
|
+
def logger
|
30
|
+
Core::Config.logger
|
42
31
|
end
|
43
32
|
|
33
|
+
def logger=(log)
|
34
|
+
Core::Config.logger = log
|
35
|
+
end
|
44
36
|
end
|
45
37
|
end
|
46
38
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module PayPal
|
2
|
+
module SDK
|
3
|
+
module Core
|
4
|
+
module API
|
5
|
+
autoload :Base, "paypal-sdk/core/api/base"
|
6
|
+
autoload :Merchant, "paypal-sdk/core/api/merchant"
|
7
|
+
autoload :Platform, "paypal-sdk/core/api/platform"
|
8
|
+
autoload :REST, "paypal-sdk/core/api/rest"
|
9
|
+
autoload :IPN, "paypal-sdk/core/api/ipn"
|
10
|
+
|
11
|
+
module DataTypes
|
12
|
+
autoload :Base, "paypal-sdk/core/api/data_types/base"
|
13
|
+
autoload :Enum, "paypal-sdk/core/api/data_types/enum"
|
14
|
+
autoload :SimpleTypes, "paypal-sdk/core/api/data_types/simple_types"
|
15
|
+
autoload :ArrayWithBlock, "paypal-sdk/core/api/data_types/array_with_block"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -84,8 +84,6 @@ module PayPal::SDK::Core
|
|
84
84
|
payload[:response] = http_call(payload)
|
85
85
|
format_response(payload)
|
86
86
|
payload[:data]
|
87
|
-
rescue Net::HTTPBadGateway, Errno::ECONNRESET, Errno::ECONNABORTED, SocketError => error
|
88
|
-
format_error(error, error.message)
|
89
87
|
end
|
90
88
|
|
91
89
|
# Generate HTTP request for given action and parameters
|
@@ -30,7 +30,7 @@ module PayPal::SDK::Core
|
|
30
30
|
# Clear cached values.
|
31
31
|
def set_config(*args)
|
32
32
|
@token_uri = nil
|
33
|
-
@
|
33
|
+
@token_hash = nil
|
34
34
|
super
|
35
35
|
end
|
36
36
|
|
@@ -45,19 +45,41 @@ module PayPal::SDK::Core
|
|
45
45
|
end
|
46
46
|
|
47
47
|
# Generate Oauth token or Get cached
|
48
|
-
def
|
49
|
-
|
48
|
+
def token_hash
|
49
|
+
validate_token_hash
|
50
|
+
@token_hash ||=
|
50
51
|
begin
|
52
|
+
@token_request_at = Time.now
|
51
53
|
basic_auth = ["#{config.client_id}:#{config.client_secret}"].pack('m').delete("\r\n")
|
52
54
|
token_headers = default_http_header.merge( "Authorization" => "Basic #{basic_auth}" )
|
53
55
|
response = http_call( :method => :post, :uri => token_uri, :body => TOKEN_REQUEST_PARAMS, :header => token_headers )
|
54
|
-
MultiJson.load(response.body)
|
56
|
+
MultiJson.load(response.body, :symbolize_keys => true)
|
55
57
|
end
|
56
58
|
end
|
59
|
+
attr_writer :token_hash
|
60
|
+
|
61
|
+
# Get access token
|
62
|
+
def token
|
63
|
+
token_hash[:access_token]
|
64
|
+
end
|
65
|
+
|
66
|
+
# Get access token type
|
67
|
+
def token_type
|
68
|
+
token_hash[:token_type] || "Bearer"
|
69
|
+
end
|
57
70
|
|
58
71
|
# token setter
|
59
72
|
def token=(new_token)
|
60
|
-
@
|
73
|
+
@token_hash = { :access_token => new_token, :token_type => "Bearer" }
|
74
|
+
end
|
75
|
+
|
76
|
+
# Check token expired or not
|
77
|
+
def validate_token_hash
|
78
|
+
if @token_request_at and
|
79
|
+
@token_hash and @token_hash[:expires_in] and
|
80
|
+
(Time.now - @token_request_at) > @token_hash[:expires_in].to_i
|
81
|
+
@token_hash = nil
|
82
|
+
end
|
61
83
|
end
|
62
84
|
|
63
85
|
# Override the API call to handle Token Expire
|
@@ -66,9 +88,9 @@ module PayPal::SDK::Core
|
|
66
88
|
begin
|
67
89
|
response = super(payload)
|
68
90
|
rescue UnauthorizedAccess => error
|
69
|
-
if @
|
91
|
+
if @token_hash and config.client_id
|
70
92
|
# Reset cached token and Retry api request
|
71
|
-
@
|
93
|
+
@token_hash = nil
|
72
94
|
response = super(backup_payload)
|
73
95
|
else
|
74
96
|
raise error
|
@@ -96,7 +118,7 @@ module PayPal::SDK::Core
|
|
96
118
|
# HTTP Header
|
97
119
|
credential_properties = credential(payload[:uri].to_s).properties
|
98
120
|
header = map_header_value(NVP_AUTH_HEADER, credential_properties)
|
99
|
-
payload[:header] = header.merge("Authorization" => "
|
121
|
+
payload[:header] = header.merge("Authorization" => "#{token_type} #{token}").
|
100
122
|
merge(DEFAULT_HTTP_HEADER).merge(payload[:header])
|
101
123
|
# Post Data
|
102
124
|
payload[:body] = MultiJson.dump(payload[:params])
|
@@ -121,11 +143,6 @@ module PayPal::SDK::Core
|
|
121
143
|
payload
|
122
144
|
end
|
123
145
|
|
124
|
-
# Formate Exception object
|
125
|
-
def format_error(exception, message)
|
126
|
-
{ "error" => { "name" => "ERROR", "message" => message, "developer_msg" => exception } }
|
127
|
-
end
|
128
|
-
|
129
146
|
# Log PayPal-Request-Id header
|
130
147
|
def log_http_call(payload)
|
131
148
|
if payload[:header] and payload[:header]["PayPal-Request-Id"]
|
@@ -73,7 +73,8 @@ module PayPal::SDK::Core
|
|
73
73
|
:http_timeout, :http_proxy,
|
74
74
|
:device_ipaddress, :sandbox_email_address,
|
75
75
|
:mode, :endpoint, :merchant_endpoint, :platform_endpoint, :ipn_endpoint,
|
76
|
-
:rest_endpoint, :rest_token_endpoint, :client_id, :client_secret
|
76
|
+
:rest_endpoint, :rest_token_endpoint, :client_id, :client_secret,
|
77
|
+
:openid_endpoint, :openid_redirect_uri, :openid_client_id, :openid_client_secret
|
77
78
|
|
78
79
|
alias_method :end_point=, :endpoint=
|
79
80
|
alias_method :end_point, :endpoint
|
@@ -163,7 +164,7 @@ module PayPal::SDK::Core
|
|
163
164
|
|
164
165
|
# Get default environment name
|
165
166
|
def default_environment
|
166
|
-
@@default_environment ||= ENV['PAYPAL_ENV'] || ENV['RACK_ENV'] || ENV['RAILS_ENV'] ||
|
167
|
+
@@default_environment ||= ENV['PAYPAL_ENV'] || ENV['RACK_ENV'] || ENV['RAILS_ENV'] || "development"
|
167
168
|
end
|
168
169
|
|
169
170
|
# Set default environment
|
@@ -171,6 +172,17 @@ module PayPal::SDK::Core
|
|
171
172
|
@@default_environment = env.to_s
|
172
173
|
end
|
173
174
|
|
175
|
+
def configure(options = {}, &block)
|
176
|
+
begin
|
177
|
+
self.config.merge!(options)
|
178
|
+
rescue Errno::ENOENT
|
179
|
+
self.configurations = { default_environment => options }
|
180
|
+
end
|
181
|
+
block.call(self.config) if block
|
182
|
+
self.config
|
183
|
+
end
|
184
|
+
alias_method :set_config, :configure
|
185
|
+
|
174
186
|
# Create or Load Config object based on given environment and configurations.
|
175
187
|
# === Attributes
|
176
188
|
# * <tt>env</tt> (Optional) -- Environment name
|
@@ -184,12 +196,19 @@ module PayPal::SDK::Core
|
|
184
196
|
override_configuration = env
|
185
197
|
env = default_environment
|
186
198
|
end
|
187
|
-
env = (env || default_environment).to_s
|
188
|
-
raise "Configuration[#{env}] NotFound" unless configurations[env]
|
189
199
|
if override_configuration.nil? or override_configuration.empty?
|
190
|
-
|
200
|
+
default_config(env)
|
201
|
+
else
|
202
|
+
default_config(env).dup.merge!(override_configuration)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
def default_config(env = nil)
|
207
|
+
env = (env || default_environment).to_s
|
208
|
+
if configurations[env]
|
209
|
+
@@config_cache[env] ||= new(configurations[env])
|
191
210
|
else
|
192
|
-
new(
|
211
|
+
raise Exceptions::MissingConfig.new("Configuration[#{env}] NotFound")
|
193
212
|
end
|
194
213
|
end
|
195
214
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module PayPal
|
2
|
+
module SDK
|
3
|
+
module Core
|
4
|
+
module Credential
|
5
|
+
autoload :Base, "paypal-sdk/core/credential/base"
|
6
|
+
autoload :Certificate, "paypal-sdk/core/credential/certificate"
|
7
|
+
autoload :Signature, "paypal-sdk/core/credential/signature"
|
8
|
+
|
9
|
+
module ThirdParty
|
10
|
+
autoload :Token, "paypal-sdk/core/credential/third_party/token"
|
11
|
+
autoload :Subject, "paypal-sdk/core/credential/third_party/subject"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
|
2
|
+
module PayPal::SDK
|
3
|
+
module Core
|
4
|
+
module OpenIDConnect
|
5
|
+
autoload :API, "paypal-sdk/core/openid_connect/api"
|
6
|
+
autoload :SetAPI, "paypal-sdk/core/openid_connect/set_api"
|
7
|
+
autoload :GetAPI, "paypal-sdk/core/openid_connect/get_api"
|
8
|
+
autoload :RequestDataType, "paypal-sdk/core/openid_connect/request_data_type"
|
9
|
+
autoload :DataTypes, "paypal-sdk/core/openid_connect/data_types"
|
10
|
+
|
11
|
+
include DataTypes
|
12
|
+
|
13
|
+
class << self
|
14
|
+
def api
|
15
|
+
RequestDataType.api
|
16
|
+
end
|
17
|
+
|
18
|
+
def set_config(*args)
|
19
|
+
RequestDataType.set_config(*args)
|
20
|
+
end
|
21
|
+
alias_method :config=, :set_config
|
22
|
+
|
23
|
+
AUTHORIZATION_URL = "https://www.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize"
|
24
|
+
ENDSESSION_URL = "https://www.paypal.com/webapps/auth/protocol/openidconnect/v1/endsession"
|
25
|
+
DEFAULT_SCOPE = "openid"
|
26
|
+
|
27
|
+
def authorize_url(params = {})
|
28
|
+
uri = URI(AUTHORIZATION_URL)
|
29
|
+
uri.query = api.encode_www_form({
|
30
|
+
:response_type => "code",
|
31
|
+
:scope => DEFAULT_SCOPE,
|
32
|
+
:client_id => RequestDataType.client_id,
|
33
|
+
:redirect_uri => api.config.openid_redirect_uri
|
34
|
+
}.merge(params))
|
35
|
+
uri.to_s
|
36
|
+
end
|
37
|
+
|
38
|
+
def logout_url(params = {})
|
39
|
+
uri = URI(ENDSESSION_URL)
|
40
|
+
uri.query = api.encode_www_form({
|
41
|
+
:logout => "true",
|
42
|
+
:redirect_uri => api.config.openid_redirect_uri
|
43
|
+
}.merge(params))
|
44
|
+
uri.to_s
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
module DataTypes
|
49
|
+
class Tokeninfo < Base
|
50
|
+
include RequestDataType
|
51
|
+
PATH = "v1/identity/openidconnect/tokenservice"
|
52
|
+
|
53
|
+
class << self
|
54
|
+
def create_from_authorization_code(options, http_header = {})
|
55
|
+
options = { :code => options } if options.is_a? String
|
56
|
+
options = options.merge( :grant_type => "authorization_code" )
|
57
|
+
Tokeninfo.new(api.post(PATH, with_credentials(options), http_header))
|
58
|
+
end
|
59
|
+
alias_method :create, :create_from_authorization_code
|
60
|
+
|
61
|
+
def create_from_refresh_token(options, http_header = {})
|
62
|
+
options = { :refresh_token => options } if options.is_a? String
|
63
|
+
options = options.merge( :grant_type => "refresh_token" )
|
64
|
+
Tokeninfo.new(api.post(PATH, with_credentials(options), http_header))
|
65
|
+
end
|
66
|
+
alias_method :refresh, :create_from_refresh_token
|
67
|
+
|
68
|
+
def with_credentials(options = {})
|
69
|
+
options = options.dup
|
70
|
+
[ :client_id, :client_secret ].each do |key|
|
71
|
+
options[key] = self.send(key) unless options[key] or options[key.to_s]
|
72
|
+
end
|
73
|
+
options
|
74
|
+
end
|
75
|
+
|
76
|
+
def authorize_url(options = {})
|
77
|
+
OpenIDConnect.authorize_url(options)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def refresh(options = {})
|
82
|
+
tokeninfo = self.class.refresh({
|
83
|
+
:refresh_token => self.refresh_token}.merge(options))
|
84
|
+
self.merge!(tokeninfo.to_hash)
|
85
|
+
end
|
86
|
+
|
87
|
+
def userinfo(options = {})
|
88
|
+
Userinfo.get({ :access_token => self.access_token }.merge(options))
|
89
|
+
end
|
90
|
+
|
91
|
+
def logout_url(options = {})
|
92
|
+
OpenIDConnect.logout_url({ :id_token => self.id_token }.merge(options))
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
class Userinfo < Base
|
98
|
+
include RequestDataType
|
99
|
+
PATH = "v1/identity/openidconnect/userinfo"
|
100
|
+
|
101
|
+
class << self
|
102
|
+
def get_userinfo(options = {}, http_header = {})
|
103
|
+
options = { :access_token => options } if options.is_a? String
|
104
|
+
options = options.merge( :schema => "openid" ) unless options[:schema] or options["schema"]
|
105
|
+
Userinfo.new(api.post(PATH, options, http_header))
|
106
|
+
end
|
107
|
+
alias_method :get, :get_userinfo
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
# Alias for the Core::OpenIDConnect constant
|
115
|
+
OpenIDConnect = Core::OpenIDConnect
|
116
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'multi_json'
|
2
|
+
|
3
|
+
module PayPal::SDK
|
4
|
+
module Core
|
5
|
+
module OpenIDConnect
|
6
|
+
class API < Core::API::Base
|
7
|
+
|
8
|
+
DEFAULT_OPENID_ENDPOINT ="https://api.paypal.com"
|
9
|
+
|
10
|
+
def initialize(environment = nil, options = {})
|
11
|
+
super("", environment, options)
|
12
|
+
end
|
13
|
+
|
14
|
+
def service_endpoint
|
15
|
+
self.config.openid_endpoint || DEFAULT_OPENID_ENDPOINT
|
16
|
+
end
|
17
|
+
|
18
|
+
def format_request(payload)
|
19
|
+
payload[:uri].path = url_join(payload[:uri].path, payload[:action])
|
20
|
+
payload[:body] = encode_www_form(payload[:params]) if payload[:params]
|
21
|
+
payload[:header] = {"Content-Type" => "application/x-www-form-urlencoded" }.merge(payload[:header])
|
22
|
+
payload
|
23
|
+
end
|
24
|
+
|
25
|
+
def format_response(payload)
|
26
|
+
payload[:data] =
|
27
|
+
if payload[:response].code >= "200" and payload[:response].code <= "299"
|
28
|
+
MultiJson.load(payload[:response].body)
|
29
|
+
elsif payload[:response].content_type == "application/json"
|
30
|
+
{ "error" => MultiJson.load(payload[:response].body) }
|
31
|
+
else
|
32
|
+
{ "error" => { "name" => payload[:response].code, "message" => payload[:response].message,
|
33
|
+
"developer_msg" => payload[:response] } }
|
34
|
+
end
|
35
|
+
payload
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|