cli: clieanup and save endpoints and me

This commit is contained in:
Peter Stuifzand 2018-05-12 13:41:08 +02:00
parent 3615bdb64d
commit fa969e3602
3 changed files with 66 additions and 21 deletions

View File

@ -25,19 +25,56 @@ func loadAuth(c *client.Client, filename string) error {
return err
}
c.Token = token.AccessToken
u, err := url.Parse(token.Me)
if err != nil {
return err
}
c.Me = u
return nil
}
func loadEndpoints(c *client.Client, me, filename string) error {
endpoints, err := indieauth.GetEndpoints(me)
func loadEndpoints(c *client.Client, me *url.URL, filename string) error {
var endpoints indieauth.Endpoints
f, err := os.Open(filename)
if err != nil {
return err
f, err = os.Create(filename)
if err != nil {
return err
}
defer f.Close()
endpoints, err = indieauth.GetEndpoints(me)
if err != nil {
return err
}
enc := json.NewEncoder(f)
err = enc.Encode(&endpoints)
if err != nil {
return err
}
} else {
defer f.Close()
dec := json.NewDecoder(f)
err = dec.Decode(&endpoints)
if err != nil {
return err
}
}
if endpoints.MicrosubEndpoint == "" {
return fmt.Errorf("Microsub Endpoint is missing")
}
u, err := url.Parse(endpoints.MicrosubEndpoint)
if err != nil {
return err
}
c.MicrosubEndpoint = u
return nil
}
@ -55,8 +92,15 @@ func main() {
}
defer f.Close()
me := os.Args[2]
me, err := url.Parse(os.Args[2])
if err != nil {
log.Fatal(err)
}
endpoints, err := indieauth.GetEndpoints(me)
if err != nil {
log.Fatal(err)
}
token, err := indieauth.Authorize(me, endpoints)
if err != nil {
@ -64,25 +108,28 @@ func main() {
}
enc := json.NewEncoder(f)
enc.Encode(token)
err = enc.Encode(token)
if err != nil {
log.Fatal(err)
}
log.Println("Authorization successful")
return
}
me := os.Args[2]
var c client.Client
err := loadAuth(&c, "/home/peter/.config/microsub/client.json")
if err != nil {
log.Fatal(err)
}
err = loadEndpoints(&c, me, "/home/peter/.config/microsub/endpoints.json")
err = loadEndpoints(&c, c.Me, "/home/peter/.config/microsub/endpoints.json")
if err != nil {
log.Fatal(err)
}
if len(os.Args) == 3 && os.Args[1] == "channels" {
if len(os.Args) == 2 && os.Args[1] == "channels" {
channels := c.ChannelsGetList()
for _, ch := range channels {

View File

@ -11,6 +11,7 @@ import (
)
type Client struct {
Me *url.URL
MicrosubEndpoint *url.URL
Token string
}

View File

@ -13,10 +13,10 @@ import (
)
type Endpoints struct {
AuthorizationEndpoint string
TokenEndpoint string
MicropubEndpoint string
MicrosubEndpoint string
AuthorizationEndpoint string `json:"authorization_endpoint"`
TokenEndpoint string `json:"token_endpoint"`
MicropubEndpoint string `json:"micropub_endpoint"`
MicrosubEndpoint string `json:"microsub_endpoint"`
}
type TokenResponse struct {
@ -26,15 +26,12 @@ type TokenResponse struct {
Scope string `json:"scope"`
}
func GetEndpoints(me string) (Endpoints, error) {
func GetEndpoints(me *url.URL) (Endpoints, error) {
var endpoints Endpoints
baseURL, err := url.Parse(me)
if err != nil {
return endpoints, err
}
baseURL := me
res, err := http.Get(me)
res, err := http.Get(me.String())
if err != nil {
return endpoints, err
}
@ -58,7 +55,7 @@ func GetEndpoints(me string) (Endpoints, error) {
return endpoints, nil
}
func Authorize(me string, endpoints Endpoints) (TokenResponse, error) {
func Authorize(me *url.URL, endpoints Endpoints) (TokenResponse, error) {
var tokenResponse TokenResponse
authURL, err := url.Parse(endpoints.AuthorizationEndpoint)
@ -78,7 +75,7 @@ func Authorize(me string, endpoints Endpoints) (TokenResponse, error) {
q := authURL.Query()
q.Add("response_type", "code")
q.Add("me", me)
q.Add("me", me.String())
q.Add("client_id", clientID)
q.Add("redirect_uri", redirectURI)
q.Add("state", state)
@ -128,7 +125,7 @@ func Authorize(me string, endpoints Endpoints) (TokenResponse, error) {
reqValues.Add("code", code)
reqValues.Add("redirect_uri", redirectURI)
reqValues.Add("client_id", clientID)
reqValues.Add("me", me)
reqValues.Add("me", me.String())
res, err := http.PostForm(endpoints.TokenEndpoint, reqValues)
if err != nil {