From f45b34f33db930ee4f546914da351d0f9d565a66 Mon Sep 17 00:00:00 2001 From: sc0Vu Date: Sun, 21 Jan 2018 16:37:17 +0800 Subject: [PATCH] Number formatter. --- src/Formatters/NumberFormatter.php | 34 ++++++++++++++++++++++++++ src/Methods/EthMethod.php | 26 ++++++++++---------- src/Methods/Personal/UnlockAccount.php | 4 +-- 3 files changed, 49 insertions(+), 15 deletions(-) create mode 100644 src/Formatters/NumberFormatter.php diff --git a/src/Formatters/NumberFormatter.php b/src/Formatters/NumberFormatter.php new file mode 100644 index 0000000..45fd6de --- /dev/null +++ b/src/Formatters/NumberFormatter.php @@ -0,0 +1,34 @@ + + * + * @author Peter Lai + * @license MIT + */ + +namespace Web3\Formatters; + +use InvalidArgumentException; +use Web3\Utils; +use Web3\Formatters\IFormatter; + +class NumberFormatter implements IFormatter +{ + /** + * format + * + * @param mixed $value + * @return int + */ + public static function format($value) + { + $value = Utils::toString($value); + $bn = Utils::toBn($value); + $int = (int) $bn->toString(); + + return $int; + } +} \ No newline at end of file diff --git a/src/Methods/EthMethod.php b/src/Methods/EthMethod.php index f6621f1..593b381 100644 --- a/src/Methods/EthMethod.php +++ b/src/Methods/EthMethod.php @@ -147,22 +147,22 @@ class EthMethod extends JSONRPC implements IMethod if (!is_array($rules)) { throw new InvalidArgumentException('Please use array rules when call transform.'); } - if (count($params) < count($rules)) { - if (!isset($this->defaultValues) || empty($this->defaultValues)) { - throw new \InvalidArgumentException('The params are less than inputFormatters.'); - } - $defaultValues = $this->defaultValues; + // $defaultValues = $this->defaultValues; - foreach ($defaultValues as $key => $value) { - if (!isset($params[$key])) { - $params[$key] = $value; - } - - } - } foreach ($params as $key => $param) { if (isset($rules[$key])) { - $params[$key] = call_user_func([$rules[$key], 'format'], $param); + $formatted = call_user_func([$rules[$key], 'format'], $param); + + // if (is_int($formatted)) { + // if ($formatted >= 0) { + // $params[$key] = $formatted; + // } elseif (isset($defaultValues[$key])) { + // $params[$key] = $defaultValues[$key]; + // } + // } else { + // $params[$key] = $formatted; + // } + $params[$key] = $formatted; } } return $params; diff --git a/src/Methods/Personal/UnlockAccount.php b/src/Methods/Personal/UnlockAccount.php index 0e2155d..a28143b 100644 --- a/src/Methods/Personal/UnlockAccount.php +++ b/src/Methods/Personal/UnlockAccount.php @@ -18,7 +18,7 @@ use Web3\Validators\StringValidator; use Web3\Validators\QuantityValidator; use Web3\Formatters\AddressFormatter; use Web3\Formatters\StringFormatter; -use Web3\Formatters\QuantityFormatter; +use Web3\Formatters\NumberFormatter; class UnlockAccount extends EthMethod { @@ -37,7 +37,7 @@ class UnlockAccount extends EthMethod * @var array */ protected $inputFormatters = [ - AddressFormatter::class, StringFormatter::class, QuantityFormatter::class + AddressFormatter::class, StringFormatter::class, NumberFormatter::class ]; /**