Class: ManagerRemoteHttp
- Defined in:
- lib/mrpin/core/remote/http/manager_remote_http.rb
Constant Summary collapse
- METHODS =
[:post, :get]
- DEFAULT_READ_TIMEOUT =
10- DEFAULT_OPEN_TIMEOUT =
10- DEFAULT_REDIRECT_LIMIT =
0
Instance Method Summary collapse
- #get(controller, params = nil) ⇒ Object (also: #request_get_to)
-
#initialize(options = {}) ⇒ ManagerRemoteHttp
constructor
A new instance of ManagerRemoteHttp.
- #json_to(controller, params = {}, method = :post) ⇒ Object
- #post(controller, params = nil) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ ManagerRemoteHttp
Returns a new instance of ManagerRemoteHttp.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/mrpin/core/remote/http/manager_remote_http.rb', line 8 def initialize( = {}) url = .assert_property!(:url) = { request: { timeout: [:read_timeout] || DEFAULT_READ_TIMEOUT, open_timeout: [:open_timeout] || DEFAULT_OPEN_TIMEOUT } } redirect_limit = [:redirect_limit] || DEFAULT_REDIRECT_LIMIT @connection = Faraday.new(url, ) do |builder| builder.request :url_encoded # for POST/PUT params builder.request :retry, {max: 3, interval: 0.2, interval_randomness: 0, backoff_factor: 1.5} # [0.2 0.3 0.45] intervals between retries if redirect_limit > 0 builder.use FaradayMiddleware::FollowRedirects, {limit: redirect_limit} end builder.adapter :net_http end end |
Instance Method Details
#get(controller, params = nil) ⇒ Object Also known as: request_get_to
36 37 38 |
# File 'lib/mrpin/core/remote/http/manager_remote_http.rb', line 36 def get(controller, params = nil) run_request(:get, controller, params) end |
#json_to(controller, params = {}, method = :post) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/mrpin/core/remote/http/manager_remote_http.rb', line 76 def json_to(controller, params = {}, method = :post) result = nil begin unless METHODS.include?(method) raise ArgumentError, "Not supported method: #{method}" end response = @connection.send(method) do |req| req.url controller req.headers['Content-Type'] = 'application/json' req.body = params.to_json end result = if response.success? JSON.parse response.body, {symbolize_names: true} else { status: EResponseType::ERT_ERROR, response: [response.status, response.body].join(':') } end rescue Exception => e result = {status: EResponseType::ERT_ERROR, response: e.} end result end |
#post(controller, params = nil) ⇒ Object
43 44 45 |
# File 'lib/mrpin/core/remote/http/manager_remote_http.rb', line 43 def post(controller, params = nil) run_request(:post, controller, params) end |