class Vidispine::API::Utilities::HTTPServer
Constants
- DEFAULT_ADDRESS_BINDING
- DEFAULT_PORT
Attributes
global_arguments[RW]
metadata_file_path_field_id[RW]
relative_file_path_collection_name_position[RW]
storage_path_map[RW]
Public Class Methods
init(args = {})
click to toggle source
@param [Hash] args @option args [Logger] :logger @option args [String] :binding @option args [String] :local_port
# File lib/vidispine/api/utilities/http_server.rb, line 198 def self.init(args = {}) logger = initialize_logger(args) set(:logger, logger) logger.debug { "Initializing HTTP Server. Arguments: #{args.inspect}" } _binding = args.delete(:binding) { DEFAULT_ADDRESS_BINDING } _port = args.delete(:port) { DEFAULT_PORT } set(:bind, _binding) set(:port, _port) set(:initial_arguments, args) set(:api, args[:api]) end
initialize_logger(args = { })
click to toggle source
# File lib/vidispine/api/utilities/http_server.rb, line 188 def self.initialize_logger(args = { }) logger = args[:logger] ||= Logger.new(args[:log_to] || STDOUT) logger.level = args[:log_level] if args[:log_level] logger end
Public Instance Methods
api()
click to toggle source
# File lib/vidispine/api/utilities/http_server.rb, line 218 def api #self.class.api settings.api end
format_response(response, args = { })
click to toggle source
@!endgroup Routes
# File lib/vidispine/api/utilities/http_server.rb, line 99 def format_response(response, args = { }) supported_types = %w(application/json application/xml text/xml) case request.preferred_type(supported_types) when 'application/json' content_type :json _response = (response.is_a?(Hash) || response.is_a?(Array)) ? JSON.generate(response) : response #when 'application/xml', 'text/xml' # content_type :xml # _response = XmlSimple.xml_out(response, { :root_name => 'response' }) else content_type :json _response = (response.is_a?(Hash) || response.is_a?(Array)) ? JSON.generate(response) : response end _response end
log_request(route = '')
click to toggle source
# File lib/vidispine/api/utilities/http_server.rb, line 177 def log_request(route = '') return if request.path == '/favicon.ico' logger.debug { "\n#{request_to_s}" } #puts requests.insert(request_to_hash) end
log_request_match(route)
click to toggle source
# File lib/vidispine/api/utilities/http_server.rb, line 183 def log_request_match(route) log_request(route) logger.debug { "MATCHED: #{request.url} -> #{route}\nParsed Parameters: #{params.inspect}" } end
logger()
click to toggle source
# File lib/vidispine/api/utilities/http_server.rb, line 213 def logger #self.class.logger settings.logger end
merge_params_from_body(_params = params)
click to toggle source
Will try to convert a body to parameters and merge them into the params hash Params will override the body parameters
@params [Hash] _params (params) The parameters parsed from the query and form fields
# File lib/vidispine/api/utilities/http_server.rb, line 132 def merge_params_from_body(_params = params) _params = _params.dup _params_from_body = parse_body _params = _params_from_body.merge(_params) if _params_from_body.is_a?(Hash) indifferent_hash.merge(_params) end
parse_body()
click to toggle source
# File lib/vidispine/api/utilities/http_server.rb, line 115 def parse_body if request.media_type == 'application/json' request.body.rewind body_contents = request.body.read logger.debug { "Parsing: '#{body_contents}'" } if body_contents json_params = JSON.parse(body_contents) return json_params end end end
request_to_s(args = { })
click to toggle source
@param [Hash] args @option args [Request] :request
# File lib/vidispine/api/utilities/http_server.rb, line 141 def request_to_s(args = { }) _request = args[:request] || request output = <<-OUTPUT ------------------------------------------------------------------------------------------------------------------------ REQUEST Method: #{_request.request_method} URI: #{_request.url} Host: #{_request.host} Path: #{_request.path} Script Name: #{_request.script_name} Query String: #{_request.query_string} XHR? #{_request.xhr?} Remote Host: #{_request.env['REMOTE_HOST']} IP: #{_request.ip} User Agent: #{_request.user_agent} Cookies: #{_request.cookies} Accepts: #{_request.accept.inspect} Preferred Type: #{_request.preferred_type} Media Type: #{_request.media_type} BODY BEGIN: #{_request.body.read} BODY END. Parsed Parameters: #{PP.pp(_request.params, '', 60)} ------------------------------------------------------------------------------------------------------------------------ OUTPUT _request.body.rewind output end