/ 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  }