From 7395221f1284b24ca6e8f086270cd5383c411d84 Mon Sep 17 00:00:00 2001 From: ZuluCrypto Date: Sat, 22 Sep 2018 13:03:52 -0600 Subject: [PATCH] Support for BumpSequenceOperation and result --- examples/bump-sequence.php | 24 +++++++++++++++ src/Model/BumpSequenceOperation.php | 48 +++++++++++++++++++++++++++++ src/Model/Operation.php | 6 ++++ src/XdrModel/BumpSequenceResult.php | 41 ++++++++++++++++++++++++ src/XdrModel/OperationResult.php | 3 ++ 5 files changed, 122 insertions(+) create mode 100644 examples/bump-sequence.php create mode 100644 src/Model/BumpSequenceOperation.php create mode 100644 src/XdrModel/BumpSequenceResult.php diff --git a/examples/bump-sequence.php b/examples/bump-sequence.php new file mode 100644 index 0000000..93c4639 --- /dev/null +++ b/examples/bump-sequence.php @@ -0,0 +1,24 @@ +buildTransaction($currentAccount->getPublicKey()) + ->bumpSequenceTo(new BigInteger('47061756253569030')) + ->submit($currentAccount->getSecret()); \ No newline at end of file diff --git a/src/Model/BumpSequenceOperation.php b/src/Model/BumpSequenceOperation.php new file mode 100644 index 0000000..8b68e5a --- /dev/null +++ b/src/Model/BumpSequenceOperation.php @@ -0,0 +1,48 @@ +loadFromRawResponseData($rawData); + + return $object; + } + + /** + * @param $id + * @param $type + */ + public function __construct($id, $type) + { + parent::__construct($id, Operation::TYPE_BUMP_SEQUENCE); + } + + /** + * @param $rawData + */ + public function loadFromRawResponseData($rawData) + { + parent::loadFromRawResponseData($rawData); + + $this->bumpTo = new BigInteger($rawData['bump_to']); + } +} \ No newline at end of file diff --git a/src/Model/Operation.php b/src/Model/Operation.php index d013d6c..8ea37e0 100644 --- a/src/Model/Operation.php +++ b/src/Model/Operation.php @@ -3,6 +3,8 @@ namespace ZuluCrypto\StellarSdk\Model; +use ZuluCrypto\StellarSdk\XdrModel\Operation\BumpSequenceOp; + /** * See: https://www.stellar.org/developers/horizon/reference/resources/operation.html @@ -20,6 +22,7 @@ class Operation extends RestApiModel const TYPE_ACCOUNT_MERGE = 'account_merge'; const TYPE_INFLATION = 'inflation'; const TYPE_MANAGE_DATA = 'manage_data'; + const TYPE_BUMP_SEQUENCE = 'bump_sequence'; /** * Operation ID on the Stellar network @@ -83,6 +86,9 @@ public static function fromRawResponseData($rawData) case Operation::TYPE_INFLATION: $object = new InflationOperation($rawData['id'], $rawData['type']); break; + case Operation::TYPE_BUMP_SEQUENCE: + $object = new BumpSequenceOp($rawData['id'], $rawData['type']); + break; } $object->loadFromRawResponseData($rawData); diff --git a/src/XdrModel/BumpSequenceResult.php b/src/XdrModel/BumpSequenceResult.php new file mode 100644 index 0000000..ab562f1 --- /dev/null +++ b/src/XdrModel/BumpSequenceResult.php @@ -0,0 +1,41 @@ +readInteger(); + $errorCodeMap = [ + '0' => 'success', + '-1' => static::BAD_SEQ, + ]; + if (!isset($errorCodeMap[$rawErrorCode])) { + throw new \ErrorException(sprintf('Unknown error code %s', $rawErrorCode)); + } + + // Do not store the "success" error code + if ($errorCodeMap[$rawErrorCode] !== 'success') { + $model->errorCode = $errorCodeMap[$rawErrorCode]; + } + + return $model; + } +} \ No newline at end of file diff --git a/src/XdrModel/OperationResult.php b/src/XdrModel/OperationResult.php index b6018fa..e519a03 100644 --- a/src/XdrModel/OperationResult.php +++ b/src/XdrModel/OperationResult.php @@ -75,6 +75,9 @@ public static function fromXdr(XdrBuffer $xdr) case Operation::TYPE_MANAGE_DATA: return ManageDataResult::fromXdr($xdr); break; + case Operation::TYPE_BUMP_SEQUENCE: + return BumpSequenceResult::fromXdr($xdr); + break; default: throw new \ErrorException(sprintf('Unknown operation type: %s', $opType)); }