Я пишу приложение, которое использует API GitHub для просмотра репозиториев в моих организациях GitHub. Я использую библиотеку github.com/google/go-github
.
Я также использую github.com/gregjones/httpcache
, чтобы я мог выполнять аутентификацию на основе токенов, а также устанавливать условные заголовки для вызовов API. У меня аутентификация работает следующим образом:
ctx := context.Background()
// GitHUb API authentication
transport = &oauth2.Transport{
Source: oauth2.StaticTokenSource(
&oauth2.Token{
AccessToken: gh.tokens.GitHub.Token,
},
),
}
// Configure HTTP memory caching
transport = &httpcache.Transport{
Transport: transport,
Cache: httpcache.NewMemoryCache(),
MarkCachedResponses: true,
}
// Create the http client that GutHUb will use
httpClient := &http.Client{
Transport: transport,
}
// Attempt to login to GitHub
client := github.NewClient(httpClient)
Однако я не могу понять, как добавить необходимый заголовок If-Match
, когда я использую client.Repositories.Get
, например. Это так, чтобы я мог работать, если репозиторий изменился за последние 24 часа для примера.
Я искал, как это сделать, но примеры, с которыми я сталкиваюсь, показывают, как создать клиент HTTP, а затем создатьзапрос (чтобы можно было добавить заголовки), а затем выполнить действие Do
. Однако, поскольку я использую клиент напрямую, у меня нет этой опции.
В документации для go-github
говорится, что для условных запросов:
API GitHub имеет хорошую поддержку для условныхзапросы, которые помогут вам избежать прожига лимита и ускорить работу вашего приложения. go-github не обрабатывает условные запросы напрямую, а предназначен для работы с кэширующим http.Transport. Для этого мы рекомендуем использовать https://github.com/gregjones/httpcache.
Подробнее об условных запросах GitHub можно узнать по адресу https://developer.github.com/v3/#conditional-requests.
Я не знаю, как добавить его в свойкод, любая помощь с благодарностью.