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
extensions
LocalisationUpdate
includes
fetcher
GitHubFetcher.php
Generated on Thu Dec 19 2019 14:53:54 for MediaWiki by
1.8.16