mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-06 10:11:38 +09:00
Fix broken iwinv SMS driver due to incompatible API URL
iwinv 문자 API가 업데이트되면서 URL이 쥐도새도 모르게 변경되어 기존 사용자는 현행 매뉴얼의 API URL을 사용할 수 없고 (에러 코드 14) 신규 사용자는 기존 라이믹스 드라이버를 사용할 수 없는 현상이 발생하여 어느 쪽 사용자인지 수동으로 선택하도록 변경함. 기존에 API key를 입력해 둔 사용자는 설정 화면 접근시 자동으로 기존 URL이 선택되고, 그렇지 않으면 신규 URL이 선택되도록 함. 카페24에 이어 iwinv까지;;; 국내 업체들은 도대체 REST API 운영에 대한 개념이 있는 건가요?
This commit is contained in:
parent
81882e8420
commit
4196d42b06
5 changed files with 44 additions and 4 deletions
|
|
@ -8,9 +8,9 @@ namespace Rhymix\Framework\Drivers\SMS;
|
|||
class iwinv extends Base implements \Rhymix\Framework\Drivers\SMSInterface
|
||||
{
|
||||
/**
|
||||
* API endpoint URL.
|
||||
* API endpoint URL (fallback if URL is not explicitly configured)
|
||||
*/
|
||||
const API_URL = 'https://sms.service.iwinv.kr/send/';
|
||||
const LEGACY_API_URL = 'https://sms.service.iwinv.kr/send/';
|
||||
|
||||
/**
|
||||
* API specifications.
|
||||
|
|
@ -40,7 +40,7 @@ class iwinv extends Base implements \Rhymix\Framework\Drivers\SMSInterface
|
|||
/**
|
||||
* Config keys used by this driver are stored here.
|
||||
*/
|
||||
protected static $_required_config = array('api_key', 'api_secret');
|
||||
protected static $_required_config = array('api_url', 'api_key', 'api_secret');
|
||||
protected static $_optional_config = array();
|
||||
|
||||
/**
|
||||
|
|
@ -54,6 +54,19 @@ class iwinv extends Base implements \Rhymix\Framework\Drivers\SMSInterface
|
|||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of API URLs supported by this driver.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getApiUrls()
|
||||
{
|
||||
return array(
|
||||
'https://sms.bizservice.iwinv.kr/api/send/' => 'sms.bizservice.iwinv.kr',
|
||||
'https://sms.service.iwinv.kr/send/' => 'sms.service.iwinv.kr',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a message.
|
||||
|
|
@ -107,12 +120,22 @@ class iwinv extends Base implements \Rhymix\Framework\Drivers\SMSInterface
|
|||
$data['date'] = gmdate('Y-m-d H:i:s', $message->delay + (3600 * 9));
|
||||
}
|
||||
|
||||
// Set API URL
|
||||
if (!empty($this->_config['api_url']))
|
||||
{
|
||||
$api_url = $this->_config['api_url'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$api_url = self::LEGACY_API_URL;
|
||||
}
|
||||
|
||||
// We need to use curl because Filehandler::getRemoteResource() doesn't work with this API for some reason.
|
||||
if (!$curl)
|
||||
{
|
||||
$curl = curl_init();
|
||||
}
|
||||
curl_setopt($curl, \CURLOPT_URL, self::API_URL);
|
||||
curl_setopt($curl, \CURLOPT_URL, $api_url);
|
||||
curl_setopt($curl, \CURLOPT_TIMEOUT, 5);
|
||||
curl_setopt($curl, \CURLOPT_POST, 1);
|
||||
curl_setopt($curl, \CURLOPT_RETURNTRANSFER, 1);
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ class SMS
|
|||
'name' => $class_name::getName(),
|
||||
'required' => $class_name::getRequiredConfig(),
|
||||
'optional' => $class_name::getOptionalConfig(),
|
||||
'api_urls' => method_exists($class_name, 'getApiUrls') ? $class_name::getApiUrls() : [],
|
||||
'api_types' => $class_name::getAPITypes(),
|
||||
'api_spec' => $class_name::getAPISpec(),
|
||||
);
|
||||
|
|
|
|||
|
|
@ -245,6 +245,20 @@
|
|||
|
||||
{@ $conf_value = escape(config("sms.$driver_name.$conf_name"))}
|
||||
|
||||
<!--@if($conf_name === 'api_url')-->
|
||||
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
|
||||
<label class="x_control-label" for="sms_{$driver_name}_api_key">{$lang->cmd_advanced_mailer_api_url}</label>
|
||||
<div class="x_controls">
|
||||
{@ $conf_exists = config("sms.$driver_name.api_key")}
|
||||
<select type="select" name="sms_{$driver_name}_api_url" id="sms_{$driver_name}_api_url">
|
||||
<!--@foreach($driver_definition['api_urls'] as $api_url => $api_url_name)-->
|
||||
<option value="{$api_url}" selected="selected"|cond="$conf_value === $api_url || (!$conf_value && $conf_exists && $api_url === array_last_key($driver_definition['api_urls']))">{$api_url_name}</option>
|
||||
<!--@endforeach-->
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($conf_name === 'api_user')-->
|
||||
<div class="x_control-group hidden-by-default show-for-{$driver_name}">
|
||||
<label class="x_control-label" for="sms_{$driver_name}_api_user">{$lang->cmd_advanced_mailer_api_user}</label>
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ $lang->cmd_advanced_mailer_smtp_security_tls = 'TLS (STARTTLS)';
|
|||
$lang->cmd_advanced_mailer_smtp_security_none = 'None';
|
||||
$lang->cmd_advanced_mailer_smtp_user = 'Username';
|
||||
$lang->cmd_advanced_mailer_smtp_pass = 'Password';
|
||||
$lang->cmd_advanced_mailer_api_url = 'API URL';
|
||||
$lang->cmd_advanced_mailer_api_key = 'API key';
|
||||
$lang->cmd_advanced_mailer_api_secret = 'API secret';
|
||||
$lang->cmd_advanced_mailer_api_domain = 'Domain';
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ $lang->cmd_advanced_mailer_smtp_security_tls = 'TLS (STARTTLS)';
|
|||
$lang->cmd_advanced_mailer_smtp_security_none = '사용하지 않음';
|
||||
$lang->cmd_advanced_mailer_smtp_user = '아이디';
|
||||
$lang->cmd_advanced_mailer_smtp_pass = '비밀번호';
|
||||
$lang->cmd_advanced_mailer_api_url = 'API URL';
|
||||
$lang->cmd_advanced_mailer_api_key = 'API 키';
|
||||
$lang->cmd_advanced_mailer_api_secret = 'API 비밀';
|
||||
$lang->cmd_advanced_mailer_api_domain = '도메인';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue