{"id":21330580,"url":"https://github.com/friendsofredaxo/rex_gitapi","last_synced_at":"2025-07-12T09:30:35.456Z","repository":{"id":45071610,"uuid":"513313995","full_name":"FriendsOfREDAXO/rex_gitapi","owner":"FriendsOfREDAXO","description":":octocat: Einfacher Zugriff auf die GitHub API im REDAXO-Style (ReadOnly)","archived":false,"fork":false,"pushed_at":"2023-01-19T22:15:16.000Z","size":2786,"stargazers_count":13,"open_issues_count":1,"forks_count":0,"subscribers_count":7,"default_branch":"main","last_synced_at":"2024-04-15T00:27:50.633Z","etag":null,"topics":["api","git","github","php","redaxo","redaxo-addon"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FriendsOfREDAXO.png","metadata":{"files":{"readme":"README.de.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-12T22:53:50.000Z","updated_at":"2023-07-12T13:35:40.000Z","dependencies_parsed_at":"2023-02-11T22:01:01.021Z","dependency_job_id":null,"html_url":"https://github.com/FriendsOfREDAXO/rex_gitapi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"FriendsOfREDAXO/rex_repo_template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Frex_gitapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Frex_gitapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Frex_gitapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Frex_gitapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FriendsOfREDAXO","download_url":"https://codeload.github.com/FriendsOfREDAXO/rex_gitapi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225810052,"owners_count":17527592,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","git","github","php","redaxo","redaxo-addon"],"created_at":"2024-11-21T22:22:16.523Z","updated_at":"2024-11-21T22:22:17.059Z","avatar_url":"https://github.com/FriendsOfREDAXO.png","language":"PHP","readme":"# Einfacher Zugriff auf die GitHub API im REDAXO-Style (ReadOnly)\n\n![Screenshot](https://github.com/FriendsOfREDAXO/rex_gitapi/blob/assets/rex_gitapi.png?raw=true)\n\n## Klasse RexGitApi\n\nDas AddOn **rex_gitapi** stellt die Klasse `RexGitApi` für den einfachen Zugriff auf die GitHub API zur Verfügung.\nIm Backend können mit dem API-Tester Zugriffe auf die GitHub API getestet und der dazugehörige PHP-Code zum kopieren generiert werden.\n\nDie Dokumentation der GitHub API findet ihr hier: https://docs.github.com/rest\n\nAlle API-Zugriffe werden über die URL https://api.github.com/ abgesetzt.\n\n\u003e **Hinweis:** REDAXO-AddOns können die Klasse benutzen um z.B. Themes, Styles oder sonstige Daten direkt von GitHub upzudaten.\n\nDie GitHub API liefert alle Ergebnisse im JSON-Format. Standardmäßig wird von der Klasse `RexGitApi` das Ergebnis als **PHP array** zurückgeliefert `get()`. Es kann aber auch das ursprüngliche JSON-Ergebnis der GitHub API abgefragt werden `get(true)`.\n\nGenerell können alle URL's der GitHub API direkt über die Klasse verarbeitet werden (öffentliche oder dafür berechtigte URL's).\n\n\u003e **Hinweis:** Ohne Authentifizierung sind nur 60 Zugriffe pro Stunde auf die GitHub Api möglich. Mit einem Token können pro Stunde 5.000 Zugriffe auf die API erfolgen. Siehe [Authentifizierung (Token)](#token)\n\nDie folgende URL liefert z.B. wieviele Zugriffe maximal ausgeführt werden können, wieviele bereits durchgeführt wurden und wie viele Zugriffe auf die API noch verbleiben.\n\n`https://api.github.com/rate_limit`\n\nAls URL-Parameter der Klasse kann entweder die vollständige URL `https://api.github.com/rate_limit` oder auch nur `rate_limit` übergeben werden. Protokoll und Domain (`https://api.github.com/`) können weggelassen werden.\n\nDer Token kann bei instanzierung mit `new`, mit der `factory()`-Methode oder per `setToken()` übergeben werden.\nWird kein Token übergeben und es existiert ein Token in den AddOn-Einstellungen wird dieser verwendet.\n\nPer Default werden die GitHub-Ergebnise gecached. Die Cache-Lifetime kann in den AddOn-Einstellungen geändert werden.\nMit der Methode `setCache(false)` kann das Caching abgeschaltet werden. Bei der AddOn-Einstellung `Niemals einen Cache anlegen` wird kein Cache erstellt!\n\n**Beispiel:**\n\n```php\n// GitHub rate limit ermitteln\n$gitapi = \\FriendsOfRedaxo\\RexGitApi\\RexGitApi::factory(\u003cTOKEN\u003e);\n// oder $gitapi = new \\FriendsOfRedaxo\\RexGitApi\\RexGitApi(\u003cTOKEN\u003e);\n$gitapi-\u003esetDebug(false);\n$gitapi-\u003esetCache(false);\n$gitapi-\u003esetUrl('https://api.github.com/rate_limit');\n$gitapi-\u003eexecute();\n$gitresult = $gitapi-\u003eget();\ndump($gitresult);\n\n// Result als PHP array\n$gitresult = \\FriendsOfRedaxo\\RexGitApi\\RexGitApi::factory()-\u003eexecute('https://api.github.com/rate_limit')-\u003eget();\ndump($gitresult);\n\n// Result im JSON Format\n$jsonresult = \\FriendsOfRedaxo\\RexGitApi\\RexGitApi::factory()-\u003eexecute('rate_limit')-\u003eget(true);\ndump($jsonresult);\n\n// Spezial-Methode\n$gitresult = \\FriendsOfRedaxo\\RexGitApi\\RexGitApi::factory()-\u003egetLimits();\ndump($gitresult);\n\n$jsonresult = \\FriendsOfRedaxo\\RexGitApi\\RexGitApi::factory()-\u003egetLimits(true);\ndump($jsonresult);\n```\n\n### Methoden: Parameter\n\n| Methode | Beschreibung | Parameter | Return |\n| --- | --- | --- | --- |\n| setToken() | Setzen des GitHub API Tokens (Personal access token) | string $token | RexGitApi |\n| getToken() | Get des GitHub API Tokens (Personal access token) | keine | string |\n| setUrl() | Setzen der GitHub API Url die verarbeitet werden soll | string $url | RexGitApi |\n| getUrl() | Get der der GitHub API Url | keine | string |\n| setOrg() | Setzen der Organisation | string $org | RexGitApi |\n| getOrg() | Get der Organisation | keine | string |\n| setUser() | Setzen des GitHub Users | string $user | RexGitApi |\n| getUser() | Get des GitHub Users | keine | string |\n| setRepo() | Setzen des Github Repos | string $repo | RexGitApi |\n| getRepo() | Get des Github Repos | keine | string |\n| setDebug() | Setzen des Debug-Modus\u003cbr\u003etrue = Es werden Debug-Ausgaben mit der dump()-Methode ausgegeben | bool $debug | RexGitApi |\n| getDebug() | Get des Debug-Modus | keine | bool |\n| setCache() | Setzen des Cache-Modus\u003cbr\u003e**Hinweis:** Wenn in den AddOn-Einstellungen `Niemals einen Cache anlegen` ausgewählt wurde, hat das Setzen keine Auswirkung! | bool $cache | RexGitApi |\n| getCache() | Get des Cache-Modus | keine | bool |\n\n### Methoden: Verarbeitung\n\n| Methode | Beschreibung | Parameter | Return |\n| --- | --- | --- | --- |\n| factory() |  |\n| execute(string $url) |  |\n| get(bool $json = false) |  |\n| hasError():bool |  |\n| getMessage():string |  |\n| getCachePath() |  |\n| getCacheFiles() |  |\n| deleteCache() |  |\n\n### Spezial-Methoden\n\n| Methode | Beschreibung | Parameter | Return |\n| --- | --- | --- | --- |\n| urlToFileName(string $url) |  |\n| fileNameToUrl(string $filename) |  |\n| getLimits(bool $json = false) |  |\n| getOrgInfo(string $org, bool $json = false) |  |\n| getOrgRepoList(string $org, bool $json = false) |  |\n| getUserInfo(string $user, bool $json = false) |  |\n| getUserRepoList(string $user) |  |\n| getRepoInfo(string $user, string $repo, bool $json = false) |  |\n| getPagedContent(string $url, bool $json = false) |  |\n\n### Beispiele\n\nDer bevorzugte Weg RexGitApi zu benutzen ist eine neue Instanz zu erzeugen (wg. Error-Handling).\n\n`\u003cTOKEN\u003e` ist optional. Wenn kein Token angegeben wird wird der Token aus den Addon-Einstellungen verwendet.\n\n#### Abfragen von Fehlern\n\nUm Fehler bei dem GitHub-Zugriff abzufangen sollte mit `new` eine Instanz von `RexGitAPi` erstellt werden.\n\n`$gitapi = new \\FriendsOfRedaxo\\RexGitApi\\RexGitApi();`\n\nMit der Metode `hasError()` kann ein eventuell auftretender Fehler abgefragt werden.\nDie Fehlermeldung kann mit der Methode `getMessage()` ausgegeben werden.\n\nBeispiel:\n\n```php\n$gitapi = new \\FriendsOfRedaxo\\RexGitApi\\RexGitApi();\n$gitapi-\u003esetDebug(false);\n$gitresult = $gitapi-\u003eexecute('orgs/friendsofredaxo/repos?page=99');\nif ($gitapi-\u003ehasError()) {\n     echo rex_view::error(\n        $gitapi-\u003egetMessage()\n        . '\u003cbr\u003eRequested URL: ' . $gitapi-\u003egetUrl()\n        . '\u003cbr\u003eGitHub-Token: ' . $gitapi-\u003egetToken()\n    );\n} else {\n    $gitresult = $gitapi-\u003eget();\n    dump($gitresult);\n}\n```\n\nRepo-liste sortiert\nhttps://api.github.com/orgs/FriendsOfREDAXO/repos?sort=name\u0026direction=asc\n\n## Debug-Ausgabe\n\nÜber `setDebug(true)` kann die Debug-Ausgabe der Klasse angefordert werden. Das kann manchmal recht hilfreich sein.\nEs werden 2 Blöcke mit der REDAXO `dump()` Anweisung ausgegeben. Arrays können hier durch Klick auf den Pfeil aufgeklappt werden.\n\n**Block 1: Parameter** (DEBUG PARAMETERS)\n\n![Screenshot](https://github.com/FriendsOfREDAXO/rex_gitapi/blob/assets/rex_gitapi_debug1.png?raw=true)\n\nBeschreibung:\n\n0. Info Debug-Ausgabe der RexGitApi-Klasse (DEBUG PARAMETERS)\n1. angeforderte GitHub Api URL\n2. CURLOPT_USERAGENT\n3. CURLOPT_HTTPHEADER (Accept-Header, API-Version und Token)\n\n**Block 2: Ergebnisse** (DEBUG RESPONSE)\n\n![Screenshot](https://github.com/FriendsOfREDAXO/rex_gitapi/blob/assets/rex_gitapi_debug2.png?raw=true)\n\nBeschreibung\n\n0. Info Debug-Ausgabe der RexGitApi-Klasse (DEBUG RESPONSE)\n1. JSON-Result des API-Aufrufs\n2. PHP-Array-Result des API-Aufrufs\n\n\u003e **Hinweis:** Sollte der GitHub-API-Zugriff reinen Text zurückliefern wird im PHP-Array `rexgitjson` mit dem Text gesetzt!\n\n## Klasse RexGitApiCache\n\n## Klasse RexGitApiCurl\n\n## Klasse RexGitApiUrl\n\n## Klasse RexGitApiUtil\n\n## API-Tester\n\n... TODO\n\n\u003ca name=\"token\"\u003e\u003c/a\u003e\n\n## Authentifizierung (Token)\n\nOhne Authentifzizierung sind nur 60 Zugriffe pro Stunde auf die GitHub Api möglich. Mit einem Token können pro Stunde 5.000 Zugriffe auf die API erfolgen.\n\nZur Erstellung eines **Zugriff-Tokens** (Personal access token) solltest Du dich bei GitHub anmelden und dann folgende URL aufrufen:\n\n`https://github.com/settings/apps`\n\nAuf der Seite dann **Personal access tokens** (1) und danach **Tokens (classic)** (2) anklicken (siehe Screenshot).\n\n![Screenshot](https://github.com/FriendsOfREDAXO/rex_gitapi/blob/assets/rex_gitapi_token1.png?raw=true)\n\nAuf der nächsten Seite dann den Button **Generate new token** (1) anklicken und danach **Generate new token (classic)** (2) auswählen (siehe Screenshot).\n\n\u003e **Hinweis:** Danach muss noch einmal das Github-Passwort zur Bestätigung eingegeben werden!\n\n![Screenshot](https://github.com/FriendsOfREDAXO/rex_gitapi/blob/assets/rex_gitapi_token2.png?raw=true)\n\nAuf der nächsten Seite eine **Bezeichnung** (1) eingeben, ein **Ablaufdatum** (2) des Tokens auswählen und bei den Optionen **repo** (3) auswählen.\n\n![Screenshot](https://github.com/FriendsOfREDAXO/rex_gitapi/blob/assets/rex_gitapi_token3.png?raw=true)\n\nFür Zugriff auf Benutzerdaten noch zusätzlich die Opiton **user** (4) auswählen.\n\n![Screenshot](https://github.com/FriendsOfREDAXO/rex_gitapi/blob/assets/rex_gitapi_token4.png?raw=true)\n\nAuf dem folgenden Screen wird dann der generierte Token ausgegeben der unbedingt kopiert und gespeichert werden sollte.\n\n\u003e **Hinweis:** Token unbedingt kopieren und speichern! Der Token kann nicht mehr angezeigt werden!\n\n![Screenshot](https://github.com/FriendsOfREDAXO/rex_gitapi/blob/assets/rex_gitapi_token5.png?raw=true)\n\nIdealerweise wird der Token in den Einstellungen für `rex_gitapi` gespeichert.\n\n![Screenshot](https://github.com/FriendsOfREDAXO/rex_gitapi/blob/assets/rex_gitapi_token6.png?raw=true)\n\n\u003e **Hinweis:** Tokens können jederzeit gelöscht und neu angelegt werden. Ein neuer Token in den Einstellungen vom AddOn `rex_gitapi` wird sofort berücksichtigt.\n\n## Noch Fragen oder Anregungen? Einen Bug gefunden?\n\nDann geht es hier weiter ...\n\n* Auf Github: [https://github.com/FriendsOfREDAXO/rex_gitapi](https://github.com/FriendsOfREDAXO/rex_gitapi)\n\n* im Slack-Channel: [https://friendsofredaxo.slack.com/](https://friendsofredaxo.slack.com/)\n\n## Credits ##\n\n* GitHub API https://docs.github.com/rest\n* [Friends Of REDAXO](https://github.com/FriendsOfREDAXO) Gemeinsame REDAXO-Entwicklung!\n* Andreas Eberhard @aeberhard, http://aesoft.de\n\n\u003e Photo by Christina Morillo from Pexels: https://www.pexels.com/photo/eyeglasses-in-front-of-laptop-computer-1181253/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffriendsofredaxo%2Frex_gitapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffriendsofredaxo%2Frex_gitapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffriendsofredaxo%2Frex_gitapi/lists"}