Как получить необработанный URL-адрес изображения или содержимое из файла репозитория GitHub с помощью GraphQL

Я пытаюсь автоматизировать некоторые вещи, которые потребуют получения текущих изображений из частного репозитория GitHub.

В идеале я бы перебрал корневой каталог и для всех изображений получил URL-адрес файла RAW.

Например:

Если URL-адрес недоступен, я могу получить двоичный контент. Тем не менее, я не мог найти способ сделать это либо.

Например, именно так я нахожу файлы, о которых мне нужны подробности.

{
  repository(owner: "Flow2015", name: "logo") {
    name
    object(expression: "master:") {
      ... on Tree {
        entries {
          name
          object{
            ... on Blob {
              text
            }
          }
        }
      }
    }
  }
}

Я понимаю, что могу создать URL-адрес, используя Repo/branch/filename, я просто пытаюсь найти безопасный способ, если он есть.


person luigibertaco    schedule 31.08.2020    source источник
comment
Я не верю, что они предназначены для программного использования, поэтому API не предоставляет URL-адреса. Если вам нужно получить много отдельных объектов из репозитория, вам лучше использовать неглубокий клон, который будет быстрее.   -  person bk2204    schedule 31.08.2020
comment
Это можно сделать с помощью REST API, но, поскольку я уже использую GraphQL по другим причинам, я пытался использовать его и для этого. docs.github.com/en/rest/reference/repos#contents   -  person luigibertaco    schedule 31.08.2020
comment
отдельными object(expression ...) ? stackoverflow.com/a/46254836/6124657 ... но в graphql/json он будет закодирован, по крайней мере, не оптимально .. построить URL   -  person xadm    schedule 31.08.2020
comment
К сожалению, текст не включает двоичное содержимое для нетекстовых файлов. По крайней мере, я не смог найти способ заставить его что-либо возвращать для изображений или других двоичных типов.   -  person luigibertaco    schedule 31.08.2020
comment
... как файлы в электронных письмах (или хранение изображений в БД), возможно, выполнимо, применимо для небольших размеров, но ОЧЕНЬ неэффективно (размер вывода, затраты на обработку) в масштабе ... и необязательно   -  person xadm    schedule 31.08.2020
comment
Я согласен со всем, что вы сказали, был бы рад, если бы источником данных для моих нужд были не проекты GitHub, однако, это то, с чем мне приходится работать. REST API предоставляет контент и URL-адрес, я просто проверяю, есть ли такая же функция в GraphQL API.   -  person luigibertaco    schedule 31.08.2020
comment
некоторые части, обычно покрываемые API (но де-факто обрабатываются с помощью поведения браузера), выходят за рамки graphql (чистые структуры данных) и должны обрабатываться другими способами (без перенаправлений, без типов контента и т. д. - просто ответ json)   -  person xadm    schedule 31.08.2020