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 }