get parameters

This commit is contained in:
Kanezoh 2021-05-20 21:17:33 +09:00
parent 890d4e5449
commit 1dd6e72025
3 changed files with 20 additions and 18 deletions

View File

@ -3,9 +3,9 @@ require "./src/mechanize.cr"
agent = Mechanize.new agent = Mechanize.new
agent.request_headers = HTTP::Headers{"Foo" => "Bar"} agent.request_headers = HTTP::Headers{"Foo" => "Bar"}
params = {"hoge" => "hoge"} params = {"hoge" => "hoge"}
#page = agent.get("http://example.com/", params: params) page = agent.get("http://google.com/", params: params)
query = {"foo" => "foo_value", "bar" => "bar_value"} #query = {"foo" => "foo_value", "bar" => "bar_value"}
page = agent.post("http//example.com/", query: query) #page = agent.post("http//example.com/", query: query)
#puts page.code #puts page.code
#puts page.body #puts page.body
#puts page.css("h1").first.inner_text #puts page.css("h1").first.inner_text

View File

@ -1,6 +1,7 @@
require "./mechanize/http/agent" require "./mechanize/http/agent"
require "./mechanize/form" require "./mechanize/form"
require "./mechanize/node" require "./mechanize/node"
require "./mechanize/page"
class Mechanize class Mechanize
VERSION = "0.1.0" VERSION = "0.1.0"
@ -44,9 +45,9 @@ class Mechanize
headers.merge!(content_headers) headers.merge!(content_headers)
# fetch the page # fetch the page
#page = @agent.fetch uri, :post, headers, [request_data]#, cur_page page = @agent.fetch uri, :post, headers, [request_data]#, cur_page
#add_to_history(page) #add_to_history(page)
#page page
end end
def request_headers def request_headers

View File

@ -14,8 +14,8 @@ module MechanizeCr
def fetch(uri, method = :get, headers = HTTP::Headers.new, params = Hash(String,String).new) def fetch(uri, method = :get, headers = HTTP::Headers.new, params = Hash(String,String).new)
uri = URI.parse(uri) uri = URI.parse(uri)
set_request_headers(headers) set_request_headers(headers)
params = hash_to_params(params) uri, params = resolve_parameters(uri, method, params)
response = http_request uri, method, params response = http_request(uri, method, params)
body = response.not_nil!.body body = response.not_nil!.body
page = response_parse(response, body, uri) page = response_parse(response, body, uri)
# save cookies # save cookies
@ -24,13 +24,13 @@ module MechanizeCr
end end
def http_request(uri, method, params) def http_request(uri, method, params)
client = ::HTTP::Client.new(uri.host.not_nil!)
path = compose_path(uri, params)
case uri.scheme.not_nil!.downcase case uri.scheme.not_nil!.downcase
when "http", "https" then when "http", "https" then
case method case method
when :get when :get
client.get(path, headers: request_headers) ::HTTP::Client.get(uri, headers: request_headers)
when :post
#client.post(path)
end end
end end
end end
@ -41,14 +41,15 @@ module MechanizeCr
end end
end end
private def hash_to_params(params) private def resolve_parameters(uri, method, params)
URI::Params.encode(params) case method
when :get
query = URI::Params.encode(params)
uri.query = query
return uri, nil
else
return uri, params
end end
private def compose_path(uri, params)
path = uri.path
path += "?#{params}" unless params.empty?
path
end end
private def response_parse(response, body, uri) private def response_parse(response, body, uri)