MediaWiki REL1_31
GitHubFetcher.php
Go to the documentation of this file.
1<?php
8namespace LocalisationUpdate;
9
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}
This class uses GitHub api to obtain a list of files present in a directory to avoid fetching files t...
Fetches files over HTTP(s).