cosmetic change

pull/2/head^2
Yasuhiro Matsumoto 2017-04-14 09:03:32 +09:00
parent a55b0a3d31
commit 106cec241e
1 changed files with 57 additions and 57 deletions

View File

@ -64,6 +64,63 @@ func (c *client) Authenticate(username, password string) error {
return nil
}
// AppConfig is a setting for registering applications.
type AppConfig struct {
http.Client
Server string
ClientName string
// Where the user should be redirected after authorization (for no redirect, use urn:ietf:wg:oauth:2.0:oob)
RedirectURIs string
// This can be a space-separated list of the following items: "read", "write" and "follow".
Scopes string
// Optional.
Website string
}
// Application is mastodon application.
type Application struct {
ID int64 `json:"id"`
RedirectURI string `json:"redirect_uri"`
ClientID string `json:"client_id"`
ClientSecret string `json:"client_secret"`
}
// RegisterApp returns the mastodon application.
func RegisterApp(appConfig *AppConfig) (*Application, error) {
params := url.Values{}
params.Set("client_name", appConfig.ClientName)
params.Set("redirect_uris", appConfig.RedirectURIs)
params.Set("scopes", appConfig.Scopes)
params.Set("website", appConfig.Website)
url, err := url.Parse(appConfig.Server)
if err != nil {
return nil, err
}
url.Path = path.Join(url.Path, "/api/v1/apps")
req, err := http.NewRequest("POST", url.String(), strings.NewReader(params.Encode()))
if err != nil {
return nil, err
}
resp, err := appConfig.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
app := &Application{}
err = json.NewDecoder(resp.Body).Decode(app)
if err != nil {
return nil, err
}
return app, nil
}
type Visibility int64
type Toot struct {
@ -171,60 +228,3 @@ func (c *client) PostStatus(toot *Toot) (*Status, error) {
}
return &status, nil
}
// AppConfig is a setting for registering applications.
type AppConfig struct {
http.Client
Server string
ClientName string
// Where the user should be redirected after authorization (for no redirect, use urn:ietf:wg:oauth:2.0:oob)
RedirectURIs string
// This can be a space-separated list of the following items: "read", "write" and "follow".
Scopes string
// Optional.
Website string
}
// Application is mastodon application.
type Application struct {
ID int64 `json:"id"`
RedirectURI string `json:"redirect_uri"`
ClientID string `json:"client_id"`
ClientSecret string `json:"client_secret"`
}
// RegisterApp returns the mastodon application.
func RegisterApp(appConfig *AppConfig) (*Application, error) {
params := url.Values{}
params.Set("client_name", appConfig.ClientName)
params.Set("redirect_uris", appConfig.RedirectURIs)
params.Set("scopes", appConfig.Scopes)
params.Set("website", appConfig.Website)
url, err := url.Parse(appConfig.Server)
if err != nil {
return nil, err
}
url.Path = path.Join(url.Path, "/api/v1/apps")
req, err := http.NewRequest("POST", url.String(), strings.NewReader(params.Encode()))
if err != nil {
return nil, err
}
resp, err := appConfig.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
app := &Application{}
err = json.NewDecoder(resp.Body).Decode(app)
if err != nil {
return nil, err
}
return app, nil
}