123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- // Discordgo - Discord bindings for Go
- // Available at https://github.com/bwmarrin/discordgo
- // Copyright 2015-2016 Bruce Marriner <bruce@sqls.net>. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- // This file contains functions related to Discord OAuth2 endpoints
- package discordgo
- // ------------------------------------------------------------------------------------------------
- // Code specific to Discord OAuth2 Applications
- // ------------------------------------------------------------------------------------------------
- // The MembershipState represents whether the user is in the team or has been invited into it
- type MembershipState int
- // Constants for the different stages of the MembershipState
- const (
- MembershipStateInvited MembershipState = 1
- MembershipStateAccepted MembershipState = 2
- )
- // A TeamMember struct stores values for a single Team Member, extending the normal User data - note that the user field is partial
- type TeamMember struct {
- User *User `json:"user"`
- TeamID string `json:"team_id"`
- MembershipState MembershipState `json:"membership_state"`
- Permissions []string `json:"permissions"`
- }
- // A Team struct stores the members of a Discord Developer Team as well as some metadata about it
- type Team struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Description string `json:"description"`
- Icon string `json:"icon"`
- OwnerID string `json:"owner_user_id"`
- Members []*TeamMember `json:"members"`
- }
- // Application returns an Application structure of a specific Application
- // appID : The ID of an Application
- func (s *Session) Application(appID string) (st *Application, err error) {
- body, err := s.RequestWithBucketID("GET", EndpointOAuth2Application(appID), nil, EndpointOAuth2Application(""))
- if err != nil {
- return
- }
- err = unmarshal(body, &st)
- return
- }
- // Applications returns all applications for the authenticated user
- func (s *Session) Applications() (st []*Application, err error) {
- body, err := s.RequestWithBucketID("GET", EndpointOAuth2Applications, nil, EndpointOAuth2Applications)
- if err != nil {
- return
- }
- err = unmarshal(body, &st)
- return
- }
- // ApplicationCreate creates a new Application
- // name : Name of Application / Bot
- // uris : Redirect URIs (Not required)
- func (s *Session) ApplicationCreate(ap *Application) (st *Application, err error) {
- data := struct {
- Name string `json:"name"`
- Description string `json:"description"`
- }{ap.Name, ap.Description}
- body, err := s.RequestWithBucketID("POST", EndpointOAuth2Applications, data, EndpointOAuth2Applications)
- if err != nil {
- return
- }
- err = unmarshal(body, &st)
- return
- }
- // ApplicationUpdate updates an existing Application
- // var : desc
- func (s *Session) ApplicationUpdate(appID string, ap *Application) (st *Application, err error) {
- data := struct {
- Name string `json:"name"`
- Description string `json:"description"`
- }{ap.Name, ap.Description}
- body, err := s.RequestWithBucketID("PUT", EndpointOAuth2Application(appID), data, EndpointOAuth2Application(""))
- if err != nil {
- return
- }
- err = unmarshal(body, &st)
- return
- }
- // ApplicationDelete deletes an existing Application
- // appID : The ID of an Application
- func (s *Session) ApplicationDelete(appID string) (err error) {
- _, err = s.RequestWithBucketID("DELETE", EndpointOAuth2Application(appID), nil, EndpointOAuth2Application(""))
- if err != nil {
- return
- }
- return
- }
- // Asset struct stores values for an asset of an application
- type Asset struct {
- Type int `json:"type"`
- ID string `json:"id"`
- Name string `json:"name"`
- }
- // ApplicationAssets returns an application's assets
- func (s *Session) ApplicationAssets(appID string) (ass []*Asset, err error) {
- body, err := s.RequestWithBucketID("GET", EndpointOAuth2ApplicationAssets(appID), nil, EndpointOAuth2ApplicationAssets(""))
- if err != nil {
- return
- }
- err = unmarshal(body, &ass)
- return
- }
- // ------------------------------------------------------------------------------------------------
- // Code specific to Discord OAuth2 Application Bots
- // ------------------------------------------------------------------------------------------------
- // ApplicationBotCreate creates an Application Bot Account
- //
- // appID : The ID of an Application
- //
- // NOTE: func name may change, if I can think up something better.
- func (s *Session) ApplicationBotCreate(appID string) (st *User, err error) {
- body, err := s.RequestWithBucketID("POST", EndpointOAuth2ApplicationsBot(appID), nil, EndpointOAuth2ApplicationsBot(""))
- if err != nil {
- return
- }
- err = unmarshal(body, &st)
- return
- }
|