file download

This commit is contained in:
Kanezoh 2021-08-22 09:47:10 +09:00
parent b0aec842ee
commit ae0650d2be
2 changed files with 28 additions and 2 deletions

View File

@ -56,4 +56,11 @@ describe "Mechanize Agent test" do
agent2.history.size.should eq 1 agent2.history.size.should eq 1
agent2.history.pop.uri.to_s.should eq "http://example.com/form" agent2.history.pop.uri.to_s.should eq "http://example.com/form"
end end
it "can download page" do
agent = Mechanize.new
agent.download("http://example.com", "mechanizecr_example.html")
File.exists?("mechanizecr_example.html").should eq true
File.delete("mechanizecr_example.html")
end
end end

View File

@ -17,7 +17,9 @@ class Mechanize
@agent.user_agent = AGENT["Mechanize"] @agent.user_agent = AGENT["Mechanize"]
end end
def get(uri : String | URI, headers = HTTP::Headers.new, params : Hash(String, String | Array(String)) = Hash(String, String).new) def get(uri : String | URI,
headers = HTTP::Headers.new,
params : Hash(String, String | Array(String)) = Hash(String, String).new)
method = :get method = :get
page = @agent.fetch uri, method, headers, params page = @agent.fetch uri, method, headers, params
add_to_history(page) add_to_history(page)
@ -25,7 +27,9 @@ class Mechanize
page page
end end
def post(uri : String | URI, headers = HTTP::Headers.new, query : Hash(String, String | Array(String)) = Hash(String, String).new) def post(uri : String | URI,
headers = HTTP::Headers.new,
query : Hash(String, String | Array(String)) = Hash(String, String).new)
node = Node.new node = Node.new
node["method"] = "POST" node["method"] = "POST"
node["enctype"] = "application/x-www-form-urlencoded" node["enctype"] = "application/x-www-form-urlencoded"
@ -119,4 +123,19 @@ class Mechanize
href = link.href href = link.href
get href get href
end end
# download page body from given uri.
# TODO: except this request from history.
def download(uri,
filename,
headers = HTTP::Headers.new,
params : Hash(String, String | Array(String)) = Hash(String, String).new)
page = get(uri, headers, params)
case page
when MechanizeCr::File
File.write(filename, page.body)
end
page
end
end end