From fb6cebc8dcfe5381626f722984406a835103b52d Mon Sep 17 00:00:00 2001 From: "A. Svensson" Date: Mon, 30 Nov 2015 19:30:01 +0100 Subject: [PATCH 1/3] Allow setting custom user agent string. --- document.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/document.go b/document.go index 94c32ba..8b3f358 100644 --- a/document.go +++ b/document.go @@ -34,6 +34,7 @@ import ( "fmt" "io" "io/ioutil" + "log" "net/http" "os" "strings" @@ -51,6 +52,8 @@ type Document struct { Entity map[string]string // Mapping of custom entity conversions. Root *Node // The document's root node. SaveDocType bool // Whether not to include the XML doctype in saves. + + useragent string // Used internally } // Create a new, empty XML document instance. @@ -194,7 +197,14 @@ func (this *Document) LoadFile(filename string, charset CharsetFunc) (err error) // client. func (this *Document) LoadUriClient(uri string, client *http.Client, charset CharsetFunc) (err error) { var r *http.Response - if r, err = client.Get(uri); err != nil { + + req, err := http.NewRequest("GET", uri, nil) + if err != nil { + log.Fatalln(err) // TODO + } + req.Header.Set("User-Agent", this.useragent) + + if r, err = client.Do(req); err != nil { return } @@ -242,3 +252,8 @@ func (this *Document) SaveStream(w io.Writer) (err error) { _, err = w.Write(this.SaveBytes()) return } + +// Set a custom user agent when making a new request. +func (this *Document) SetUserAgent(s string) { + this.useragent = s +} From 6abeb2c101529fac23c11c5715ad2849ef8d51b8 Mon Sep 17 00:00:00 2001 From: "A. Svensson" Date: Mon, 30 Nov 2015 19:32:32 +0100 Subject: [PATCH 2/3] Do not atempt to set nil user agents. --- document.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/document.go b/document.go index 8b3f358..0635a17 100644 --- a/document.go +++ b/document.go @@ -202,7 +202,9 @@ func (this *Document) LoadUriClient(uri string, client *http.Client, charset Cha if err != nil { log.Fatalln(err) // TODO } - req.Header.Set("User-Agent", this.useragent) + if len(this.useragent) > 1 { + req.Header.Set("User-Agent", this.useragent) + } if r, err = client.Do(req); err != nil { return From b5ae4aeda662a1033861c78cd1f32ea580ca0910 Mon Sep 17 00:00:00 2001 From: "A. Svensson" Date: Mon, 30 Nov 2015 20:31:22 +0100 Subject: [PATCH 3/3] Ops, some leftover crap. --- document.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/document.go b/document.go index 0635a17..f16857b 100644 --- a/document.go +++ b/document.go @@ -34,7 +34,6 @@ import ( "fmt" "io" "io/ioutil" - "log" "net/http" "os" "strings" @@ -200,7 +199,7 @@ func (this *Document) LoadUriClient(uri string, client *http.Client, charset Cha req, err := http.NewRequest("GET", uri, nil) if err != nil { - log.Fatalln(err) // TODO + return } if len(this.useragent) > 1 { req.Header.Set("User-Agent", this.useragent)