Class: Vidispine::API::Utilities::HTTPServer
- Inherits:
-
Sinatra::Base
- Object
- Sinatra::Base
- Vidispine::API::Utilities::HTTPServer
- Defined in:
- lib/vidispine/api/utilities/http_server.rb,
lib/vidispine/api/utilities/http_server/cli.rb
Defined Under Namespace
Classes: CLI
Constant Summary collapse
- DEFAULT_ADDRESS_BINDING =
'localhost'- DEFAULT_PORT =
'4567'
Instance Attribute Summary collapse
-
#global_arguments ⇒ Object
Returns the value of attribute global_arguments.
-
#metadata_file_path_field_id ⇒ Object
Returns the value of attribute metadata_file_path_field_id.
-
#relative_file_path_collection_name_position ⇒ Object
Returns the value of attribute relative_file_path_collection_name_position.
-
#storage_path_map ⇒ Object
Returns the value of attribute storage_path_map.
Class Method Summary collapse
- .init(args = {}) ⇒ Object
-
.initialize_logger(args = { }) ⇒ Object
log_request_match.
Instance Method Summary collapse
- #api ⇒ Object
- #format_response(response, args = { }) ⇒ Object
-
#log_request(route = '') ⇒ Object
request_to_s.
-
#log_request_match(route) ⇒ Object
log_request.
- #logger ⇒ Object
-
#merge_params_from_body(_params = params) ⇒ Object
Will try to convert a body to parameters and merge them into the params hash Params will override the body parameters.
-
#parse_body ⇒ Object
output_response.
- #request_to_s(args = { }) ⇒ Object
Instance Attribute Details
#global_arguments ⇒ Object
Returns the value of attribute global_arguments.
23 24 25 |
# File 'lib/vidispine/api/utilities/http_server.rb', line 23 def global_arguments @global_arguments end |
#metadata_file_path_field_id ⇒ Object
Returns the value of attribute metadata_file_path_field_id.
23 24 25 |
# File 'lib/vidispine/api/utilities/http_server.rb', line 23 def end |
#relative_file_path_collection_name_position ⇒ Object
Returns the value of attribute relative_file_path_collection_name_position.
23 24 25 |
# File 'lib/vidispine/api/utilities/http_server.rb', line 23 def relative_file_path_collection_name_position @relative_file_path_collection_name_position end |
#storage_path_map ⇒ Object
Returns the value of attribute storage_path_map.
23 24 25 |
# File 'lib/vidispine/api/utilities/http_server.rb', line 23 def storage_path_map @storage_path_map end |
Class Method Details
.init(args = {}) ⇒ Object
198 199 200 201 202 203 204 205 206 207 208 209 210 211 |
# 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 = { }) ⇒ Object
log_request_match
188 189 190 191 192 |
# 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 |
Instance Method Details
#api ⇒ Object
218 219 220 221 |
# File 'lib/vidispine/api/utilities/http_server.rb', line 218 def api #self.class.api settings.api end |
#format_response(response, args = { }) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# 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 = '') ⇒ Object
request_to_s
177 178 179 180 181 |
# 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) ⇒ Object
log_request
183 184 185 186 |
# 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 ⇒ Object
213 214 215 216 |
# File 'lib/vidispine/api/utilities/http_server.rb', line 213 def logger #self.class.logger settings.logger end |
#merge_params_from_body(_params = params) ⇒ Object
Will try to convert a body to parameters and merge them into the params hash Params will override the body parameters
132 133 134 135 136 137 |
# 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 ⇒ Object
output_response
115 116 117 118 119 120 121 122 123 124 125 126 |
# 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 = { }) ⇒ Object
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/vidispine/api/utilities/http_server.rb', line 141 def request_to_s(args = { }) _request = args[:request] || request output = "------------------------------------------------------------------------------------------------------------------------\n REQUEST\n Method: \#{_request.request_method}\n URI: \#{_request.url}\n\n Host: \#{_request.host}\n Path: \#{_request.path}\n Script Name: \#{_request.script_name}\n Query String: \#{_request.query_string}\n XHR? \#{_request.xhr?}\n\n Remote\n Host: \#{_request.env['REMOTE_HOST']}\n IP: \#{_request.ip}\n User Agent: \#{_request.user_agent}\n Cookies: \#{_request.cookies}\n Accepts: \#{_request.accept.inspect}\n Preferred Type: \#{_request.preferred_type}\n\n Media Type: \#{_request.media_type}\n BODY BEGIN:\n\#{_request.body.read}\n BODY END.\n\n Parsed Parameters:\n \#{PP.pp(_request.params, '', 60)}\n\n------------------------------------------------------------------------------------------------------------------------\n OUTPUT\n _request.body.rewind\n output\nend\n" |