[^/]+)/(?P[^/]+)/(?P[^/]+)/(?P.+)/.+$~'; preg_match( $p, $pattern, $m ); $json = Http::get( "https://api.github.com/repos/{$m['org']}/{$m['repo']}/contents/{$m['path']}" ); if ( !$json ) { throw new MWException( "Unable to get directory listing for {$m['org']}/{$m['repo']}" ); } $files = array(); $json = FormatJson::decode( $json, true ); foreach ( $json as $fileinfo ) { $fileurl = dirname( $pattern ) . '/' . $fileinfo['name']; $file = $this->fetchFile( $fileurl ); if ( $file ) { $files[$fileurl] = $file; } } return $files; } }