Page MenuHomeMusing Studio

No OneTemporary

diff --git a/cmd/writeas/api.go b/cmd/writeas/api.go
index fccecd0..abe8d7f 100644
--- a/cmd/writeas/api.go
+++ b/cmd/writeas/api.go
@@ -1,149 +1,167 @@
package main
import (
"fmt"
"github.com/atotto/clipboard"
"github.com/writeas/go-writeas"
"gopkg.in/urfave/cli.v1"
)
const (
defaultUserAgent = "writeas-cli v" + version
)
func client(userAgent string, tor bool) *writeas.Client {
var client *writeas.Client
if tor {
client = writeas.NewTorClient(torPort)
} else {
client = writeas.NewClient()
}
client.UserAgent = userAgent
return client
}
+func newClient(c *cli.Context) *writeas.Client {
+ var client *writeas.Client
+ if isTor(c) {
+ client = writeas.NewTorClient(torPort)
+ } else {
+ client = writeas.NewClient()
+ }
+ client.UserAgent = userAgent(c)
+ u, _ := loadUser()
+ if u != nil {
+ client.SetToken(u.AccessToken)
+ }
+
+ return client
+}
+
// DoFetch retrieves the Write.as post with the given friendlyID,
// optionally via the Tor hidden service.
func DoFetch(friendlyID, ua string, tor bool) error {
cl := client(ua, tor)
p, err := cl.GetPost(friendlyID)
if err != nil {
return err
}
fmt.Printf("%s\n", string(p.Content))
return nil
}
// DoPost creates a Write.as post, returning an error if it was
// unsuccessful.
func DoPost(c *cli.Context, post []byte, font string, encrypt, tor, code bool) error {
- cl := client(userAgent(c), tor)
+ cl := newClient(c)
p, err := cl.CreatePost(&writeas.PostParams{
// TODO: extract title
Content: string(post),
Font: getFont(code, font),
})
if err != nil {
return fmt.Errorf("Unable to post: %v", err)
}
url := writeasBaseURL
if tor {
url = torBaseURL
}
url += "/" + p.ID
- // Store post locally
- addPost(p.ID, p.Token)
+ if cl.Token() == "" {
+ // Store post locally, since we're not authenticated
+ addPost(p.ID, p.Token)
+ }
// Copy URL to clipboard
err = clipboard.WriteAll(string(url))
if err != nil {
Errorln("writeas: Didn't copy to clipboard: %s", err)
} else {
Info(c, "Copied to clipboard.")
}
// Output URL
fmt.Printf("%s\n", url)
return nil
}
// DoUpdate updates the given post on Write.as.
func DoUpdate(c *cli.Context, post []byte, friendlyID, token, font string, tor, code bool) error {
- cl := client(userAgent(c), tor)
+ cl := newClient(c)
params := writeas.PostParams{
ID: friendlyID,
Token: token,
Content: string(post),
// TODO: extract title
}
if code || font != "" {
params.Font = getFont(code, font)
}
_, err := cl.UpdatePost(&params)
if err != nil {
if debug {
ErrorlnQuit("Problem updating: %v", err)
}
return fmt.Errorf("Post doesn't exist, or bad edit token given.")
}
if tor {
Info(c, "Post updated via hidden service.")
} else {
Info(c, "Post updated.")
}
return nil
}
// DoDelete deletes the given post on Write.as.
func DoDelete(c *cli.Context, friendlyID, token string, tor bool) error {
- cl := client(userAgent(c), tor)
+ cl := newClient(c)
err := cl.DeletePost(&writeas.PostParams{
ID: friendlyID,
Token: token,
})
if err != nil {
if debug {
ErrorlnQuit("Problem deleting: %v", err)
}
return fmt.Errorf("Post doesn't exist, or bad edit token given.")
}
if tor {
Info(c, "Post deleted from hidden service.")
} else {
Info(c, "Post deleted.")
}
removePost(friendlyID)
return nil
}
func DoLogIn(c *cli.Context, username, password string) error {
cl := client(userAgent(c), isTor(c))
u, err := cl.LogIn(username, password)
if err != nil {
if debug {
ErrorlnQuit("Problem logging in: %v", err)
}
return err
}
err = saveUser(u)
if err != nil {
return err
}
fmt.Printf("Logged in as %s.\n", u.User.Username)
return nil
}

File Metadata

Mime Type
text/x-diff
Expires
Fri, Jan 30, 1:15 AM (1 d, 7 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3610007

Event Timeline