class MessageBird::HttpClient
Constants
- ALLOWED_METHODS
- ENDPOINT
- SUBMIT_METHODS
- VALID_RESPONSE_CODES
Attributes
access_key[R]
Public Class Methods
new(access_key)
click to toggle source
# File lib/messagebird/http_client.rb, line 19 def initialize(access_key) @access_key = access_key end
Public Instance Methods
assert_json_response_type(content_type)
click to toggle source
Throw an exception if the response's content type is not JSON. This only checks the header: it doesn't inspect the actual body.
# File lib/messagebird/http_client.rb, line 89 def assert_json_response_type(content_type) # Check whether the header starts with application/json and don't check # for equality: some API's may append the charset to this header. raise InvalidResponseException, 'Response is not JSON' unless content_type.start_with? 'application/json' end
assert_valid_response_code(code)
click to toggle source
Throw an exception if the response code is not one we expect from the MessageBird
API.
# File lib/messagebird/http_client.rb, line 83 def assert_valid_response_code(code) raise ServerException, 'Unknown response from server' unless VALID_RESPONSE_CODES.include? code end
build_http_client(uri)
click to toggle source
# File lib/messagebird/http_client.rb, line 27 def build_http_client(uri) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.set_debug_output($stdout) unless ENV['DEBUG_MB_HTTP_CLIENT'].nil? http end
build_request(method, uri, params = {})
click to toggle source
# File lib/messagebird/http_client.rb, line 64 def build_request(method, uri, params = {}) # Construct the HTTP request. raise MethodNotAllowedException unless ALLOWED_METHODS.include?(method) request = Class.const_get("Net::HTTP::#{method.to_s.capitalize}").new(uri.request_uri) request['Accept'] = 'application/json' request['Authorization'] = "AccessKey #{@access_key}" request['User-Agent'] = "MessageBird/ApiClient/#{Version::STRING} Ruby/#{RUBY_VERSION}" if SUBMIT_METHODS.include?(method) && !params.empty? prepare_request(request, params) end request end
endpoint()
click to toggle source
# File lib/messagebird/http_client.rb, line 23 def endpoint ENDPOINT end
prepare_request(request, params = {})
click to toggle source
# File lib/messagebird/http_client.rb, line 58 def prepare_request(request, params = {}) request.set_form_data(params) request end
request(method, path, params = {}, check_json = true)
click to toggle source
# File lib/messagebird/http_client.rb, line 36 def request(method, path, params = {}, check_json = true) uri = URI.join(endpoint, path) http = build_http_client(uri) request = build_request(method, uri, params) # Execute the request and fetch the response. response = http.request(request) assert_valid_response_code(response.code.to_i) assert_json_response_type(response['Content-Type']) unless check_json response.body end
request_block(method, path, params = {}, &block)
click to toggle source
# File lib/messagebird/http_client.rb, line 50 def request_block(method, path, params = {}, &block) uri = URI.join(endpoint, path) http = build_http_client(uri) request = build_request(method, uri, params) http.request(request, block) end