Class: Glib::JsonCrawler::FormsSubmit

Inherits:
ActionCrawler show all
Defined in:
lib/glib/json_crawler/action_crawlers/forms_submit.rb

Instance Method Summary collapse

Methods inherited from ActionCrawler

#click, #crawl

Constructor Details

#initialize(http, params, action, form) ⇒ FormsSubmit

Returns a new instance of FormsSubmit.



4
5
6
7
8
9
10
11
12
13
# File 'lib/glib/json_crawler/action_crawlers/forms_submit.rb', line 4

def initialize http, params, action, form
  @http = http

  case form['method']
  when 'patch', 'put'
    submit_update(form, action)
  else
    JsonCrawler::Router.log action, params['url']
  end
end

Instance Method Details

#submit_update(view, action) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/glib/json_crawler/action_crawlers/forms_submit.rb', line 15

def submit_update(view, action)
  url = view['url']
  fields = []
  params = {}
  JsonCrawler::Router.crawl_multiple view['childViews'], ->(child) do
    if child['view'].start_with?('fields/')
      fields << child
      params[child['name']] = child['value']
    end
  end
  
  json = @http.patch url, action, params
  click(json)
end