ethereum-web-token
Version:
EWT bundles Ethereum function-calls into [JWT](https://jwt.io/)-like tokens. It simplifies the use of ECDSA signatures for webapps and the development of [Smart Oracles](https://github.com/codius/codius/wiki/Smart-Oracles:-A-Simple,-Powerful-Approach-to-S
55 lines (42 loc) • 2.66 kB
JavaScript
;Object.defineProperty(exports, "__esModule", { value: true });var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);var _createClass2 = require('babel-runtime/helpers/createClass');var _createClass3 = _interopRequireDefault(_createClass2);var _pad = require('../util/pad');
var _mediate = require('./mediate');var _mediate2 = _interopRequireDefault(_mediate);
var _token = require('../token/token');var _token2 = _interopRequireDefault(_token);
var _types = require('../util/types');function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}var
Encoder = function () {function Encoder() {(0, _classCallCheck3.default)(this, Encoder);}(0, _createClass3.default)(Encoder, null, [{ key: 'encode', value: function encode(
tokens) {
if (!(0, _types.isArray)(tokens)) {
throw new Error('tokens should be array of Token');
}
var mediates = tokens.map(function (token) {return Encoder.encodeToken(token);});
var inits = mediates.
map(function (mediate, idx) {return mediate.init(_mediate2.default.offsetFor(mediates, idx));}).
join('');
var closings = mediates.
map(function (mediate, idx) {return mediate.closing(_mediate2.default.offsetFor(mediates, idx));}).
join('');
return '' + inits + closings;
} }, { key: 'encodeToken', value: function encodeToken(
token) {
if (!(0, _types.isInstanceOf)(token, _token2.default)) {
throw new Error('token should be instanceof Token');
}
switch (token.type) {
case 'address':
return new _mediate2.default('raw', (0, _pad.padAddress)(token.value));
case 'int':
case 'uint':
return new _mediate2.default('raw', (0, _pad.padU32)(token.value));
case 'bool':
return new _mediate2.default('raw', (0, _pad.padBool)(token.value));
case 'fixedBytes':
return new _mediate2.default('raw', (0, _pad.padFixedBytes)(token.value));
case 'bytes':
return new _mediate2.default('prefixed', (0, _pad.padBytes)(token.value));
case 'string':
return new _mediate2.default('prefixed', (0, _pad.padString)(token.value));
case 'fixedArray':
case 'array':
return new _mediate2.default(token.type, token.value.map(function (token) {return Encoder.encodeToken(token);}));
default:
throw new Error('Invalid token type ' + token.type + ' in encodeToken');}
} }]);return Encoder;}();exports.default = Encoder;module.exports = exports['default'];