forked from lug/matterbridge
		
	
		
			
				
	
	
		
			122 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// 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
 | 
						|
// ------------------------------------------------------------------------------------------------
 | 
						|
 | 
						|
// An Application struct stores values for a Discord OAuth2 Application
 | 
						|
type Application struct {
 | 
						|
	ID           string    `json:"id,omitempty"`
 | 
						|
	Name         string    `json:"name"`
 | 
						|
	Description  string    `json:"description,omitempty"`
 | 
						|
	Icon         string    `json:"icon,omitempty"`
 | 
						|
	Secret       string    `json:"secret,omitempty"`
 | 
						|
	RedirectURIs *[]string `json:"redirect_uris,omitempty"`
 | 
						|
	Owner        *User     `json:"owner"`
 | 
						|
}
 | 
						|
 | 
						|
// 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", EndpointApplication(appID), nil, EndpointApplication(""))
 | 
						|
	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", EndpointApplications, nil, EndpointApplications)
 | 
						|
	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"`
 | 
						|
		RedirectURIs *[]string `json:"redirect_uris,omitempty"`
 | 
						|
	}{ap.Name, ap.Description, ap.RedirectURIs}
 | 
						|
 | 
						|
	body, err := s.RequestWithBucketID("POST", EndpointApplications, data, EndpointApplications)
 | 
						|
	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"`
 | 
						|
		RedirectURIs *[]string `json:"redirect_uris,omitempty"`
 | 
						|
	}{ap.Name, ap.Description, ap.RedirectURIs}
 | 
						|
 | 
						|
	body, err := s.RequestWithBucketID("PUT", EndpointApplication(appID), data, EndpointApplication(""))
 | 
						|
	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", EndpointApplication(appID), nil, EndpointApplication(""))
 | 
						|
	if err != nil {
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	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", EndpointApplicationsBot(appID), nil, EndpointApplicationsBot(""))
 | 
						|
	if err != nil {
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	err = unmarshal(body, &st)
 | 
						|
	return
 | 
						|
}
 |