Class: HttpMockServer
- Inherits:
-
Sinatra::Base
- Object
- Sinatra::Base
- HttpMockServer
- 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
- #interpolate(input) ⇒ Object
- #log(code, method, path) ⇒ Object
- #reload_route(route_id) ⇒ Object
- #traverse!(node) ⇒ Object
- #traverse_node(node, k, v) ⇒ Object
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 |