cli: clieanup and save endpoints and me
This commit is contained in:
parent
3615bdb64d
commit
fa969e3602
|
@ -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 {
|
||||
|
|
|
@ -11,6 +11,7 @@ import (
|
|||
)
|
||||
|
||||
type Client struct {
|
||||
Me *url.URL
|
||||
MicrosubEndpoint *url.URL
|
||||
Token string
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue
Block a user