commit 95faebe60dfcb1ba62a81932e14e876ea9993cd7
parent 1b118841211da90381dd950cafa13ead78b7f589
Author: tsmethurst <tobi.smethurst@klarrio.com>
Date: Thu, 18 Mar 2021 23:54:07 +0100
extend application for use in oauth
Diffstat:
2 files changed, 62 insertions(+), 2 deletions(-)
diff --git a/internal/gtsmodel/application.go b/internal/gtsmodel/application.go
@@ -0,0 +1,34 @@
+/*
+ GoToSocial
+ Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+package gtsmodel
+
+type Application struct {
+ ID string `pg:"type:uuid,default:gen_random_uuid(),pk,notnull"`
+ Name string `json:"name"`
+ // The website associated with your application (url)
+ Website string `json:"website,omitempty"`
+ // Where the user should be redirected after authorization.
+ RedirectURI string `json:"redirect_uri"`
+ // ClientID to use when obtaining an oauth token for this application (ie., in client_id parameter of https://docs.joinmastodon.org/methods/apps/)
+ ClientID string `json:"client_id"`
+ // Client secret to use when obtaining an auth token for this application (ie., in client_secret parameter of https://docs.joinmastodon.org/methods/apps/)
+ ClientSecret string `json:"client_secret"`
+ // Used for Push Streaming API. Returned with POST /api/v1/apps. Equivalent to https://docs.joinmastodon.org/entities/pushsubscription/#server_key
+ VapidKey string `json:"vapid_key"`
+}
diff --git a/pkg/mastotypes/application.go b/pkg/mastotypes/application.go
@@ -18,12 +18,38 @@
package mastotypes
-// Application represents a mastodon-api Application, as defined here: https://docs.joinmastodon.org/entities/application/
+// Application represents a mastodon-api Application, as defined here: https://docs.joinmastodon.org/entities/application/.
+// Primarily, application is used for allowing apps like Tusky etc to connect to Mastodon on behalf of a user.
+// See https://docs.joinmastodon.org/methods/apps/
type Application struct {
+ // The application ID in the db
+ ID string `json:"id,omitempty"`
// The name of your application.
Name string `json:"name"`
// The website associated with your application (url)
- Website string `json:"website"`
+ Website string `json:"website,omitempty"`
+ // Where the user should be redirected after authorization.
+ RedirectURI string `json:"redirect_uri,omitempty"`
+ // ClientID to use when obtaining an oauth token for this application (ie., in client_id parameter of https://docs.joinmastodon.org/methods/apps/)
+ ClientID string `json:"client_id,omitempty"`
+ // Client secret to use when obtaining an auth token for this application (ie., in client_secret parameter of https://docs.joinmastodon.org/methods/apps/)
+ ClientSecret string `json:"client_secret,omitempty"`
// Used for Push Streaming API. Returned with POST /api/v1/apps. Equivalent to https://docs.joinmastodon.org/entities/pushsubscription/#server_key
VapidKey string `json:"vapid_key"`
}
+
+// ApplicationPOSTRequest represents a POST request to https://example.org/api/v1/apps.
+// See here: https://docs.joinmastodon.org/methods/apps/
+// And here: https://docs.joinmastodon.org/client/token/
+type ApplicationPOSTRequest struct {
+ // A name for your application
+ ClientName string `form:"client_name"`
+ // Where the user should be redirected after authorization.
+ // To display the authorization code to the user instead of redirecting
+ // to a web page, use urn:ietf:wg:oauth:2.0:oob in this parameter.
+ RedirectURIs string `form:"redirect_uris"`
+ // Space separated list of scopes. If none is provided, defaults to read.
+ Scopes string `form:"scopes"`
+ // A URL to the homepage of your app
+ Website string `form:"website"`
+}