mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 08:21:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			100 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
//
 | 
						|
// Copyright 2017, Sander van Harmelen
 | 
						|
//
 | 
						|
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
// you may not use this file except in compliance with the License.
 | 
						|
// You may obtain a copy of the License at
 | 
						|
//
 | 
						|
//     http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
//
 | 
						|
// Unless required by applicable law or agreed to in writing, software
 | 
						|
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
// See the License for the specific language governing permissions and
 | 
						|
// limitations under the License.
 | 
						|
//
 | 
						|
 | 
						|
package gitlab
 | 
						|
 | 
						|
import "fmt"
 | 
						|
 | 
						|
// ApplicationsService handles communication with administrables applications
 | 
						|
// of the Gitlab API.
 | 
						|
//
 | 
						|
// Gitlab API docs : https://docs.gitlab.com/ee/api/applications.html
 | 
						|
type ApplicationsService struct {
 | 
						|
	client *Client
 | 
						|
}
 | 
						|
 | 
						|
type Application struct {
 | 
						|
	ID              int    `json:"id"`
 | 
						|
	ApplicationID   string `json:"application_id"`
 | 
						|
	ApplicationName string `json:"application_name"`
 | 
						|
	Secret          string `json:"secret"`
 | 
						|
	CallbackURL     string `json:"callback_url"`
 | 
						|
	Confidential    bool   `json:"confidential"`
 | 
						|
}
 | 
						|
 | 
						|
// CreateApplicationOptions represents the available CreateApplication() options.
 | 
						|
//
 | 
						|
// GitLab API docs:
 | 
						|
// https://docs.gitlab.com/ce/api/applications.html#create-an-application
 | 
						|
type CreateApplicationOptions struct {
 | 
						|
	Name         *string `url:"name,omitempty" json:"name,omitempty"`
 | 
						|
	RedirectURI  *string `url:"redirect_uri,omitempty" json:"redirect_uri,omitempty"`
 | 
						|
	Scopes       *string `url:"scopes,omitempty" json:"scopes,omitempty"`
 | 
						|
	Confidential *bool   `url:"confidential,omitempty" json:"confidential,omitempty"`
 | 
						|
}
 | 
						|
 | 
						|
// CreateApplication creates a new application owned by the authenticated user.
 | 
						|
//
 | 
						|
// Gitlab API docs : https://docs.gitlab.com/ce/api/applications.html#create-an-application
 | 
						|
func (s *ApplicationsService) CreateApplication(opt *CreateApplicationOptions, options ...RequestOptionFunc) (*Application, *Response, error) {
 | 
						|
	req, err := s.client.NewRequest("POST", "applications", opt, options)
 | 
						|
	if err != nil {
 | 
						|
		return nil, nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	a := new(Application)
 | 
						|
	resp, err := s.client.Do(req, a)
 | 
						|
	if err != nil {
 | 
						|
		return nil, resp, err
 | 
						|
	}
 | 
						|
 | 
						|
	return a, resp, err
 | 
						|
}
 | 
						|
 | 
						|
type ListApplicationsOptions ListOptions
 | 
						|
 | 
						|
// ListApplications get a list of administrables applications by the authenticated user
 | 
						|
//
 | 
						|
// Gitlab API docs : https://docs.gitlab.com/ce/api/applications.html#list-all-applications
 | 
						|
func (s *ApplicationsService) ListApplications(opt *ListApplicationsOptions, options ...RequestOptionFunc) ([]*Application, *Response, error) {
 | 
						|
	req, err := s.client.NewRequest("GET", "applications", opt, options)
 | 
						|
	if err != nil {
 | 
						|
		return nil, nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	var as []*Application
 | 
						|
	resp, err := s.client.Do(req, &as)
 | 
						|
	if err != nil {
 | 
						|
		return nil, resp, err
 | 
						|
	}
 | 
						|
 | 
						|
	return as, resp, err
 | 
						|
}
 | 
						|
 | 
						|
// DeleteApplication removes a specific application.
 | 
						|
//
 | 
						|
// GitLab API docs:
 | 
						|
// https://docs.gitlab.com/ce/api/applications.html#delete-an-application
 | 
						|
func (s *ApplicationsService) DeleteApplication(application int, options ...RequestOptionFunc) (*Response, error) {
 | 
						|
	u := fmt.Sprintf("applications/%d", application)
 | 
						|
 | 
						|
	req, err := s.client.NewRequest("DELETE", u, nil, options)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	return s.client.Do(req, nil)
 | 
						|
}
 |