/ main.go
main.go
1 package main 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "fmt" 7 "io" 8 "net/http" 9 "os" 10 11 "github.com/joho/godotenv" 12 ) 13 14 func MakeRequest(url string, token string, method string, payload []byte) (*http.Response, error) { 15 req, err := http.NewRequest(method, url, bytes.NewBuffer(payload)) 16 if err != nil { 17 fmt.Println(err) 18 return nil, err 19 } 20 req.Header.Set("Authorization", "token "+token) 21 req.Header.Set("Accept", "application/vnd.github.v3+json") 22 23 client := &http.Client{} 24 resp, err := client.Do(req) 25 if err != nil { 26 fmt.Println(err) 27 return nil, err 28 } 29 fmt.Println(token) 30 return resp, nil 31 32 } 33 func getRepo(url string, token string, method string) (*http.Response, error) { 34 req, err := http.NewRequest(method, url, nil) 35 if err != nil { 36 fmt.Println(err) 37 return nil, err 38 } 39 req.Header.Set("Authorization", "token "+token) 40 req.Header.Set("Accept", "application/vnd.github.v3+json") 41 42 client := &http.Client{} 43 resp, err := client.Do(req) 44 if err != nil { 45 fmt.Println(err) 46 return nil, err 47 } 48 fmt.Println(token) 49 return resp, nil 50 51 } 52 func main() { 53 err := godotenv.Load() 54 if err != nil { 55 fmt.Println(err) 56 return 57 } 58 59 token := os.Getenv("GITHUB_PERSONAL_TOKEN") 60 username := os.Getenv("GITHUB_USERNAME") 61 62 url2 := fmt.Sprintf("https://api.github.com/users/%s/repos?per_page=100&page=1", username) 63 64 req, err := getRepo(url2, token, "GET") 65 if err != nil { 66 fmt.Println(err) 67 return 68 } 69 repos, err := io.ReadAll(req.Body) 70 if err != nil { 71 fmt.Println(err) 72 return 73 } 74 type Repo struct { 75 Name string `json:"name"` 76 } 77 var rawRepos []Repo 78 err = json.Unmarshal(repos, &rawRepos) 79 if err != nil { 80 fmt.Println(err) 81 return 82 } 83 84 fmt.Println(len(rawRepos)) 85 86 for i := range len(rawRepos) { 87 repo := rawRepos[i] 88 89 url := "https://api.github.com/repos/tempchuks/" + repo.Name 90 data := map[string]any{ 91 "private": true, 92 } 93 payload, _ := json.Marshal(data) 94 resp, err := MakeRequest(url, token, "PATCH", payload) 95 _, err = io.ReadAll(resp.Body) 96 if err != nil { 97 fmt.Println(err) 98 return 99 } 100 } 101 102 }