class Protein::HTTPAdapter
Constants
- HTTPS_SCHEME
Public Class Methods
call(request_payload)
click to toggle source
# File lib/protein/http_adapter.rb, line 66 def call(request_payload) make_http_request(request_payload, build_headers()) end
from_hash(hash)
click to toggle source
# File lib/protein/http_adapter.rb, line 33 def from_hash(hash) if (new_url = hash[:url]) url(new_url) end if (new_path = hash[:path]) path(new_path) end if (new_secret = hash[:secret]) secret(new_secret) end end
path(path = nil)
click to toggle source
# File lib/protein/http_adapter.rb, line 56 def path(path = nil) @path = path if path @path || raise(DefinitionError, "path is not defined") end
secret(secret = nil)
click to toggle source
# File lib/protein/http_adapter.rb, line 61 def secret(secret = nil) @secret = secret if secret @secret || raise(DefinitionError, "secret is not defined") end
url(url = nil)
click to toggle source
# File lib/protein/http_adapter.rb, line 47 def url(url = nil) if url @url = url @path = URI(url).path end @url || raise(DefinitionError, "url is not defined") end
Private Class Methods
build_headers()
click to toggle source
# File lib/protein/http_adapter.rb, line 72 def build_headers { "X-RPC-Secret" => secret } end
make_http_request(body, headers)
click to toggle source
# File lib/protein/http_adapter.rb, line 76 def make_http_request(body, headers) uri = URI.parse(url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = uri.scheme == HTTPS_SCHEME http_request = Net::HTTP::Post.new(uri.path, headers) http_request.body = body http_response = http.request(http_request) unless http_response.is_a?(Net::HTTPSuccess) raise(TransportError, "HTTP request failed with code #{http_response.code}") end http_response.body rescue SystemCallError => e raise(TransportError, e.to_s) end