From 7d4b206dc13b5ebee04089240f851c3a4e62e2cb Mon Sep 17 00:00:00 2001 From: Kanezoh Date: Thu, 1 Jul 2021 12:08:23 +0900 Subject: [PATCH] add user agent --- src/mechanize.cr | 5 +++++ src/mechanize/http/agent.cr | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/mechanize.cr b/src/mechanize.cr index d96e658..1b0c3aa 100644 --- a/src/mechanize.cr +++ b/src/mechanize.cr @@ -6,9 +6,14 @@ require "./mechanize/errors/*" class Mechanize VERSION = "0.1.0" + + AGENT = { + "Mechanize" => "Mechanize/#{VERSION} Crystal/#{Crystal::VERSION} (https://github.com/Kanezoh/mechanize.cr)", + } def initialize() @agent = MechanizeCr::HTTP::Agent.new @agent.context = self + @agent.user_agent = AGENT["Mechanize"] end def get(uri : String | URI, headers = HTTP::Headers.new, params : Hash(String, String | Array(String)) = Hash(String,String).new) diff --git a/src/mechanize/http/agent.cr b/src/mechanize/http/agent.cr index 018302d..036d6da 100644 --- a/src/mechanize/http/agent.cr +++ b/src/mechanize/http/agent.cr @@ -6,16 +6,20 @@ module MechanizeCr class Agent property :request_headers, :context, :cookies property history : Array(Page) + property user_agent : String + def initialize(@context : Mechanize | Nil = nil) @history = Array(Page).new @request_headers = ::HTTP::Headers.new @context = context @cookies = Hash(String, ::HTTP::Cookies).new + @user_agent = "" end def fetch(uri, method = :get, headers = HTTP::Headers.new, params = Hash(String,String).new) uri = resolve(uri) set_request_headers(uri, headers) + request_user_agent uri, params = resolve_parameters(uri, method, params) response = http_request(uri, method, params) body = response.not_nil!.body @@ -119,6 +123,12 @@ module MechanizeCr cookies[host] << cookie end end + + private def request_user_agent + unless user_agent == "" + request_headers["User-Agent"] = user_agent + end + end end end end