geocoder-php / geocoder-php/Geocoder
How do I change the OpenRouteService::API_URL for "On-Premise" install of software
オープン
まだ誰も着手していません。
improvement
provider
- 主要言語
- PHP
- スター
- 4k
- フォーク
- 525
- 平均マージ
- 8分
- マージ済み PR(30日)
- 1
説明
I noticed the OpenRouteService::API_URL is being hard-coded into file Geocoder\Provider\OpenRouteService (vendor\geocoder-php\openrouteservice-provide\OpenRouteService.php)
Could someone please push the following code into the next version of OpenRouteService (updating Pelias would do the trick)
vendor\geocoder-php\pelias-provider\Pelias.php
/**
* @param HttpClient $client an HTTP adapter
* @param string $root url of Pelias API
* @param int $version version of Pelias API
*/
public function __construct(HttpClient $client, string $root, int $version = 1)
{
$this->_setPeliasApiRoot($root, $version);
parent::__construct($client);
}
/**
* Set the API root and version, see "_setPeliasApiRoot"
* @param string $root url of Pelias API
* @param int $version version of Pelias API
*/
public function set_Pelias_ApiRoot(string $root, int $version = 1)
{
return $this->_setPeliasApiRoot($root, $version);
}
/**
* Set the API root and version
* @param string $root url of Pelias API
* @param int $version version of Pelias API
*/
protected function _setPeliasApiRoot(string $root, int $version = 1)
{
$this->root = sprintf('%s/v%d', rtrim($root, '/'), $version);
$this->version = $version;
}
vendor\geocoder-php\openrouteservice-provider
const API_URL = 'https://api.openrouteservice.org/geocode';
const API_VERSION = 1;
/**
* @var string
*/
private $apiKey;
/**
* @param HttpClient $client an HTTP adapter
* @param string $apiKey an API key
*/
public function __construct(HttpClient $client, string $apiKey)
{
if (empty($apiKey)) {
throw new InvalidCredentials('No API key provided.');
}
$this->apiKey = $apiKey;
parent::__construct($client, self::API_URL, self::API_VERSION);
$this->_set_ORS_API_Root(self::API_URL, self::API_VERSION, TRUE);
}
/**
* Set the Openrouteservice URL
* @param string $root
* @param integer $version
* @param boolean $check_version
* @return void
*/
public function set_ORS_API_Root(string $root, $version, $check_version = false)
{
return $this->_set_ORS_API_Root($root, $version, $check_version);
}
/**
* Set the Openrouteservice URL
* @param string $root
* @param integer $version
* @param boolean $check_version
* @return void
*/
protected function _set_ORS_API_Root(string $root, $version, $check_version = false)
{
parent::_setPeliasApiRoot($root, $version);
if (filter_var($check_version, FILTER_VALIDATE_BOOLEAN)) {
$this->_check_ORS_API_Root_Version($root, $root, $version);
}
}
/**
* Openrouteservice does not use /v1 in first version, but plan to add
* /v2 in next version.
*
* @see https://ask.openrouteservice.org/t/pelias-version-in-api-url/1021
* @param string $root
* @param string $new_root
* @param string $version
* @return void
*/
protected function _check_ORS_API_Root_Version(string &$root, string $new_root, $version)
{
$version_ok = true;
$version_ok = ($version_ok && is_numeric($version));
$version_ok = ($version_ok && ($version === self::API_VERSION));
$version_ok = ($version_ok && is_string($new_root));
$version_ok = ($version_ok && !empty($new_root));
$version_ok = (bool) $version_ok;
if ($version_ok) {
$root = $new_root;
}
}
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
OpenRouteServiceプロバイダーと、そこにハードコードされているAPI_URLから始め、次に、そのコンストラクターをissueで説明されているPelias.phpのエントリーポイントと比較します。既存のバージョン処理を維持しながら、オンプレミスのAPIルートをどのように指定すべきかを判断します。OpenRouteServiceがホストされたエンドポイントだけでなく、オンプレミスのURLも対象にできれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- php
- 領域
- api
- issue の種類
- 機能追加
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100