class AdobeMediaEncoder::API::Client::HTTPClient
Constants
- DEFAULT_HTTP_HOST_ADDRESS
- DEFAULT_HTTP_HOST_PORT
Attributes
base_uri[RW]
default_request_headers[RW]
host[RW]
http[RW]
log_pretty_print_body[RW]
log_request_body[RW]
log_response_body[RW]
logger[RW]
port[RW]
request[RW]
response[RW]
Public Class Methods
new(args = { })
click to toggle source
# File lib/adobe_media_encoder/api/client.rb, line 65 def initialize(args = { }) initialize_logger(args) initialize_http(args) @default_request_headers = { 'Content-Type' => 'application/xml; charset=utf-8', 'Accept' => 'application/xml', } @parse_response = true @base_uri = "http://#{host}:#{port}/" @log_request_body = args.fetch(:log_request_body, true) @log_response_body = args.fetch(:log_response_body, true) @log_pretty_print_body = args.fetch(:log_pretty_print_body, true) end
Public Instance Methods
build_uri(path = '', query = { })
click to toggle source
# File lib/adobe_media_encoder/api/client.rb, line 131 def build_uri(path = '', query = { }) _query = query.is_a?(Hash) ? query.map { |k,v| "#{CGI.escape(k)}=#{CGI.escape(v)}" }.join('&') : query _path = "#{path}#{_query and _query.respond_to?(:empty?) and !_query.empty? ? "?#{_query}" : ''}" URI.parse(File.join(base_uri, _path)) end
delete(path, options = { })
click to toggle source
# File lib/adobe_media_encoder/api/client.rb, line 137 def delete(path, options = { }) query = options.fetch(:query, { }) @uri = build_uri(path, query) request = Net::HTTP::Delete.new(@uri.request_uri, default_request_headers) send_request(request) end
format_body_for_log_output(obj)
click to toggle source
Formats a HTTPRequest or HTTPResponse body for log output. @param [HTTPRequest|HTTPResponse] obj @return [String]
# File lib/adobe_media_encoder/api/client.rb, line 101 def format_body_for_log_output(obj) output = '' if obj.content_type == 'application/json' if @log_pretty_print_body _body = obj.body output << "\n" output << JSON.pretty_generate(JSON.parse(_body)) rescue _body return output else return obj.body end else return obj.body.inspect end end
get(path, query = nil, options = { })
click to toggle source
# File lib/adobe_media_encoder/api/client.rb, line 144 def get(path, query = nil, options = { }) query ||= options.fetch(:query, { }) @uri = build_uri(path, query) request = Net::HTTP::Get.new(@uri.request_uri, default_request_headers) send_request(request) end
initialize_http(args = { })
click to toggle source
# File lib/adobe_media_encoder/api/client.rb, line 92 def initialize_http(args = { }) @host = args[:host] ||= DEFAULT_HTTP_HOST_ADDRESS @port = args[:port] ||= DEFAULT_HTTP_HOST_PORT @http = Net::HTTP.new(host, port) end
initialize_logger(args = { })
click to toggle source
# File lib/adobe_media_encoder/api/client.rb, line 82 def initialize_logger(args = { }) @logger = args[:logger] ||= Logger.new(args[:log_to] || STDERR) log_level = args[:log_level] if log_level @logger.level = log_level args[:logger] = @logger end @logger end
post(path, body = nil, options = { })
click to toggle source
# File lib/adobe_media_encoder/api/client.rb, line 161 def post(path, body = nil, options = { }) query = options.fetch(:query, { }) @uri = build_uri(path, query) #body = JSON.generate(body) unless body.is_a?(String) request = Net::HTTP::Post.new(@uri.request_uri, default_request_headers) request.body = body send_request(request) end
put(path, body, options = { })
click to toggle source
# File lib/adobe_media_encoder/api/client.rb, line 151 def put(path, body, options = { }) query = options.fetch(:query, { }) @uri = build_uri(path, query) #body = JSON.generate(body) unless body.is_a?(String) request = Net::HTTP::Put.new(@uri.request_uri, default_request_headers) request.body = body send_request(request) end
response_parsed()
click to toggle source
# File lib/adobe_media_encoder/api/client.rb, line 127 def response_parsed XMLHelper.parse_payload(response.body) #rescue response end
send_request(request)
click to toggle source
# File lib/adobe_media_encoder/api/client.rb, line 117 def send_request(request) @request = request logger.debug { %(REQUEST: #{request.method} http#{http.use_ssl? ? 's' : ''}://#{http.address}:#{http.port}#{request.path} HEADERS: #{request.to_hash.inspect} #{log_request_body and request.request_body_permitted? ? "BODY: #{format_body_for_log_output(request)}" : ''}) } @response = http.request(request) logger.debug { %(RESPONSE: #{response.inspect} HEADERS: #{response.to_hash.inspect} #{log_response_body and response.respond_to?(:body) ? "BODY: #{format_body_for_log_output(response)}" : ''}) } @parse_response ? response_parsed : response.body end