沢山追加
This commit is contained in:
@@ -456,80 +456,43 @@ class Curl {
|
||||
$headersComplete = false;
|
||||
|
||||
// ヘッダーとボディを分けて読み込む
|
||||
while (!feof($socket)) {
|
||||
$line = fgets($socket);
|
||||
if ($line === false) {
|
||||
break;
|
||||
}
|
||||
|
||||
$rawResponse .= $line;
|
||||
|
||||
if (!$headersComplete) {
|
||||
if (trim($line) === '') {
|
||||
$headersComplete = true;
|
||||
} else {
|
||||
$headers .= $line;
|
||||
}
|
||||
} else {
|
||||
$body .= $line;
|
||||
}
|
||||
}
|
||||
|
||||
while (!feof($socket)) $rawResponse .= fread($socket, 8192);
|
||||
fclose($socket);
|
||||
|
||||
// レスポンスヘッダーを解析
|
||||
$headerLines = explode("\r\n", $headers);
|
||||
if ($rawResponse === '') {
|
||||
$this->responseError = 'リスポンスエラー';
|
||||
return \Result::Error($this->responseError);
|
||||
}
|
||||
|
||||
// ステータスコードを取得
|
||||
$statusLine = isset($headerLines[0]) ? $headerLines[0] : '';
|
||||
$statusParts = explode(' ', $statusLine, 3);
|
||||
$this->responseCode = isset($statusParts[1]) ? (int)$statusParts[1] : 0;
|
||||
$this->info['http_code'] = $this->responseCode;
|
||||
list($headerLines, $body) = $this->parseResponse($rawResponse);
|
||||
|
||||
// ヘッダーを解析
|
||||
$this->responseHeaders = [];
|
||||
$redirectUrl = '';
|
||||
$this->responseCode = 0;
|
||||
|
||||
foreach ($headerLines as $index => $header) {
|
||||
if ($index === 0) continue;
|
||||
if ($index === 0) {
|
||||
if (preg_match('#HTTP/\d\.\d (\d+)#', $header, $m))
|
||||
$this->responseCode = (int)$m[1];
|
||||
continue;
|
||||
}
|
||||
|
||||
if (strpos($header, ':') !== false) {
|
||||
list($name, $value) = explode(':', $header, 2);
|
||||
[$name, $value] = explode(':', $header, 2);
|
||||
$name = trim($name);
|
||||
$value = trim($value);
|
||||
$this->responseHeaders[$name] = $value;
|
||||
|
||||
if (strtolower($name) === 'content-type') {
|
||||
$this->info['content_type'] = $value;
|
||||
}
|
||||
|
||||
// リダイレクトをチェック
|
||||
if ($this->followRedirects &&
|
||||
strtolower($name) === 'location' &&
|
||||
$this->responseCode >= 300 &&
|
||||
$this->responseCode < 400) {
|
||||
|
||||
$redirectUrl = $value;
|
||||
|
||||
// 相対URLを絶対URLに変換
|
||||
if (strpos($redirectUrl, 'http') !== 0) {
|
||||
if ($redirectUrl[0] === '/') {
|
||||
$redirectUrl = "{$scheme}://{$host}"
|
||||
.($port != 80 && $port != 443 ? ":{$port}" : '').$redirectUrl;
|
||||
} else {
|
||||
$redirectUrl = "{$scheme}://{$host}"
|
||||
.($port != 80 && $port != 443 ? ":{$port}" : '')
|
||||
.dirname($path).'/'.$redirectUrl;
|
||||
}
|
||||
}
|
||||
|
||||
$this->info['redirect_url'] = $redirectUrl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->info['http_code'] = $this->responseCode;
|
||||
if (isset($this->responseHeaders['Transfer-Encoding'])
|
||||
&& stripos($this->responseHeaders['Transfer-Encoding'], 'chunked') !== false) {
|
||||
$body = $this->decodeChunkedBody($body);
|
||||
}
|
||||
|
||||
$this->info['header_size'] += strlen($headers);
|
||||
$this->responseBody .= $body;
|
||||
$this->responseBody = $body;
|
||||
|
||||
if ($this->verbose && $this->stderr) {
|
||||
fwrite($this->stderr, "* レスポンスコード: {$this->responseCode}\n");
|
||||
@@ -688,20 +651,11 @@ class Curl {
|
||||
*/
|
||||
private function parseResponse(string $response): array {
|
||||
$parts = explode("\r\n\r\n", $response, 2);
|
||||
|
||||
if (count($parts) < 2) {
|
||||
return [[], ''];
|
||||
}
|
||||
|
||||
if (count($parts) < 2) return [explode("\r\n", $response), ''];
|
||||
|
||||
$headers = explode("\r\n", $parts[0]);
|
||||
$body = $parts[1];
|
||||
|
||||
// チャンク転送エンコーディングを処理
|
||||
if (isset($this->responseHeaders['Transfer-Encoding']) &&
|
||||
strtolower($this->responseHeaders['Transfer-Encoding']) === 'chunked') {
|
||||
$body = $this->decodeChunkedBody($body);
|
||||
}
|
||||
|
||||
|
||||
return [$headers, $body];
|
||||
}
|
||||
|
||||
@@ -717,15 +671,9 @@ class Curl {
|
||||
|
||||
while ($position < strlen($body)) {
|
||||
$lineEnd = strpos($body, "\r\n", $position);
|
||||
if ($lineEnd === false) {
|
||||
break;
|
||||
}
|
||||
|
||||
if ($lineEnd === false) break;
|
||||
$chunkSize = hexdec(substr($body, $position, $lineEnd - $position));
|
||||
|
||||
if ($chunkSize === 0) {
|
||||
break;
|
||||
}
|
||||
if ($chunkSize === 0) break;
|
||||
|
||||
$position = $lineEnd + 2;
|
||||
$decodedBody .= substr($body, $position, $chunkSize);
|
||||
|
||||
@@ -4,13 +4,17 @@ namespace Std\Lib;
|
||||
use Std\Lib\Curl;
|
||||
|
||||
class Openprovider {
|
||||
private string $user;
|
||||
private string $pass;
|
||||
private string $token;
|
||||
private string $ip;
|
||||
private int $reseller_id;
|
||||
private string $BASEURL = 'https://api.openprovider.eu/v1beta';
|
||||
// private Curl $curl;
|
||||
protected string $dataFile = ROOT."/data/session.json";
|
||||
protected int $tokenDuration = 172800; // 48時間
|
||||
|
||||
private string $user = '';
|
||||
private string $pass = '';
|
||||
private string $token = '';
|
||||
private string $ip = '';
|
||||
private int $reseller_id = 0;
|
||||
private int $last_auth = 0;
|
||||
private string $BASEURL = DEBUG_MODE ? 'http://api.sandbox.openprovider.nl:8480/v1beta'
|
||||
: 'https://api.openprovider.eu/v1beta';
|
||||
|
||||
public function __construct() {
|
||||
if (!OPENPROVIDER_ENABLED) return;
|
||||
@@ -22,10 +26,13 @@ class Openprovider {
|
||||
/***
|
||||
* トークンの受け取り。
|
||||
* このライブリリーを使ったら、一回「login()」を実行する事が必須となります。
|
||||
*
|
||||
* @return Result 結果
|
||||
*
|
||||
* @return Result|false 結果
|
||||
*/
|
||||
public function login(): \Result {
|
||||
public function login(): \Result|false {
|
||||
if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
|
||||
$this->getCache();
|
||||
if (time() < ($this->last_auth + $this->tokenDuration)) return false;
|
||||
$curl = new Curl("{$this->BASEURL}/auth/login");
|
||||
|
||||
$payload = [
|
||||
@@ -58,7 +65,10 @@ class Openprovider {
|
||||
$data = json_decode($body, true);
|
||||
if (isset($data['data']['token'])) {
|
||||
$this->token = $data['data']['token'];
|
||||
$this->last_auth = time();
|
||||
$this->reseller_id = $data['data']['reseller_id'];
|
||||
$this->mkCache();
|
||||
|
||||
return \Result::Success();
|
||||
}
|
||||
|
||||
@@ -71,14 +81,82 @@ class Openprovider {
|
||||
|
||||
//// ドメイン
|
||||
|
||||
/***
|
||||
* ドメイン一覧。
|
||||
*
|
||||
* @return Result|array 結果。
|
||||
*/
|
||||
public function listDomains(array $query = []): \Result|array {
|
||||
if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
|
||||
$curl = $this->setupCurl('/domains');
|
||||
$data = $this->curlResult($curl);
|
||||
if (isset($data['data']['results'])) return $data['data']['results'];
|
||||
|
||||
return \Result::Error("ドメインの確認に失敗。");
|
||||
}
|
||||
|
||||
/**
|
||||
* ドメイン名の登録。
|
||||
*
|
||||
* @param string $name 登録したいドメイン名(例:"076studio.jp")
|
||||
* @param array $info カスタマー情報等
|
||||
* @param int $period 年間(デフォルト=1年)
|
||||
* @return Result|array 結果。配列の場合:'activation_date'(リアルタイムで成功したのみ), 'auth_code'(TLDが対応している場合のみ), 'expiration_date', 'id', 'renewal_date', 'status'(ACT又はREQ)
|
||||
*/
|
||||
public function createDomain(string $name, array $info, int $period = 1): \Result|array {
|
||||
if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
|
||||
if (!isset($info['owner_handle']) || $info['owner_handle'] === '') $info['owner_handle'] = OPENPROVIDER['owner_handle'];
|
||||
if (!isset($info['admin_handle']) || $info['admin_handle'] === '') $info['admin_handle'] = OPENPROVIDER['owner_handle'];
|
||||
if (!isset($info['tech_handle']) || $info['tech_handle'] === '') $info['tech_handle'] = OPENPROVIDER['owner_handle'];
|
||||
if (!isset($info['billing_handle']) || $info['billing_handle'] === '') $info['billing_handle'] = OPENPROVIDER['owner_handle'];
|
||||
if (!isset($info['reseller_handle']) || $info['reseller_handle'] === '') $info['reseller_handle'] = OPENPROVIDER['owner_handle'];
|
||||
if (!isset($info['name_servers']) || empty($info['name_servers'])) $info['name_servers'] = ['ns1.openprovider.nl', 'ns2.openprovider.be', 'ns3.openprovider.eu'];
|
||||
if (!isset($info['autorenew']) || $info['autorenew'] === '') $info['autorenew'] = 'default';
|
||||
|
||||
// 新しい顧客の場合
|
||||
|
||||
$parts = explode('.', $name, 2);
|
||||
assert_exists($parts[0]);
|
||||
assert_exists($parts[1]);
|
||||
$domain = [
|
||||
'name' => $parts[0],
|
||||
'extension' => $parts[1],
|
||||
];
|
||||
|
||||
$ns = [];
|
||||
foreach ($info['name_servers'] as $n) {
|
||||
$ns[] = ['name' => $n];
|
||||
}
|
||||
|
||||
$payload = [
|
||||
'name' => $domain,
|
||||
'period' => $period,
|
||||
'owner_handle' => $owner_handle,
|
||||
'admin_handle' => $admin_handle,
|
||||
'tech_handle' => $tech_handle,
|
||||
'billing_handle' => $billing_handle,
|
||||
'reseller_handle' => $reseller_handle,
|
||||
'name_servers' => $ns,
|
||||
'autorenew' => $autorenew,
|
||||
];
|
||||
|
||||
$curl = $this->setupCurl('/domains/', 'POST', $payload);
|
||||
kys('TODO');
|
||||
$data = $this->curlResult($curl);
|
||||
if (isset($data['data'])) return $data['data'];
|
||||
|
||||
return \Result::Error("ドメインの確認に失敗。");
|
||||
}
|
||||
|
||||
/***
|
||||
* ドメインを登録可能かどうかの確認。
|
||||
*
|
||||
*
|
||||
* @param array $domains ドメイン名リスト。例:['076.moe', '076.co.jp', '076.com']
|
||||
* @param bool $with_price 値段を表示するかどうか。デフォルトは「false」
|
||||
* @return Result|array 結果。配列の場合:'domain'と'status'はいつでもあり、'reason', 'premium', 'is_premium'が多分あり、そして'price'が「with_price」が「true」の場合のみ。
|
||||
*/
|
||||
public function checkDomainAvailable(array $domains, bool $with_price = false): \Result|array {
|
||||
if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
|
||||
$domainList = [];
|
||||
foreach ($domains as $d) {
|
||||
$domain = explode('.', $d);
|
||||
@@ -106,80 +184,23 @@ class Openprovider {
|
||||
return \Result::Error("ドメインの確認に失敗。");
|
||||
}
|
||||
|
||||
/**
|
||||
* ドメイン名の登録。
|
||||
*
|
||||
* @param string $name 登録したいドメイン名(例:"076studio.jp")
|
||||
* @param int $period 年間(デフォルト=1年)
|
||||
* @param string $owner_handle
|
||||
* @param string $admin_handle
|
||||
* @param string $tech_handle
|
||||
* @param string $billing_handle
|
||||
* @param string $reseller_handle
|
||||
* @param array $name_servers ネームサーバー(4つまで、デフォルトはOpenProviderさんのネームサーバー)
|
||||
* @param string $autorenew 自動的に更新するかどうか(可能な値:on|off|default、デフォルト=default)
|
||||
* @return Result|array 結果。配列の場合:'activation_date'(リアルタイムで成功したのみ), 'auth_code'(TLDが対応している場合のみ), 'expiration_date', 'id', 'renewal_date', 'status'(ACT又はREQ)
|
||||
*/
|
||||
public function registerDomain(string $name, int $period = 1, string $owner_handle = '',
|
||||
string $admin_handle = '', string $tech_handle = '',
|
||||
string $billing_handle = '', string $reseller_handle = '',
|
||||
array $name_servers = [], string $autorenew = 'default'): \Result|array {
|
||||
if ($owner_handle === '') $owner_handle = OPENPROVIDER['owner_handle'];
|
||||
if ($admin_handle === '') $admin_handle = $owner_handle;
|
||||
if ($tech_handle === '') $tech_handle = $owner_handle;
|
||||
if ($billing_handle === '') $billing_handle = $owner_handle;
|
||||
if ($reseller_handle === '') $reseller_handle = $owner_handle;
|
||||
|
||||
$parts = explode('.', $name, 2);
|
||||
assert_exists($parts[0]);
|
||||
assert_exists($parts[1]);
|
||||
$domain = [
|
||||
'name' => $parts[0],
|
||||
'extension' => $parts[1],
|
||||
];
|
||||
|
||||
$ns = [];
|
||||
if (empty($name_servers)) $name_servers = ['ns1.openprovider.nl', 'ns2.openprovider.be', 'ns3.openprovider.eu'];
|
||||
foreach ($name_servers as $n) {
|
||||
$ns[] = ['name' => $n];
|
||||
}
|
||||
|
||||
$payload = [
|
||||
'name' => $domain,
|
||||
'period' => $period,
|
||||
'owner_handle' => $owner_handle,
|
||||
'admin_handle' => $admin_handle,
|
||||
'tech_handle' => $tech_handle,
|
||||
'billing_handle' => $billing_handle,
|
||||
'reseller_handle' => $reseller_handle,
|
||||
'name_servers' => $ns,
|
||||
'autorenew' => $autorenew,
|
||||
];
|
||||
|
||||
$curl = $this->setupCurl('/domains/', 'POST', $payload);
|
||||
kys('TODO');
|
||||
$data = $this->curlResult($curl);
|
||||
if (isset($data['data'])) return $data['data'];
|
||||
|
||||
return \Result::Error("ドメインの確認に失敗。");
|
||||
}
|
||||
|
||||
//// 追加データ
|
||||
|
||||
//// 顧客様の追加データ
|
||||
|
||||
/**
|
||||
* 顧客様の検索
|
||||
* @param array $query 検索クエリー(可能:handle_pattern (string), email_pattern (string), first_name_pattern (string), last_name_pattern (string), company_name_pattern (string), comment_pattern (string), with_additional_data (bool), limit (int = 100、最大=1000), offset (int = 0)
|
||||
*
|
||||
* @param array $query 検索クエリー
|
||||
* @return Result|array
|
||||
*/
|
||||
public function searchCustomers(array $query = []): \Result|array {
|
||||
if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
|
||||
foreach ($query as $k => $v) { if (is_bool($v)) $query[$k] = $v ? '1' : '0'; }
|
||||
|
||||
$uri = '/customers?'.http_build_query($query, '', '&', PHP_QUERY_RFC3986);
|
||||
$curl = $this->setupCurl($uri);
|
||||
kys("TODO: 問題");
|
||||
$data = $this->curlResult($curl);
|
||||
kys($data);
|
||||
if (isset($data['data'])) return $data['data'];
|
||||
|
||||
return \Result::Error("TLD一覧の受け取りに失敗。");
|
||||
@@ -187,16 +208,34 @@ class Openprovider {
|
||||
|
||||
//// ドメイン値段
|
||||
|
||||
/**
|
||||
* ドメイン値段一覧
|
||||
*
|
||||
* @param array $query 検索クエリー
|
||||
* @return Result|array
|
||||
*/
|
||||
public function getDomainPrices(array $query): \Result|array {
|
||||
if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
|
||||
$uri = "/domains/prices?".http_build_query($query, '', '&', PHP_QUERY_RFC3986);
|
||||
$curl = $this->setupCurl($uri);
|
||||
$data = $this->curlResult($curl);
|
||||
if (isset($data['data'])) return $data['data'];
|
||||
|
||||
return \Result::Error("TLD一覧の受け取りに失敗。");
|
||||
}
|
||||
|
||||
//// 認証コード
|
||||
|
||||
//// TLD
|
||||
|
||||
/**
|
||||
* TLD一覧
|
||||
*
|
||||
* @param array $query 検索クエリー(可能:limit (int),offset (int),order (string),order_by (string),extensions(array), name_pattern (string), only_names (bool), with_description (bool),with_restrictions (bool)with_usage_count (bool)with_application_mode (bool),with_price (bool),with_level_prices (bool)is_active (bool)is_new_gtld (bool),status (string),application_mode (string))
|
||||
*
|
||||
* @param array $query 検索クエリー
|
||||
* @return Result|array
|
||||
*/
|
||||
public function listTlds(array $query = []): \Result|array {
|
||||
if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
|
||||
if (empty($query)) $query = [ 'limit' => 10, 'offset' => 0, 'order' => 'ASC' ];
|
||||
|
||||
foreach ($query as $k => $v) {
|
||||
@@ -204,11 +243,31 @@ class Openprovider {
|
||||
}
|
||||
|
||||
$uri = '/tlds?'.http_build_query($query, '', '&', PHP_QUERY_RFC3986);
|
||||
// kys($uri);
|
||||
$curl = $this->setupCurl($uri);
|
||||
kys("TODO: JSONの問題");
|
||||
$data = $this->curlResult($curl);
|
||||
kys($data);
|
||||
if (isset($data['data'])) return $data['data'];
|
||||
|
||||
return \Result::Error("TLD一覧の受け取りに失敗。");
|
||||
}
|
||||
|
||||
/**
|
||||
* TLDの表示
|
||||
*
|
||||
* @param string $tld TLD
|
||||
* @param array $query 検索クエリー
|
||||
* @return Result|array
|
||||
*/
|
||||
public function getTld(string $tld, array $query = []): \Result|array {
|
||||
if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
|
||||
if (empty($query)) $query = [ 'limit' => 10, 'offset' => 0 ];
|
||||
|
||||
foreach ($query as $k => $v) {
|
||||
if (is_bool($v)) $query[$k] = $v ? '1' : '0';
|
||||
}
|
||||
|
||||
$uri = "/tlds/{$tld}?".http_build_query($query, '', '&', PHP_QUERY_RFC3986);
|
||||
$curl = $this->setupCurl($uri);
|
||||
$data = $this->curlResult($curl);
|
||||
if (isset($data['data'])) return $data['data'];
|
||||
|
||||
return \Result::Error("TLD一覧の受け取りに失敗。");
|
||||
@@ -229,8 +288,66 @@ class Openprovider {
|
||||
//// NSグループ
|
||||
//// テンプレート
|
||||
//// ゾーン
|
||||
|
||||
/**
|
||||
* DNSゾーン一覧
|
||||
*
|
||||
* @param array $query
|
||||
* @return Result|array
|
||||
*/
|
||||
public function listDnsZones(array $query = []): \Result|array {
|
||||
if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
|
||||
if (empty($query)) $query = [ 'limit' => 25, 'offset' => 0, 'order_by.name' => 'asc' ];
|
||||
|
||||
foreach ($query as $k => $v) {
|
||||
if (is_bool($v)) $query[$k] = $v ? '1' : '0';
|
||||
}
|
||||
|
||||
$uri = "/dns/zones?".http_build_query($query, '', '&', PHP_QUERY_RFC3986);
|
||||
$curl = $this->setupCurl($uri);
|
||||
$data = $this->curlResult($curl);
|
||||
if (isset($data['data'])) return $data['data'];
|
||||
|
||||
return \Result::Error("TLD一覧の受け取りに失敗。");
|
||||
}
|
||||
|
||||
/**
|
||||
* DNSゾーン一覧
|
||||
*
|
||||
* @param string $domain ドメイン名
|
||||
* @param array $query 検索クエリー
|
||||
* @return Result|array
|
||||
*/
|
||||
public function getDnsZone(string $domain, array $query = []): \Result|array {
|
||||
if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
|
||||
if (empty($query)) $query = [ 'limit' => 100, 'offset' => 0, 'order_by.name' => 'asc' ];
|
||||
foreach ($query as $k => $v) if (is_bool($v)) $query[$k] = $v ? '1' : '0';
|
||||
|
||||
$uri = "/dns/zones/{$domain}?".http_build_query($query, '', '&', PHP_QUERY_RFC3986);
|
||||
$curl = $this->setupCurl($uri);
|
||||
$data = $this->curlResult($curl);
|
||||
if (isset($data['data'])) return $data['data'];
|
||||
|
||||
return \Result::Error("TLD一覧の受け取りに失敗。");
|
||||
}
|
||||
|
||||
//// ゾーンレコード
|
||||
|
||||
/**
|
||||
* DNSレコード一覧
|
||||
*
|
||||
* @param string $domain
|
||||
* @return Result|array
|
||||
*/
|
||||
public function listZoneRecords(string $domain): \Result|array {
|
||||
if (!OPENPROVIDER_ENABLED) return \Result::error('エラー:OpenProviderは無効です。');
|
||||
$curl = $this->setupCurl("/dns/zones/{$domain}/records");
|
||||
$data = $this->curlResult($curl);
|
||||
if (isset($data['data'])) return $data['data'];
|
||||
|
||||
return \Result::Error("TLD一覧の受け取りに失敗。");
|
||||
}
|
||||
|
||||
// Easydmarc
|
||||
|
||||
// ライセンス
|
||||
@@ -245,19 +362,21 @@ class Openprovider {
|
||||
|
||||
/**
|
||||
* トークンの受け取り。
|
||||
*
|
||||
*
|
||||
* @return string トークン
|
||||
*/
|
||||
public function getToken(): string {
|
||||
if (!OPENPROVIDER_ENABLED) return '';
|
||||
return $this->token;
|
||||
}
|
||||
|
||||
/**
|
||||
* リセラーIDの受け取り。
|
||||
*
|
||||
*
|
||||
* @return int リセラーID
|
||||
*/
|
||||
public function getResellerId(): int {
|
||||
if (!OPENPROVIDER_ENABLED) return 0;
|
||||
return $this->reseller_id;
|
||||
}
|
||||
|
||||
@@ -277,7 +396,6 @@ class Openprovider {
|
||||
|
||||
private function curlResult(Curl &$curl): \Result|array {
|
||||
$res = $curl->execute();
|
||||
// kys($curl->getRequestHeader());
|
||||
if (!$res->isSuccess) {
|
||||
$err = "CURL実行に失敗: {$curl->message}";
|
||||
assert_unless_success($res, $err);
|
||||
@@ -285,18 +403,40 @@ class Openprovider {
|
||||
}
|
||||
|
||||
$body = $curl->getResponseBody();
|
||||
// kys($body);
|
||||
// kys($curl->getResponseHeaders());
|
||||
if ($curl->getResponseCode() != 200) {
|
||||
$err = json_decode($body, true);
|
||||
assert_not_null($err, "エラーの受け取りに失敗。");
|
||||
assert($curl->getResponseCode() == 200, $err['desc']);
|
||||
return \Result::Error();
|
||||
return \Result::Error($err['desc']);
|
||||
}
|
||||
assert_not_null($body, "返事ボディーは空です。");
|
||||
|
||||
// $body = str_
|
||||
kys($body);
|
||||
return json_decode($body, true);
|
||||
}
|
||||
|
||||
private function mkCache(): \Result {
|
||||
$session = new \stdClass;
|
||||
$session->lastAuth = $this->last_auth;
|
||||
$session->token = $this->token;
|
||||
$session->resellerId = $this->reseller_id;
|
||||
|
||||
$json = json_encode($session, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
||||
if (file_put_contents($this->dataFile, $json) === false) return \Result::Error('エラー:ユーザーデータの保存に失敗。');
|
||||
|
||||
return \Result::Success();
|
||||
}
|
||||
|
||||
private function getCache(): void {
|
||||
if (!file_exists($this->dataFile)) return;
|
||||
|
||||
$content = file_get_contents($this->dataFile);
|
||||
if ($content === false) return;
|
||||
|
||||
$data = json_decode($content, true);
|
||||
if (json_last_error() !== JSON_ERROR_NONE || !is_array($data)) return;
|
||||
|
||||
$this->token = $data['token'] ?? null;
|
||||
$this->reseller_id = $data['resellerId'] ?? null;
|
||||
$this->last_auth = $data['lastAuth'] ?? null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user