Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
33.33% covered (danger)
33.33%
1 / 3
CRAP
82.35% covered (warning)
82.35%
14 / 17
WsExport
0.00% covered (danger)
0.00%
0 / 1
33.33% covered (danger)
33.33%
1 / 3
8.35
82.35% covered (warning)
82.35%
14 / 17
 __construct
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
10 / 10
 getBaseUrl
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 getExportUrl
0.00% covered (danger)
0.00%
0 / 1
3.33
66.67% covered (warning)
66.67%
4 / 6
<?php
namespace MediaWiki\Extension\Wikisource;
use Language;
use Title;
class WsExport {
    /** @var string Language code (Wikisource subdomain). */
    private $lang;
    /** @var string Base URL for the WS Export tool. */
    private $wsExportUrl;
    /**
     * @param Language $contentLanguage
     * @param string $wsExportUrl
     * @param string $serverName
     */
    public function __construct( Language $contentLanguage, string $wsExportUrl, string $serverName ) {
        // Get the language code.
        // This logic is duplicated for the frontend in modules/ext.wikisource.ChooserButton.js
        $this->lang = $contentLanguage->getCode();
        $wikisourcePos = strpos( $serverName, '.wikisource.org' );
        if ( $serverName === 'wikisource.org' ) {
            $this->lang = 'mul';
        } elseif ( strpos( $serverName, 'en.wikisource.beta' ) !== false ) {
            $this->lang = 'beta';
        } elseif ( $wikisourcePos !== false ) {
            $this->lang = substr( $serverName, 0, $wikisourcePos );
        }
        $this->wsExportUrl = $wsExportUrl;
    }
    /**
     * @return string
     */
    public function getBaseUrl(): string {
        return $this->wsExportUrl;
    }
    /**
     * Get a URL for the WS Export tool.
     * @param Title $title
     * @param string|null $format
     * @return string
     */
    public function getExportUrl( Title $title, ?string $format = null ): string {
        $title = wfUrlencode( $title->getPrefixedDBkey() );
        if ( $format ) {
            $urlFormat = $this->wsExportUrl . '/?format=%s&lang=%s&page=%s';
            return sprintf( $urlFormat, $format, $this->lang, $title );
        } else {
            $urlFormat = $this->wsExportUrl . '/?lang=%s&title=%s';
            return sprintf( $urlFormat, $this->lang, $title );
        }
    }
}