Module: Arkenstone::Network
- Defined in:
- lib/arkenstone/network/network.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
-
.build_request(url, verb) ⇒ Object
Builds a Net::HTTP request object for the appropriate verb.
-
.create_http(url) ⇒ Object
Creates the http object used for requests.
- .included(base) ⇒ Object
-
.response_is_success(response) ⇒ Object
Determines if the response was successful.
-
.send_request(request_env) ⇒ Object
All http requests go through here.
-
.set_request_data(request, data) ⇒ Object
Fills in the body of a request with the appropriate serialized data.
-
.set_request_headers(request, headers) ⇒ Object
Sets HTTP headers on the request.
Class Method Details
.build_request(url, verb) ⇒ Object
Builds a Net::HTTP request object for the appropriate verb.
54 55 56 57 |
# File 'lib/arkenstone/network/network.rb', line 54 def build_request(url, verb) klass = Kernel.const_get('Net::HTTP').const_get(verb.capitalize) klass.new URI(url) end |
.create_http(url) ⇒ Object
Creates the http object used for requests.
46 47 48 49 50 51 |
# File 'lib/arkenstone/network/network.rb', line 46 def create_http(url) uri = URI(url) http = Net::HTTP.new(uri.hostname, uri.port) http.use_ssl = true if uri.scheme == 'https' http end |
.included(base) ⇒ Object
25 26 27 |
# File 'lib/arkenstone/network/network.rb', line 25 def included(base) base.extend Arkenstone::Network::ClassMethods end |
.response_is_success(response) ⇒ Object
Determines if the response was successful. TODO: Refactor this to handle more status codes. TODO: How do we handle redirects (30x)?
41 42 43 |
# File 'lib/arkenstone/network/network.rb', line 41 def response_is_success(response) %w[200 204].include? response.code end |
.send_request(request_env) ⇒ Object
All http requests go through here.
30 31 32 33 34 35 36 |
# File 'lib/arkenstone/network/network.rb', line 30 def send_request(request_env) http = create_http request_env.url request = build_request request_env.url, request_env.verb set_request_data request, request_env.body set_request_headers request, request_env.headers unless request_env.headers.nil? http.request request end |
.set_request_data(request, data) ⇒ Object
Fills in the body of a request with the appropriate serialized data.
60 61 62 63 64 |
# File 'lib/arkenstone/network/network.rb', line 60 def set_request_data(request, data) data = data.to_json unless data.instance_of?(String) request.body = data request.content_type = 'application/json' end |
.set_request_headers(request, headers) ⇒ Object
Sets HTTP headers on the request.
67 68 69 |
# File 'lib/arkenstone/network/network.rb', line 67 def set_request_headers(request, headers) headers.each { |key, val| request.add_field key, val } end |