...

Source file src/github.com/xanzy/go-gitlab/group_ssh_certificates.go

Documentation: github.com/xanzy/go-gitlab

     1  package gitlab
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"time"
     7  )
     8  
     9  // GroupSSHCertificatesService handles communication with the group
    10  // SSH certificate related methods of the GitLab API.
    11  //
    12  // GitLab API docs: https://docs.gitlab.com/ee/api/group_ssh_certificates.html
    13  type GroupSSHCertificatesService struct {
    14  	client *Client
    15  }
    16  
    17  // GroupSSHCertificate represents a GitLab Group SSH certificate.
    18  //
    19  // GitLab API docs: https://docs.gitlab.com/ee/api/member_roles.html
    20  type GroupSSHCertificate struct {
    21  	ID        int        `json:"id"`
    22  	Title     string     `json:"title"`
    23  	Key       string     `json:"key"`
    24  	CreatedAt *time.Time `json:"created_at"`
    25  }
    26  
    27  // ListGroupSSHCertificates gets a list of SSH certificates for a specified
    28  // group.
    29  //
    30  // Gitlab API docs:
    31  // https://docs.gitlab.com/ee/api/group_ssh_certificates.html#get-all-ssh-certificates-for-a-particular-group
    32  func (s *GroupSSHCertificatesService) ListGroupSSHCertificates(gid interface{}, options ...RequestOptionFunc) ([]*GroupSSHCertificate, *Response, error) {
    33  	group, err := parseID(gid)
    34  	if err != nil {
    35  		return nil, nil, err
    36  	}
    37  	u := fmt.Sprintf("groups/%s/ssh_certificates", PathEscape(group))
    38  
    39  	req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
    40  	if err != nil {
    41  		return nil, nil, err
    42  	}
    43  
    44  	var certs []*GroupSSHCertificate
    45  	resp, err := s.client.Do(req, &certs)
    46  	if err != nil {
    47  		return nil, resp, err
    48  	}
    49  
    50  	return certs, resp, nil
    51  }
    52  
    53  // CreateGroupSSHCertificateOptions represents the available
    54  // CreateGroupSSHCertificate() options.
    55  //
    56  // GitLab API docs:
    57  // https://docs.gitlab.com/ee/api/group_ssh_certificates.html#create-ssh-certificate
    58  type CreateGroupSSHCertificateOptions struct {
    59  	Key   *string `url:"key,omitempty" json:"key,omitempty"`
    60  	Title *string `url:"title,omitempty" json:"title,omitempty"`
    61  }
    62  
    63  // CreateMemberRole creates a new member role for a specified group.
    64  //
    65  // Gitlab API docs:
    66  // https://docs.gitlab.com/ee/api/group_ssh_certificates.html#create-ssh-certificate
    67  func (s *GroupSSHCertificatesService) CreateGroupSSHCertificate(gid interface{}, opt *CreateGroupSSHCertificateOptions, options ...RequestOptionFunc) (*GroupSSHCertificate, *Response, error) {
    68  	group, err := parseID(gid)
    69  	if err != nil {
    70  		return nil, nil, err
    71  	}
    72  	u := fmt.Sprintf("groups/%s/ssh_certificates", PathEscape(group))
    73  
    74  	req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
    75  	if err != nil {
    76  		return nil, nil, err
    77  	}
    78  
    79  	cert := new(GroupSSHCertificate)
    80  	resp, err := s.client.Do(req, cert)
    81  	if err != nil {
    82  		return nil, resp, err
    83  	}
    84  
    85  	return cert, resp, nil
    86  }
    87  
    88  // DeleteGroupSSHCertificate deletes a SSH certificate from a specified group.
    89  //
    90  // Gitlab API docs:
    91  // https://docs.gitlab.com/ee/api/group_ssh_certificates.html#delete-group-ssh-certificate
    92  func (s *GroupSSHCertificatesService) DeleteGroupSSHCertificate(gid interface{}, cert int, options ...RequestOptionFunc) (*Response, error) {
    93  	group, err := parseID(gid)
    94  	if err != nil {
    95  		return nil, err
    96  	}
    97  	u := fmt.Sprintf("groups/%s/ssh_certificates/%d", PathEscape(group), cert)
    98  
    99  	req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
   100  	if err != nil {
   101  		return nil, err
   102  	}
   103  
   104  	return s.client.Do(req, nil)
   105  }
   106  

View as plain text