MediaWiki  1.34.0
GitHubFetcher.php
Go to the documentation of this file.
1 <?php
8 namespace LocalisationUpdate;
9 
18 class GitHubFetcher extends HttpFetcher {
25  public function fetchDirectory( $pattern ) {
26  $domain = preg_quote( 'https://raw.github.com/', '~' );
27  $p = "~^$domain(?P<org>[^/]+)/(?P<repo>[^/]+)/(?P<branch>[^/]+)/(?P<path>.+)/.+$~";
28  preg_match( $p, $pattern, $m );
29 
30  $apiURL = "https://api.github.com/repos/{$m['org']}/{$m['repo']}/contents/{$m['path']}";
31  $json = \Http::get( $apiURL );
32  if ( !$json ) {
33  throw new \Exception( "Unable to get directory listing for {$m['org']}/{$m['repo']}" );
34  }
35 
36  $files = [];
37  $json = \FormatJson::decode( $json, true );
38  foreach ( $json as $fileinfo ) {
39  $fileurl = dirname( $pattern ) . '/' . $fileinfo['name'];
40  $file = $this->fetchFile( $fileurl );
41  if ( $file ) {
42  $files[$fileurl] = $file;
43  }
44  }
45  return $files;
46  }
47 }
$file
if(PHP_SAPI !='cli-server') if(!isset( $_SERVER['SCRIPT_FILENAME'])) $file
Item class for a filearchive table row.
Definition: router.php:42
FormatJson\decode
static decode( $value, $assoc=false)
Decodes a JSON string.
Definition: FormatJson.php:174
LocalisationUpdate\GitHubFetcher
This class uses GitHub api to obtain a list of files present in a directory to avoid fetching files t...
Definition: GitHubFetcher.php:18
Http\get
static get( $url, array $options=[], $caller=__METHOD__)
Simple wrapper for Http::request( 'GET' )
Definition: Http.php:64
LocalisationUpdate\HttpFetcher
Fetches files over HTTP(s).
Definition: HttpFetcher.php:13
LocalisationUpdate
Definition: Fetcher.php:8
LocalisationUpdate\GitHubFetcher\fetchDirectory
fetchDirectory( $pattern)
Definition: GitHubFetcher.php:25
$fileinfo
$fileinfo
Definition: generateLocalAutoload.php:18