Skip to content

Commit f494e6d

Browse files
committed
Support setting custom User-Agent
1 parent 32a4bd6 commit f494e6d

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

cmd/writeas/api.go

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,18 @@ import (
1212
"strings"
1313
)
1414

15+
const (
16+
defaultUserAgent = "writeas-cli v" + version
17+
)
18+
19+
func userAgent(c *cli.Context) string {
20+
ua := c.String("user-agent")
21+
if ua == "" {
22+
return defaultUserAgent
23+
}
24+
return ua + " (" + defaultUserAgent + ")"
25+
}
26+
1527
func client(read, tor bool, path, query string) (string, *http.Client) {
1628
var u *url.URL
1729
var client *http.Client
@@ -34,13 +46,13 @@ func client(read, tor bool, path, query string) (string, *http.Client) {
3446

3547
// DoFetch retrieves the Write.as post with the given friendlyID,
3648
// optionally via the Tor hidden service.
37-
func DoFetch(friendlyID string, tor bool) error {
49+
func DoFetch(friendlyID, ua string, tor bool) error {
3850
path := friendlyID
3951

4052
urlStr, client := client(true, tor, path, "")
4153

4254
r, _ := http.NewRequest("GET", urlStr, nil)
43-
r.Header.Add("User-Agent", "writeas-cli v"+version)
55+
r.Header.Add("User-Agent", ua)
4456

4557
resp, err := client.Do(r)
4658
if err != nil {
@@ -76,7 +88,7 @@ func DoPost(c *cli.Context, post []byte, font string, encrypt, tor, code bool) e
7688
urlStr, client := client(false, tor, "", "")
7789

7890
r, _ := http.NewRequest("POST", urlStr, bytes.NewBufferString(data.Encode()))
79-
r.Header.Add("User-Agent", "writeas-cli v"+version)
91+
r.Header.Add("User-Agent", userAgent(c))
8092
r.Header.Add("Content-Type", "application/x-www-form-urlencoded")
8193
r.Header.Add("Content-Length", strconv.Itoa(len(data.Encode())))
8294

@@ -130,7 +142,7 @@ func DoUpdate(c *cli.Context, post []byte, friendlyID, token, font string, tor,
130142
}
131143

132144
r, _ := http.NewRequest("POST", urlStr, bytes.NewBufferString(data.Encode()))
133-
r.Header.Add("User-Agent", "writeas-cli v"+version)
145+
r.Header.Add("User-Agent", userAgent(c))
134146
r.Header.Add("Content-Type", "application/x-www-form-urlencoded")
135147
r.Header.Add("Content-Length", strconv.Itoa(len(data.Encode())))
136148

@@ -161,7 +173,7 @@ func DoDelete(c *cli.Context, friendlyID, token string, tor bool) error {
161173
urlStr, client := client(false, tor, friendlyID, fmt.Sprintf("t=%s", token))
162174

163175
r, _ := http.NewRequest("DELETE", urlStr, nil)
164-
r.Header.Add("User-Agent", "writeas-cli v"+version)
176+
r.Header.Add("User-Agent", userAgent(c))
165177
r.Header.Add("Content-Type", "application/x-www-form-urlencoded")
166178

167179
resp, err := client.Do(r)

cmd/writeas/cli.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ var postFlags = []cli.Flag{
4949
Usage: "Sets post font to given value",
5050
Value: defaultFont,
5151
},
52+
cli.StringFlag{
53+
Name: "user-agent",
54+
Usage: "Sets the User-Agent for API requests",
55+
Value: "",
56+
},
5257
}
5358

5459
func main() {

cmd/writeas/commands.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func cmdGet(c *cli.Context) error {
120120
Info(c, "Getting...")
121121
}
122122

123-
return DoFetch(friendlyID, tor)
123+
return DoFetch(friendlyID, userAgent(c), tor)
124124
}
125125

126126
func cmdAdd(c *cli.Context) error {

0 commit comments

Comments
 (0)