Class: WebFetch::Router

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/web_fetch/router.rb

Overview

Dispatches requests to correct resource

Instance Method Summary collapse

Methods included from Helpers

#symbolize

Constructor Details

#initializeRouter

Returns a new instance of Router.



11
12
13
# File 'lib/web_fetch/router.rb', line 11

def initialize
  @router = setup
end

Instance Method Details

#route(url, options = {}) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/web_fetch/router.rb', line 15

def route(url, options = {})
  @server = options.delete(:server)
  options = { query_string: nil, method: 'GET' }.merge(options)

  Logger.info("#{url}: #{options}")

  json_params = build_params(options)
  return { status: 400, payload: I18n.t(:bad_json) } if json_params.nil?

  resource = @router.recognize(
    url, method: normalize_http_method(options[:method])
  )
  resource.call(resource.params.merge(json_params))
end