1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315:
<?php
/*
Copyright Game Server Services, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
namespace GS2\Timer;
use GS2\Core\Gs2Credentials as Gs2Credentials;
use GS2\Core\AbstractGs2Client as AbstractGs2Client;
use GS2\Core\Exception\NullPointerException as NullPointerException;
/**
* GS2-Timer クライアント
*
* @author Game Server Services, inc. <contact@gs2.io>
* @copyright Game Server Services, Inc.
*
*/
class Gs2TimerClient extends AbstractGs2Client {
public static $ENDPOINT = 'timer';
public static $VARIATION = 'a';
/**
* コンストラクタ
*
* @param string $region リージョン名
* @param Gs2Credentials $credentials 認証情報
* @param array $options オプション
*/
public function __construct($region, Gs2Credentials $credentials, $options = []) {
parent::__construct($region, $credentials, $options);
}
/**
* タイマープールリストを取得
*
* @param string $pageToken ページトークン
* @param integer $limit 取得件数
* @return array
* * items
* * array
* * timerPoolId => タイマープールID
* * ownerId => オーナーID
* * name => タイマープール名
* * createAt => 作成日時
* * nextPageToken => 次ページトークン
*/
public function describeTimerPool($pageToken = NULL, $limit = NULL) {
$query = [];
if($pageToken) $query['pageToken'] = $pageToken;
if($limit) $query['limit'] = $limit;
return $this->doGet(
'Gs2Timer',
'DescribeTimerPool',
Gs2TimerClient::$ENDPOINT,
Gs2TimerClient::$VARIATION,
'/timerPool',
$query);
}
/**
* タイマープールを作成<br>
* <br>
* GS2-Timer を利用するには、まずタイマープールを作成する必要があります。<br>
* タイマープールには複数のタイマーを格納することができます。<br>
*
* @param array $request
* * name => スタミナプール名
* @return array
* * item
* * timerPoolId => タイマープールID
* * ownerId => オーナーID
* * name => タイマープール名
* * createAt => 作成日時
*/
public function createTimerPool($request) {
if(is_null($request)) throw new NullPointerException();
$body = [];
if(array_key_exists('name', $request)) $body['name'] = $request['name'];
if(array_key_exists('description', $request)) $body['description'] = $request['description'];
$query = [];
return $this->doPost(
'Gs2Timer',
'CreateTimerPool',
Gs2TimerClient::$ENDPOINT,
Gs2TimerClient::$VARIATION,
'/timerPool',
$body,
$query);
}
/**
* タイマープールを取得
*
* @param array $request
* * timerPoolName => タイマープール名
* @return array
* * item
* * timerPoolId => タイマープールID
* * ownerId => オーナーID
* * name => タイマープール名
* * createAt => 作成日時
*/
public function getTimerPool($request) {
if(is_null($request)) throw new NullPointerException();
if(!array_key_exists('timerPoolName', $request)) throw new NullPointerException();
if(is_null($request['timerPoolName'])) throw new NullPointerException();
$query = [];
return $this->doGet(
'Gs2Timer',
'GetTimerPool',
Gs2TimerClient::$ENDPOINT,
Gs2TimerClient::$VARIATION,
'/timerPool/'. $request['timerPoolName'],
$query);
}
// /**
// * タイマープールを更新
// *
// * @param array $request リクエスト
// *
// * * timerPoolName => タイマープール名
// * * description => 説明文
// */
// public function updateTimerPool($request) {
// if(is_null($request)) throw new NullPointerException();
// if(!array_key_exists('timerPoolName', $request)) throw new NullPointerException();
// if(is_null($request['timerPoolName'])) throw new NullPointerException();
// $body = [];
// if(array_key_exists('description', $request)) $body['description'] = $request['description'];
// $query = [];
// return $this->doPut(
// 'Gs2Timer',
// 'UpdateTimerPool',
// Gs2TimerClient::$ENDPOINT,
// Gs2TimerClient::$VARIATION,
// '/timerPool/'. $request['timerPoolName'],
// $body,
// $query);
// }
/**
* タイマープールを削除
*
* @param array $request
* * timerPoolName => タイマープール名
*/
public function deleteTimerPool($request) {
if(is_null($request)) throw new NullPointerException();
if(!array_key_exists('timerPoolName', $request)) throw new NullPointerException();
if(is_null($request['timerPoolName'])) throw new NullPointerException();
$query = [];
return $this->doDelete(
'Gs2Timer',
'DeleteTimerPool',
Gs2TimerClient::$ENDPOINT,
Gs2TimerClient::$VARIATION,
'/timerPool/'. $request['timerPoolName'],
$query);
}
/**
* タイマーリストを取得
*
* @param array $request
* * timerPoolName => タイマープール名
* @param string $pageToken ページトークン
* @param integer $limit 取得件数
* @return array
* * items
* * array
* * timerId => タイマーID
* * timerPoolId => タイマープールID
* * ownerId => オーナーID
* * callbackMethod => HTTPメソッド
* * callbackUrl => コールバックURL
* * callbackBody => コールバックボディ
* * executeTime => 実行時間
* * retryMax => 最大リトライ回数
* * createAt => 作成日時
* * nextPageToken => 次ページトークン
*/
public function describeTimer($request, $pageToken = NULL, $limit = NULL) {
if(is_null($request)) throw new NullPointerException();
if(!array_key_exists('timerPoolName', $request)) throw new NullPointerException();
if(is_null($request['timerPoolName'])) throw new NullPointerException();
$query = [];
if($pageToken) $query['pageToken'] = $pageToken;
if($limit) $query['limit'] = $limit;
return $this->doGet(
'Gs2Timer',
'DescribeTimer',
Gs2TimerClient::$ENDPOINT,
Gs2TimerClient::$VARIATION,
'/timerPool/'. $request['timerPoolName']. '/timer',
$query);
}
/**
* タイマーを作成<br>
* <br>
* タイマーを作成すると、指定した時刻に指定したURLに指定したパラメータを持ったアクセスを発生させます。<br>
* 基本的には指定した時刻以降に60秒以内に呼び出し処理が開始されます。<br>
* 混雑時には60秒以上かかることがありますので、タイミングがシビアな処理には向きません。<br>
* <br>
* アカウントBANを指定した時刻付近で解除する。など、タイミングがシビアでない処理で利用することをおすすめします。<br>
*
* @param array $request
* * callbackMethod => HTTPメソッド
* * callbackUrl => コールバックURL
* * callbackBody => コールバックボディ
* * executeTime => 実行時間
* * retryMax => 最大リトライ回数(OPTIONAL)
* @return array
* * item
* * timerId => タイマーID
* * timerPoolId => タイマープールID
* * ownerId => オーナーID
* * callbackMethod => HTTPメソッド
* * callbackUrl => コールバックURL
* * callbackBody => コールバックボディ
* * executeTime => 実行時間
* * retryMax => 最大リトライ回数
* * createAt => 作成日時
*/
public function createTimer($request) {
if(is_null($request)) throw new NullPointerException();
if(!array_key_exists('timerPoolName', $request)) throw new NullPointerException();
if(is_null($request['timerPoolName'])) throw new NullPointerException();
$body = [];
if(array_key_exists('callbackMethod', $request)) $body['callbackMethod'] = $request['callbackMethod'];
if(array_key_exists('callbackUrl', $request)) $body['callbackUrl'] = $request['callbackUrl'];
if(array_key_exists('executeTime', $request)) $body['executeTime'] = $request['executeTime'];
if(array_key_exists('retryMax', $request)) $body['retryMax'] = $request['retryMax'];
$query = [];
return $this->doPost(
'Gs2Timer',
'CreateTimer',
Gs2TimerClient::$ENDPOINT,
Gs2TimerClient::$VARIATION,
'/timerPool/'. $request['timerPoolName']. '/timer',
$body,
$query);
}
/**
* タイマーを取得
*
* @param array $request
* * timerPoolName => タイマープール名
* * timerId => タイマーID
* @return array
* * item
* * timerId => タイマーID
* * timerPoolId => タイマープールID
* * ownerId => オーナーID
* * callbackMethod => HTTPメソッド
* * callbackUrl => コールバックURL
* * callbackBody => コールバックボディ
* * executeTime => 実行時間
* * retryMax => 最大リトライ回数
* * createAt => 作成日時
*/
public function getTimer($request) {
if(is_null($request)) throw new NullPointerException();
if(!array_key_exists('timerPoolName', $request)) throw new NullPointerException();
if(is_null($request['timerPoolName'])) throw new NullPointerException();
if(!array_key_exists('timerId', $request)) throw new NullPointerException();
if(is_null($request['timerId'])) throw new NullPointerException();
$query = [];
return $this->doGet(
'Gs2Timer',
'GetTimer',
Gs2TimerClient::$ENDPOINT,
Gs2TimerClient::$VARIATION,
'/timerPool/'. $request['timerPoolName']. '/timer/'. $request['timerId'],
$query);
}
/**
* タイマーを削除
*
* @param array $request
* * timerPoolName => タイマープール名
* * timerId => タイマーID
*/
public function deleteTimer($request) {
if(is_null($request)) throw new NullPointerException();
if(!array_key_exists('timerPoolName', $request)) throw new NullPointerException();
if(is_null($request['timerPoolName'])) throw new NullPointerException();
if(!array_key_exists('timerId', $request)) throw new NullPointerException();
if(is_null($request['timerId'])) throw new NullPointerException();
$query = [];
return $this->doDelete(
'Gs2Timer',
'DeleteTimer',
Gs2TimerClient::$ENDPOINT,
Gs2TimerClient::$VARIATION,
'/timerPool/'. $request['timerPoolName']. '/timer/'. $request['timerId'],
$query);
}
}