github.com/google/go-github/v74@v74.0.0/github/orgs_rules.go (about)

     1  // Copyright 2023 The go-github AUTHORS. All rights reserved.
     2  //
     3  // Use of this source code is governed by a BSD-style
     4  // license that can be found in the LICENSE file.
     5  
     6  package github
     7  
     8  import (
     9  	"context"
    10  	"fmt"
    11  )
    12  
    13  // GetAllRepositoryRulesets gets all the repository rulesets for the specified organization.
    14  //
    15  // GitHub API docs: https://docs.github.com/rest/orgs/rules#get-all-organization-repository-rulesets
    16  //
    17  //meta:operation GET /orgs/{org}/rulesets
    18  func (s *OrganizationsService) GetAllRepositoryRulesets(ctx context.Context, org string, opts *ListOptions) ([]*RepositoryRuleset, *Response, error) {
    19  	u := fmt.Sprintf("orgs/%v/rulesets", org)
    20  
    21  	u, err := addOptions(u, opts)
    22  	if err != nil {
    23  		return nil, nil, err
    24  	}
    25  
    26  	req, err := s.client.NewRequest("GET", u, nil)
    27  	if err != nil {
    28  		return nil, nil, err
    29  	}
    30  
    31  	var rulesets []*RepositoryRuleset
    32  	resp, err := s.client.Do(ctx, req, &rulesets)
    33  	if err != nil {
    34  		return nil, resp, err
    35  	}
    36  
    37  	return rulesets, resp, nil
    38  }
    39  
    40  // CreateRepositoryRuleset creates a repository ruleset for the specified organization.
    41  //
    42  // GitHub API docs: https://docs.github.com/rest/orgs/rules#create-an-organization-repository-ruleset
    43  //
    44  //meta:operation POST /orgs/{org}/rulesets
    45  func (s *OrganizationsService) CreateRepositoryRuleset(ctx context.Context, org string, ruleset RepositoryRuleset) (*RepositoryRuleset, *Response, error) {
    46  	u := fmt.Sprintf("orgs/%v/rulesets", org)
    47  
    48  	req, err := s.client.NewRequest("POST", u, ruleset)
    49  	if err != nil {
    50  		return nil, nil, err
    51  	}
    52  
    53  	var rs *RepositoryRuleset
    54  	resp, err := s.client.Do(ctx, req, &rs)
    55  	if err != nil {
    56  		return nil, resp, err
    57  	}
    58  
    59  	return rs, resp, nil
    60  }
    61  
    62  // GetRepositoryRuleset gets a repository ruleset for the specified organization.
    63  //
    64  // GitHub API docs: https://docs.github.com/rest/orgs/rules#get-an-organization-repository-ruleset
    65  //
    66  //meta:operation GET /orgs/{org}/rulesets/{ruleset_id}
    67  func (s *OrganizationsService) GetRepositoryRuleset(ctx context.Context, org string, rulesetID int64) (*RepositoryRuleset, *Response, error) {
    68  	u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID)
    69  
    70  	req, err := s.client.NewRequest("GET", u, nil)
    71  	if err != nil {
    72  		return nil, nil, err
    73  	}
    74  
    75  	var ruleset *RepositoryRuleset
    76  	resp, err := s.client.Do(ctx, req, &ruleset)
    77  	if err != nil {
    78  		return nil, resp, err
    79  	}
    80  
    81  	return ruleset, resp, nil
    82  }
    83  
    84  // UpdateRepositoryRuleset updates a repository ruleset for the specified organization.
    85  //
    86  // GitHub API docs: https://docs.github.com/rest/orgs/rules#update-an-organization-repository-ruleset
    87  //
    88  //meta:operation PUT /orgs/{org}/rulesets/{ruleset_id}
    89  func (s *OrganizationsService) UpdateRepositoryRuleset(ctx context.Context, org string, rulesetID int64, ruleset RepositoryRuleset) (*RepositoryRuleset, *Response, error) {
    90  	u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID)
    91  
    92  	req, err := s.client.NewRequest("PUT", u, ruleset)
    93  	if err != nil {
    94  		return nil, nil, err
    95  	}
    96  
    97  	var rs *RepositoryRuleset
    98  	resp, err := s.client.Do(ctx, req, &rs)
    99  	if err != nil {
   100  		return nil, resp, err
   101  	}
   102  
   103  	return rs, resp, nil
   104  }
   105  
   106  // UpdateRepositoryRulesetClearBypassActor clears the bypass actors for a repository ruleset for the specified organization.
   107  //
   108  // This function is necessary as the UpdateRepositoryRuleset function does not marshal ByPassActor if passed as an empty array.
   109  //
   110  // GitHub API docs: https://docs.github.com/rest/orgs/rules#update-an-organization-repository-ruleset
   111  //
   112  //meta:operation PUT /orgs/{org}/rulesets/{ruleset_id}
   113  func (s *OrganizationsService) UpdateRepositoryRulesetClearBypassActor(ctx context.Context, org string, rulesetID int64) (*Response, error) {
   114  	u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID)
   115  
   116  	rsClearBypassActor := rulesetClearBypassActors{}
   117  
   118  	req, err := s.client.NewRequest("PUT", u, rsClearBypassActor)
   119  	if err != nil {
   120  		return nil, err
   121  	}
   122  
   123  	resp, err := s.client.Do(ctx, req, nil)
   124  	if err != nil {
   125  		return resp, err
   126  	}
   127  
   128  	return resp, nil
   129  }
   130  
   131  // DeleteRepositoryRuleset deletes a repository ruleset from the specified organization.
   132  //
   133  // GitHub API docs: https://docs.github.com/rest/orgs/rules#delete-an-organization-repository-ruleset
   134  //
   135  //meta:operation DELETE /orgs/{org}/rulesets/{ruleset_id}
   136  func (s *OrganizationsService) DeleteRepositoryRuleset(ctx context.Context, org string, rulesetID int64) (*Response, error) {
   137  	u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID)
   138  
   139  	req, err := s.client.NewRequest("DELETE", u, nil)
   140  	if err != nil {
   141  		return nil, err
   142  	}
   143  
   144  	return s.client.Do(ctx, req, nil)
   145  }