module RestfulResource::Redirections
Public Class Methods
accept_redirected_result(response:, delay:, max_attempts:)
click to toggle source
# File lib/restful_resource/redirections.rb, line 23 def self.accept_redirected_result(response:, delay:, max_attempts:) new_response = response if response.status == 303 attempts = 0 resource_location = response.headers[:location] RestfulResource::Redirections.wait(delay) new_response = http.get(resource_location, headers: {}, open_timeout: nil, timeout: nil) while (new_response.status == 202) && (attempts < max_attempts) attempts += 1 RestfulResource::Redirections.wait(delay) new_response = http.get(resource_location, headers: {}, open_timeout: nil, timeout: nil) end raise RestfulResource::MaximumAttemptsReached if attempts == max_attempts end response = new_response end
included(base)
click to toggle source
# File lib/restful_resource/redirections.rb, line 9 def self.included(base) base.instance_eval do def post(data: {}, delay: 1.0, max_attempts: 10, headers: {}, open_timeout: nil, timeout: nil, **params) url = collection_url(**params) response = accept_redirected_result( response: http.post(url, data: data, headers: headers, open_timeout: nil, timeout: nil), delay: delay, max_attempts: max_attempts ) new(parse_json(response.body)) end def self.accept_redirected_result(response:, delay:, max_attempts:) new_response = response if response.status == 303 attempts = 0 resource_location = response.headers[:location] RestfulResource::Redirections.wait(delay) new_response = http.get(resource_location, headers: {}, open_timeout: nil, timeout: nil) while (new_response.status == 202) && (attempts < max_attempts) attempts += 1 RestfulResource::Redirections.wait(delay) new_response = http.get(resource_location, headers: {}, open_timeout: nil, timeout: nil) end raise RestfulResource::MaximumAttemptsReached if attempts == max_attempts end response = new_response end end end
wait(seconds)
click to toggle source
# File lib/restful_resource/redirections.rb, line 45 def self.wait(seconds) Kernel.sleep(seconds) end
Public Instance Methods
post(data: {}, delay: 1.0, max_attempts: 10, headers: {}, open_timeout: nil, timeout: nil, **params)
click to toggle source
# File lib/restful_resource/redirections.rb, line 11 def post(data: {}, delay: 1.0, max_attempts: 10, headers: {}, open_timeout: nil, timeout: nil, **params) url = collection_url(**params) response = accept_redirected_result( response: http.post(url, data: data, headers: headers, open_timeout: nil, timeout: nil), delay: delay, max_attempts: max_attempts ) new(parse_json(response.body)) end