Skip to content
/ gitmic Public

Пример проекта и кода для обращения к API GitHub

Notifications You must be signed in to change notification settings

mufteev/gitmic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Пример проекта и кода для обращения к API GitHub

Цель

  • Получить информацию об участниках каждого репозитория в организации microsoft

Файлы в проекте

  • api/orgs/repos/get.go - описание структуры Репозитория и подготовка запроса к API
  • api/repos/contributors/get.go - описание структуры Участника
  • api/users/get.go - описание структуры Пользователя
     
  • api/init.go - инициализация пакета для доступа к API
  • api/option.go - определение структуры паттерна функциональных опций
     
  • api/repos.go - определение метода для доступа к Репозиторию по указанной организации
  • api/contributors.go - определение метода для доступа к Участникам по указанному Репозиторию
  • api/user.go - определение метода для доступа к Пользователю
     
  • cmd/repos/main.go - отправная точка для запуска проекта
     
  • internal/repos/main.go - внутренняя логика проекта
  • internal/env/env.go - определение переменных к проекту из файла

Хранение токена

Для того чтобы предоставить токен проекту необходимо создать файл .git.env в папке secret
Со следующим содержимым:

GIT_TOKEN="<token>"

Запуск проекта

go run cmd/repos/main.go

Сборка проекта и запуск собранного проекта

Почитать про указанные переменные перед командой go build

GOGC=off GO111MODULE=on CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -C "cmd/repos" -ldflags "-s -w" -o ../../repos
./repos

Прогон тестов

go -C internal/repos/ test -bench=. -benchmem

Вывод результатов

RunSimple elapsed time: 15.316222158s
goos: linux
goarch: amd64
pkg: gitmic/internal/repos
cpu: Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz
BenchmarkRunSimple-6                   1        15316264658 ns/op        8737640 B/op      52356 allocs/op
RunConcurrency elapsed time: 1.114834146s
BenchmarkRunConcurrency-6              1        1114883946 ns/op          505480 B/op       1284 allocs/op
PASS
ok      gitmic/internal/repos   16.438s

go run cmd/repos/main.go -cpuprofile cpu.prof -memprofile mem.prof
go tool pprof mem.prof
top10 -cum
list gitmic/api.doRequest

About

Пример проекта и кода для обращения к API GitHub

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages