Class: Vidispine::API::Utilities::HTTPServer

Inherits:
Sinatra::Base
  • Object
show all
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

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#global_argumentsObject

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_idObject

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_positionObject

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_mapObject

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

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :logger (Logger)
  • :binding (String)
  • :local_port (String)


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

#apiObject



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

#loggerObject



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_bodyObject

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

Parameters:

  • args (Hash) (defaults to: { })

Options Hash (args):

  • :request (Request)


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"