@@ -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+
1527func 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 )
0 commit comments