Browse Source

move LoadUser call out of newClient

to start on a fix for user actions when logged in with one user on a
given host with the wf binary, a user should now only be loaded by the
caller of newClient.

newClient no longer takes a bool for authRequired, all calls
updated to new signature and load the user where required.
pull/36/head
Rob Loranger 4 years ago
parent
commit
b85673b799
No known key found for this signature in database GPG Key ID: D6F1633A4F0903B8
3 changed files with 49 additions and 18 deletions
  1. +30
    -16
      api/api.go
  2. +10
    -1
      api/posts.go
  3. +9
    -1
      api/sync.go

+ 30
- 16
api/api.go View File

@@ -25,7 +25,7 @@ func HostURL(c *cli.Context) string {
return scheme + host
}

func newClient(c *cli.Context, authRequired bool) (*writeas.Client, error) {
func newClient(c *cli.Context) (*writeas.Client, error) {
var client *writeas.Client
var clientConfig writeas.Config
cfg, err := config.LoadConfig(config.UserDataDir(c.App.ExtraInfo()["configDir"]))
@@ -50,13 +50,6 @@ func newClient(c *cli.Context, authRequired bool) (*writeas.Client, error) {

client = writeas.NewClientWith(clientConfig)
client.UserAgent = config.UserAgent(c)
// TODO: load user into var shared across the app
u, _ := config.LoadUser(c)
if u != nil {
client.SetToken(u.AccessToken)
} else if authRequired {
return nil, fmt.Errorf("Not currently logged in. Authenticate with: " + executable.Name() + " auth <username>")
}

return client, nil
}
@@ -64,7 +57,7 @@ func newClient(c *cli.Context, authRequired bool) (*writeas.Client, error) {
// DoFetch retrieves the Write.as post with the given friendlyID,
// optionally via the Tor hidden service.
func DoFetch(c *cli.Context, friendlyID string) error {
cl, err := newClient(c, false)
cl, err := newClient(c)
if err != nil {
return err
}
@@ -84,11 +77,18 @@ func DoFetch(c *cli.Context, friendlyID string) error {
// DoFetchPosts retrieves all remote posts for the
// authenticated user
func DoFetchPosts(c *cli.Context) ([]writeas.Post, error) {
cl, err := newClient(c, true)
cl, err := newClient(c)
if err != nil {
return nil, fmt.Errorf("%v", err)
}

u, _ := config.LoadUser(c)
if u != nil {
cl.SetToken(u.AccessToken)
} else {
return nil, fmt.Errorf("Not currently logged in. Authenticate with: " + executable.Name() + " auth <username>")
}

posts, err := cl.GetUserPosts()
if err != nil {
return nil, err
@@ -100,7 +100,7 @@ func DoFetchPosts(c *cli.Context) ([]writeas.Post, error) {
// DoPost creates a Write.as post, returning an error if it was
// unsuccessful.
func DoPost(c *cli.Context, post []byte, font string, encrypt, code bool) (*writeas.Post, error) {
cl, err := newClient(c, false)
cl, err := newClient(c)
if err != nil {
return nil, fmt.Errorf("%v", err)
}
@@ -166,7 +166,7 @@ func DoPost(c *cli.Context, post []byte, font string, encrypt, code bool) (*writ
// DoFetchCollections retrieves a list of the currently logged in users
// collections.
func DoFetchCollections(c *cli.Context) ([]RemoteColl, error) {
cl, err := newClient(c, true)
cl, err := newClient(c)
if err != nil {
if config.Debug() {
log.ErrorlnQuit("could not create client: %v", err)
@@ -174,6 +174,13 @@ func DoFetchCollections(c *cli.Context) ([]RemoteColl, error) {
return nil, fmt.Errorf("Couldn't create new client")
}

u, _ := config.LoadUser(c)
if u != nil {
cl.SetToken(u.AccessToken)
} else {
return nil, fmt.Errorf("Not currently logged in. Authenticate with: " + executable.Name() + " auth <username>")
}

colls, err := cl.GetUserCollections()
if err != nil {
if config.Debug() {
@@ -198,7 +205,7 @@ func DoFetchCollections(c *cli.Context) ([]RemoteColl, error) {

// DoUpdate updates the given post on Write.as.
func DoUpdate(c *cli.Context, post []byte, friendlyID, token, font string, code bool) error {
cl, err := newClient(c, false)
cl, err := newClient(c)
if err != nil {
return fmt.Errorf("%v", err)
}
@@ -224,7 +231,7 @@ func DoUpdate(c *cli.Context, post []byte, friendlyID, token, font string, code

// DoDelete deletes the given post on Write.as, and removes any local references
func DoDelete(c *cli.Context, friendlyID, token string) error {
cl, err := newClient(c, false)
cl, err := newClient(c)
if err != nil {
return fmt.Errorf("%v", err)
}
@@ -243,7 +250,7 @@ func DoDelete(c *cli.Context, friendlyID, token string) error {
}

func DoLogIn(c *cli.Context, username, password string) error {
cl, err := newClient(c, false)
cl, err := newClient(c)
if err != nil {
return fmt.Errorf("%v", err)
}
@@ -265,11 +272,18 @@ func DoLogIn(c *cli.Context, username, password string) error {
}

func DoLogOut(c *cli.Context) error {
cl, err := newClient(c, true)
cl, err := newClient(c)
if err != nil {
return fmt.Errorf("%v", err)
}

u, _ := config.LoadUser(c)
if u != nil {
cl.SetToken(u.AccessToken)
} else if c.App.Name == "writeas" {
return fmt.Errorf("Not currently logged in. Authenticate with: " + executable.Name() + " auth <username>")
}

err = cl.LogOut()
if err != nil {
if config.Debug() {


+ 10
- 1
api/posts.go View File

@@ -12,6 +12,7 @@ import (

writeas "github.com/writeas/go-writeas/v2"
"github.com/writeas/writeas-cli/config"
"github.com/writeas/writeas-cli/executable"
"github.com/writeas/writeas-cli/fileutils"
"github.com/writeas/writeas-cli/log"
cli "gopkg.in/urfave/cli.v1"
@@ -64,10 +65,18 @@ func AddPost(c *cli.Context, id, token string) error {
// ClaimPost adds a local post to the authenticated user's account and deletes
// the local reference
func ClaimPosts(c *cli.Context, localPosts *[]Post) (*[]writeas.ClaimPostResult, error) {
cl, err := newClient(c, true)
cl, err := newClient(c)
if err != nil {
return nil, err
}

u, _ := config.LoadUser(c)
if u != nil {
cl.SetToken(u.AccessToken)
} else {
return nil, fmt.Errorf("Not currently logged in. Authenticate with: " + executable.Name() + " auth <username>")
}

postsToClaim := make([]writeas.OwnedPostParams, len(*localPosts))
for i, post := range *localPosts {
postsToClaim[i] = writeas.OwnedPostParams{


+ 9
- 1
api/sync.go View File

@@ -8,6 +8,7 @@ import (
"path/filepath"

"github.com/writeas/writeas-cli/config"
"github.com/writeas/writeas-cli/executable"
"github.com/writeas/writeas-cli/fileutils"
"github.com/writeas/writeas-cli/log"
cli "gopkg.in/urfave/cli.v1"
@@ -28,11 +29,18 @@ func CmdPull(c *cli.Context) error {
syncSetUp(c, cfg)
}

cl, err := newClient(c, true)
cl, err := newClient(c)
if err != nil {
return err
}

u, _ := config.LoadUser(c)
if u != nil {
cl.SetToken(u.AccessToken)
} else {
return fmt.Errorf("Not currently logged in. Authenticate with: " + executable.Name() + " auth <username>")
}

// Fetch posts
posts, err := cl.GetUserPosts()
if err != nil {


Loading…
Cancel
Save