github.com/google/go-github/v70@v70.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) ([]*RepositoryRuleset, *Response, error) { 19 u := fmt.Sprintf("orgs/%v/rulesets", org) 20 21 req, err := s.client.NewRequest("GET", u, nil) 22 if err != nil { 23 return nil, nil, err 24 } 25 26 var rulesets []*RepositoryRuleset 27 resp, err := s.client.Do(ctx, req, &rulesets) 28 if err != nil { 29 return nil, resp, err 30 } 31 32 return rulesets, resp, nil 33 } 34 35 // CreateRepositoryRuleset creates a repository ruleset for the specified organization. 36 // 37 // GitHub API docs: https://docs.github.com/rest/orgs/rules#create-an-organization-repository-ruleset 38 // 39 //meta:operation POST /orgs/{org}/rulesets 40 func (s *OrganizationsService) CreateRepositoryRuleset(ctx context.Context, org string, ruleset RepositoryRuleset) (*RepositoryRuleset, *Response, error) { 41 u := fmt.Sprintf("orgs/%v/rulesets", org) 42 43 req, err := s.client.NewRequest("POST", u, ruleset) 44 if err != nil { 45 return nil, nil, err 46 } 47 48 var rs *RepositoryRuleset 49 resp, err := s.client.Do(ctx, req, &rs) 50 if err != nil { 51 return nil, resp, err 52 } 53 54 return rs, resp, nil 55 } 56 57 // GetRepositoryRuleset gets a repository ruleset for the specified organization. 58 // 59 // GitHub API docs: https://docs.github.com/rest/orgs/rules#get-an-organization-repository-ruleset 60 // 61 //meta:operation GET /orgs/{org}/rulesets/{ruleset_id} 62 func (s *OrganizationsService) GetRepositoryRuleset(ctx context.Context, org string, rulesetID int64) (*RepositoryRuleset, *Response, error) { 63 u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID) 64 65 req, err := s.client.NewRequest("GET", u, nil) 66 if err != nil { 67 return nil, nil, err 68 } 69 70 var ruleset *RepositoryRuleset 71 resp, err := s.client.Do(ctx, req, &ruleset) 72 if err != nil { 73 return nil, resp, err 74 } 75 76 return ruleset, resp, nil 77 } 78 79 // UpdateRepositoryRuleset updates a repository ruleset for the specified organization. 80 // 81 // GitHub API docs: https://docs.github.com/rest/orgs/rules#update-an-organization-repository-ruleset 82 // 83 //meta:operation PUT /orgs/{org}/rulesets/{ruleset_id} 84 func (s *OrganizationsService) UpdateRepositoryRuleset(ctx context.Context, org string, rulesetID int64, ruleset RepositoryRuleset) (*RepositoryRuleset, *Response, error) { 85 u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID) 86 87 req, err := s.client.NewRequest("PUT", u, ruleset) 88 if err != nil { 89 return nil, nil, err 90 } 91 92 var rs *RepositoryRuleset 93 resp, err := s.client.Do(ctx, req, &rs) 94 if err != nil { 95 return nil, resp, err 96 } 97 98 return rs, resp, nil 99 } 100 101 // UpdateRepositoryRulesetClearBypassActor clears the bypass actors for a repository ruleset for the specified organization. 102 // 103 // This function is necessary as the UpdateRepositoryRuleset function does not marshal ByPassActor if passed as an empty array. 104 // 105 // GitHub API docs: https://docs.github.com/rest/orgs/rules#update-an-organization-repository-ruleset 106 // 107 //meta:operation PUT /orgs/{org}/rulesets/{ruleset_id} 108 func (s *OrganizationsService) UpdateRepositoryRulesetClearBypassActor(ctx context.Context, org string, rulesetID int64) (*Response, error) { 109 u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID) 110 111 rsClearBypassActor := rulesetClearBypassActors{} 112 113 req, err := s.client.NewRequest("PUT", u, rsClearBypassActor) 114 if err != nil { 115 return nil, err 116 } 117 118 resp, err := s.client.Do(ctx, req, nil) 119 if err != nil { 120 return resp, err 121 } 122 123 return resp, nil 124 } 125 126 // DeleteRepositoryRuleset deletes a repository ruleset from the specified organization. 127 // 128 // GitHub API docs: https://docs.github.com/rest/orgs/rules#delete-an-organization-repository-ruleset 129 // 130 //meta:operation DELETE /orgs/{org}/rulesets/{ruleset_id} 131 func (s *OrganizationsService) DeleteRepositoryRuleset(ctx context.Context, org string, rulesetID int64) (*Response, error) { 132 u := fmt.Sprintf("orgs/%v/rulesets/%v", org, rulesetID) 133 134 req, err := s.client.NewRequest("DELETE", u, nil) 135 if err != nil { 136 return nil, err 137 } 138 139 return s.client.Do(ctx, req, nil) 140 }