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
|
return err
|
||||||
}
|
}
|
||||||
c.Token = token.AccessToken
|
c.Token = token.AccessToken
|
||||||
|
|
||||||
|
u, err := url.Parse(token.Me)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
c.Me = u
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadEndpoints(c *client.Client, me, filename string) error {
|
func loadEndpoints(c *client.Client, me *url.URL, filename string) error {
|
||||||
endpoints, err := indieauth.GetEndpoints(me)
|
var endpoints indieauth.Endpoints
|
||||||
|
|
||||||
|
f, err := os.Open(filename)
|
||||||
if err != nil {
|
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)
|
u, err := url.Parse(endpoints.MicrosubEndpoint)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
c.MicrosubEndpoint = u
|
c.MicrosubEndpoint = u
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
@ -55,8 +92,15 @@ func main() {
|
||||||
}
|
}
|
||||||
defer f.Close()
|
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)
|
endpoints, err := indieauth.GetEndpoints(me)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
token, err := indieauth.Authorize(me, endpoints)
|
token, err := indieauth.Authorize(me, endpoints)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -64,25 +108,28 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
enc := json.NewEncoder(f)
|
enc := json.NewEncoder(f)
|
||||||
enc.Encode(token)
|
err = enc.Encode(token)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
log.Println("Authorization successful")
|
log.Println("Authorization successful")
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
me := os.Args[2]
|
|
||||||
var c client.Client
|
var c client.Client
|
||||||
err := loadAuth(&c, "/home/peter/.config/microsub/client.json")
|
err := loadAuth(&c, "/home/peter/.config/microsub/client.json")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
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 {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(os.Args) == 3 && os.Args[1] == "channels" {
|
if len(os.Args) == 2 && os.Args[1] == "channels" {
|
||||||
channels := c.ChannelsGetList()
|
channels := c.ChannelsGetList()
|
||||||
|
|
||||||
for _, ch := range channels {
|
for _, ch := range channels {
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Client struct {
|
type Client struct {
|
||||||
|
Me *url.URL
|
||||||
MicrosubEndpoint *url.URL
|
MicrosubEndpoint *url.URL
|
||||||
Token string
|
Token string
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,10 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Endpoints struct {
|
type Endpoints struct {
|
||||||
AuthorizationEndpoint string
|
AuthorizationEndpoint string `json:"authorization_endpoint"`
|
||||||
TokenEndpoint string
|
TokenEndpoint string `json:"token_endpoint"`
|
||||||
MicropubEndpoint string
|
MicropubEndpoint string `json:"micropub_endpoint"`
|
||||||
MicrosubEndpoint string
|
MicrosubEndpoint string `json:"microsub_endpoint"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type TokenResponse struct {
|
type TokenResponse struct {
|
||||||
|
|
@ -26,15 +26,12 @@ type TokenResponse struct {
|
||||||
Scope string `json:"scope"`
|
Scope string `json:"scope"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetEndpoints(me string) (Endpoints, error) {
|
func GetEndpoints(me *url.URL) (Endpoints, error) {
|
||||||
var endpoints Endpoints
|
var endpoints Endpoints
|
||||||
|
|
||||||
baseURL, err := url.Parse(me)
|
baseURL := me
|
||||||
if err != nil {
|
|
||||||
return endpoints, err
|
|
||||||
}
|
|
||||||
|
|
||||||
res, err := http.Get(me)
|
res, err := http.Get(me.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return endpoints, err
|
return endpoints, err
|
||||||
}
|
}
|
||||||
|
|
@ -58,7 +55,7 @@ func GetEndpoints(me string) (Endpoints, error) {
|
||||||
return endpoints, nil
|
return endpoints, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func Authorize(me string, endpoints Endpoints) (TokenResponse, error) {
|
func Authorize(me *url.URL, endpoints Endpoints) (TokenResponse, error) {
|
||||||
var tokenResponse TokenResponse
|
var tokenResponse TokenResponse
|
||||||
|
|
||||||
authURL, err := url.Parse(endpoints.AuthorizationEndpoint)
|
authURL, err := url.Parse(endpoints.AuthorizationEndpoint)
|
||||||
|
|
@ -78,7 +75,7 @@ func Authorize(me string, endpoints Endpoints) (TokenResponse, error) {
|
||||||
|
|
||||||
q := authURL.Query()
|
q := authURL.Query()
|
||||||
q.Add("response_type", "code")
|
q.Add("response_type", "code")
|
||||||
q.Add("me", me)
|
q.Add("me", me.String())
|
||||||
q.Add("client_id", clientID)
|
q.Add("client_id", clientID)
|
||||||
q.Add("redirect_uri", redirectURI)
|
q.Add("redirect_uri", redirectURI)
|
||||||
q.Add("state", state)
|
q.Add("state", state)
|
||||||
|
|
@ -128,7 +125,7 @@ func Authorize(me string, endpoints Endpoints) (TokenResponse, error) {
|
||||||
reqValues.Add("code", code)
|
reqValues.Add("code", code)
|
||||||
reqValues.Add("redirect_uri", redirectURI)
|
reqValues.Add("redirect_uri", redirectURI)
|
||||||
reqValues.Add("client_id", clientID)
|
reqValues.Add("client_id", clientID)
|
||||||
reqValues.Add("me", me)
|
reqValues.Add("me", me.String())
|
||||||
|
|
||||||
res, err := http.PostForm(endpoints.TokenEndpoint, reqValues)
|
res, err := http.PostForm(endpoints.TokenEndpoint, reqValues)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user