{"id":30766596,"url":"https://github.com/gpbonillas/githubgraphqlclient","last_synced_at":"2026-04-13T18:01:38.757Z","repository":{"id":312519133,"uuid":"1046540879","full_name":"gpbonillas/GitHubGraphQLClient","owner":"gpbonillas","description":"GitHub GraphQL API Client implemented with Rust","archived":false,"fork":false,"pushed_at":"2025-08-28T21:20:25.000Z","size":8,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-18T09:47:54.925Z","etag":null,"topics":["api","github","graphql","rust","rust-lang"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gpbonillas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-28T20:52:43.000Z","updated_at":"2025-08-29T00:19:08.000Z","dependencies_parsed_at":"2025-08-31T08:37:25.539Z","dependency_job_id":"a2db03a5-892a-4468-938a-85599c60da18","html_url":"https://github.com/gpbonillas/GitHubGraphQLClient","commit_stats":null,"previous_names":["gpbonillas/githubgraphqlclient"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gpbonillas/GitHubGraphQLClient","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpbonillas%2FGitHubGraphQLClient","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpbonillas%2FGitHubGraphQLClient/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpbonillas%2FGitHubGraphQLClient/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpbonillas%2FGitHubGraphQLClient/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gpbonillas","download_url":"https://codeload.github.com/gpbonillas/GitHubGraphQLClient/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gpbonillas%2FGitHubGraphQLClient/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31764317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T15:25:13.801Z","status":"ssl_error","status_checked_at":"2026-04-13T15:25:09.162Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","github","graphql","rust","rust-lang"],"created_at":"2025-09-04T19:29:50.511Z","updated_at":"2026-04-13T18:01:38.750Z","avatar_url":"https://github.com/gpbonillas.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cliente GraphQL de GitHub en Rust\n\nEste proyecto es un cliente de línea de comandos desarrollado en Rust para interactuar con la API GraphQL de GitHub. Permite realizar consultas para explorar el contenido de repositorios, como listar archivos en la raíz y explorar directorios de forma recursiva.\n\n## Características\n\n* **Listar Contenido del Repositorio**: Obtiene y muestra una lista de todos los archivos y directorios en la raíz de un repositorio específico.\n* **Exploración Recursiva**: Navega a través de los directorios de un repositorio para listar su contenido.\n* **Configuración Sencilla**: Utiliza variables de entorno para gestionar el token de autenticación de GitHub de forma segura.\n\n## Cómo Empezar\n\nSigue estos pasos para configurar y ejecutar el proyecto en tu entorno local.\n\n### Prerrequisitos\n\n* [Rust](https://www.rust-lang.org/tools/install) instalado.\n* Un token de acceso personal de GitHub con los permisos necesarios para leer repositorios.\n\n### Instalación y Configuración\n\n1.  **Clona el repositorio**:\n\n    ```bash\n    git clone \u003cURL_DEL_REPOSITORIO\u003e\n    cd GitHubGraphQLClient\n    ```\n\n2.  **Crea el archivo de entorno**:\n    Crea un archivo llamado `.env` en la raíz del proyecto y añade tu token de acceso personal de GitHub:\n\n    ```\n    GITHUB_TOKEN=tu_token_de_github_aqui\n    ```\n\n    Este archivo es ignorado por Git para mantener tu token seguro.\n\n3.  **Compila el proyecto**:\n\n    ```bash\n    cargo build\n    ```\n\n## Uso\n\nEste proyecto incluye dos binarios principales que puedes ejecutar para interactuar con la API de GitHub.\n\n### 1\\. Listar el contenido de la raíz del repositorio\n\nEste comando ejecuta el binario `list_repo_root`, que se conecta a la API de GitHub y muestra los archivos y directorios en la raíz del repositorio configurado (`seima-lab/seima-server`).\n\n```bash\ncargo run --bin list_repo_root\n```\n\n### 2\\. Explorar el contenido del repositorio de forma recursiva\n\nEste comando ejecuta `get_content_repo_rec`, que explora el directorio raíz y, si encuentra subdirectorios, lista también su contenido.\n\n```bash\ncargo run --bin get_content_repo_rec\n```\n\n## Consultas GraphQL\n\nEl proyecto utiliza consultas GraphQL para obtener la información del repositorio. Puedes encontrar ejemplos detallados de las consultas utilizadas en el archivo `src/queries.md`.\n\nLas consultas principales son:\n\n* **`GetTree`**: Para obtener las entradas de un árbol (directorio).\n\n\n```graphql\nquery GetTree($owner: String!, $name: String!, $expression: String!) {\n            repository(owner: $owner, name: $name) {\n                object(expression: $expression) {\n                    ... on Tree {\n                        entries {\n                            oid\n                            name\n                            nameRaw\n                            mode\n                            type\n                            path\n                            pathRaw \n                            repository {\n                              id\n                              name\n                            } \n                            lineCount\n                            language {\n                              id\n                              color\n                              name\n                            }\n                            extension\n                            size\n                            submodule {\n                              branch\n                              subprojectCommitOid\n                            } \n                        }\n                    }\n                }\n            }\n        }\n```\n\u003e Variables\n```json\n{\n  \"owner\": \"seima-lab\",\n  \"name\": \"seima-server\",\n  \"expression\": \"edcf4d3fb935ae2dc754c1f464404eaeb5b4e521\"\n}\n```\n\n* **`GetBlob`**: Para obtener el contenido de un archivo (blob).\n\n```graphql\nquery GetTree($owner: String!, $name: String!, $expression: String!) {\n            repository(owner: $owner, name: $name) {\n                object(expression: $expression) {\n                    ... on Tree {\n                        entries {\n                            oid\n                            name\n                            nameRaw\n                            mode\n                            type\n                            path\n                            object {\n                              id\n                            }\n                            repository {\n                              id\n                              name\n                            } \n                            lineCount\n                            language {\n                              id\n                              color\n                              name\n                            }\n                            extension\n                            size\n                            submodule {\n                              branch\n                              subprojectCommitOid\n                            } \n                        }\n                    }\n                    ... on Blob {\n                        abbreviatedOid\n                        byteSize\n                        commitResourcePath\n                        commitUrl\n                        id \n                        isBinary\n                        isTruncated\n                        oid\n                        repository {\n                          id\n                        }\n                        text                        \n                    }\n                }\n            }\n        }\n```\n\u003e Variables\n\n```json\n{\n  \"owner\": \"seima-lab\",\n  \"name\": \"seima-server\",\n  \"expression\": \"202c2a592717e2969e537232ac5c498ddf0e1b28\"\n}\n```\n\n## Dependencias\n\nEste proyecto utiliza las siguientes dependencias principales, gestionadas a través de `Cargo.toml`:\n\n* `reqwest`: Un cliente HTTP ergonómico para realizar las solicitudes a la API.\n* `serde` y `serde_json`: Para la serialización y deserialización de los datos JSON de la API.\n* `tokio`: Para el manejo de operaciones asíncronas.\n* `dotenvy`: Para cargar las variables de entorno desde el archivo `.env`.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgpbonillas%2Fgithubgraphqlclient","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgpbonillas%2Fgithubgraphqlclient","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgpbonillas%2Fgithubgraphqlclient/lists"}