Class: HttpMockServer

Inherits:
Sinatra::Base
  • Object
show all
Defined in:
lib/http-mock-server.rb

Overview

Main app class

Constant Summary collapse

MIME_JSON =
['application/json'].freeze
CORS_HEADERS =
{
  'Access-Control-Allow-Origin'  => '*',
  'Access-Control-Allow-Methods' => 'POST, GET, PUT, DELETE, OPTIONS',
  'Access-Control-Allow-Headers' => 'Origin, Content-Type, Accept, Authorization, Token'
}.freeze
METHODS =
%w[connect delete get head options patch post put trace].freeze

Instance Method Summary collapse

Instance Method Details

#interpolate(input) ⇒ Object



113
114
115
116
# File 'lib/http-mock-server.rb', line 113

def interpolate(input)
  vars = input.to_s.scan(/\#{(.*?)}/).flatten.map { |t| eval(t) }
  input.to_s.gsub(/\#{(.*?)}/, '%s') % vars
end

#log(code, method, path) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/http-mock-server.rb', line 98

def log(code, method, path)
  print "#{Time.now.strftime('%F %T')} - [#{code}] #{method} #{path}\n"
  return unless $config['config']['verbose']
  if MIME_JSON.include? env['CONTENT_TYPE']
    request.body.rewind
    data = JSON.parse request.body.read
    print "  PARAMS_JSON: #{data}\n" unless data.empty?
  else
    pars = params.dup
    pars.delete 'captures'
    pars.delete 'splat'
    print "  PARAMS_DATA: #{pars}\n" if pars.any?
  end
end

#reload_route(route_id) ⇒ Object



118
119
120
121
122
123
# File 'lib/http-mock-server.rb', line 118

def reload_route(route_id)
  config = YAML.safe_load File.read($config_file) || {}
  return config['not_found'] || {} if route_id < 0
  return {} if !config['routes'] || !config['routes'][route_id]
  config['routes'][route_id]
end

#traverse!(node) ⇒ Object



125
126
127
128
129
130
131
132
133
134
135
# File 'lib/http-mock-server.rb', line 125

def traverse!(node)
  if node.is_a?(Hash)
    node.each do |k, v|
      traverse_node(node, k, v)
    end
  elsif node.is_a?(Array)
    node.each_with_index do |v, i|
      traverse_node(node, i, v)
    end
  end
end

#traverse_node(node, k, v) ⇒ Object



137
138
139
140
141
142
143
# File 'lib/http-mock-server.rb', line 137

def traverse_node(node, k, v)
  if v.is_a?(Hash) || v.is_a?(Array)
    traverse! v
  elsif v
    node[k] = interpolate v
  end
end