UNPKG

divvy-rest

Version:

A RESTful API for submitting payments and monitoring accounts on the Divvy network.

381 lines (373 loc) 27.7 kB
var RL = require('divvy-lib') var SerializedObject = RL.SerializedObject; var accounts = {} var state = {}; accounts.genesis = { address: 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh', secret: 'snoPBrXtMeMyMHUVTgbuqAfg1SUTb' } accounts.alice = { address : 'rJRLoJSErtNRFnbCyHEUYnRUKNwkVYDM7U', secret : 'shtfQyMwYqppw6A3hcyhzwLxYaqgE' } accounts.bob = { address : 'rwmityd4Ss34DBUsRy7Pacv6UA5n7yjfe5', secret : 'sh1TryzqJSfEyvKke6jtzhfcjbTDj' } accounts.carol = { address : 'r3YHFNkQRJDPc9aCkRojPLwKVwok3ihgBJ', secret : 'ssW6HG7i5Qzz3ienBDwujEW8fzSDq' } accounts.dan = { address : 'rsE6ZLDkXhSvfJHvSqFPhdazsoMgCEC52V', secret : 'snByi24KpxSZKE3ECm3NiGxfPuTgf' } exports.accounts = accounts var submit = function(data,ws) { var so = new RL.SerializedObject(data.tx_blob).to_json(); switch (so.Account) { case accounts.genesis.address : if (so.Destination == accounts.alice.address) { ws.send(JSON.stringify({ id: data.id, result: { engine_result: 'tesSUCCESS', engine_result_code: 0, engine_result_message: 'The transaction was applied.', tx_blob: '12000022000000002400000001201B0086590E61400000001992054068400000000000000C73210330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD0207446304402206A14028E66CD2D55D32DF83D3CD507D4ED16818BF88238FA578E54F0CE731B8302202E77B1E3F9856E1B0DB7BD43DA9DD8D4FDCB144C48025D6C0B1BE40C5CB81E3C8114B5F762798A53D543A014CAF8B297CFF8F2F937E88314BF14A5EF6814B074833FDDBA3B2235812EF55ABF', tx_json: { Account: 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh', Amount: '429000000', Destination: 'rJRLoJSErtNRFnbCyHEUYnRUKNwkVYDM7U', Fee: '12', Flags: 0, LastLedgerSequence: 8804622, Sequence: 1, SigningPubKey: '0330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD020', TransactionType: 'Payment', TxnSignature: '304402206A14028E66CD2D55D32DF83D3CD507D4ED16818BF88238FA578E54F0CE731B8302202E77B1E3F9856E1B0DB7BD43DA9DD8D4FDCB144C48025D6C0B1BE40C5CB81E3C', hash: 'AA067B86C98192D21A8B52235AD4DB7DFB0951E29189ABCF59FF124E649694F5' } }, status: 'success', type: 'response' } )) } else if (so.Destination == accounts.carol.address) { ws.send(JSON.stringify({"id":data.id,"result":{"engine_result":"tesSUCCESS","engine_result_code":0,"engine_result_message":"The transaction was applied.","tx_blob":"12000022000000002400000001201B0000000A614000000017D7840068400000000000000C73210330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD02074473045022100C227AB82343CEF295895196EC338F82737CDFFC74850F7104F8D4AD05275F0B402207D506E4A3268A53E18E0FD8D9621475C2167BFF07A85DBC383617759206957C78114B5F762798A53D543A014CAF8B297CFF8F2F937E8831452B3CFB038A0B6AA332C370EEA8D8251693B338F","tx_json":{"Account":"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh","Amount":"400000000","Destination":"r3YHFNkQRJDPc9aCkRojPLwKVwok3ihgBJ","Fee":"12","Flags":0,"LastLedgerSequence":10,"Sequence":1,"SigningPubKey":"0330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD020","TransactionType":"Payment","TxnSignature":"3045022100C227AB82343CEF295895196EC338F82737CDFFC74850F7104F8D4AD05275F0B402207D506E4A3268A53E18E0FD8D9621475C2167BFF07A85DBC383617759206957C7","hash":"B5E010D3C54349C80F18F5CA6CF8088B928886193ADFF6A22E3319FCB1803728"}},"status":"success","type":"response"})) } else if (so.Destination == accounts.dan.address) { if (so.Amount == '600000000') { ws.send(JSON.stringify( {"id":data.id,"result":{"engine_result":"tesSUCCESS","engine_result_code":0,"engine_result_message":"The transaction was applied.","tx_blob":"12000022000000002400000002201B0000000A614000000023C3460068400000000000000C73210330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD02074473045022100FF281B1848764810356368094C697D202E8F3AAB91AF161D8826ECB9D18D279B02204CBBA1D3C4E3BC546643E87DCF122CA2A1B68BFA0176A9A8D0FA8578CBB0C09B8114B5F762798A53D543A014CAF8B297CFF8F2F937E8831418B7EE40D089C5BE012671282295F879804A9AB6","tx_json":{"Account":"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh","Amount":"600000000","Destination":"rsE6ZLDkXhSvfJHvSqFPhdazsoMgCEC52V","Fee":"12","Flags":0,"LastLedgerSequence":10,"Sequence":2,"SigningPubKey":"0330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD020","TransactionType":"Payment","TxnSignature":"3045022100FF281B1848764810356368094C697D202E8F3AAB91AF161D8826ECB9D18D279B02204CBBA1D3C4E3BC546643E87DCF122CA2A1B68BFA0176A9A8D0FA8578CBB0C09B","hash":"D1CCC940E1DC1E32B4DEDCE5C693C13C70F31BC72463EEA9712A32C277A92E22"}},"status":"success","type":"response"})) } else if (so.Amount.currency == 'USD') { ws.send(JSON.stringify({"id":data.id,"result":{"engine_result":"tecPATH_DRY","engine_result_code":128,"engine_result_message":"Path could not send partial amount.","tx_blob":"12000022000000002400000003201B0000000A61D51550F7DCA70000000000000000000000000000555344000000000018B7EE40D089C5BE012671282295F879804A9AB668400000000000000C73210330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD02074473045022100F3FF238E0EE7060753A9ABBD38FA44F76BEBC8EE9EB73B06A08D0CDFB0DFC68F022030E10959CE5922092493B1D4A66A9445B3FB9A591768976BFF99A55E90A478268114B5F762798A53D543A014CAF8B297CFF8F2F937E8831418B7EE40D089C5BE012671282295F879804A9AB6","tx_json":{"Account":"rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh","Amount":{"currency":"USD","issuer":"rsE6ZLDkXhSvfJHvSqFPhdazsoMgCEC52V","value":"600"},"Destination":"rsE6ZLDkXhSvfJHvSqFPhdazsoMgCEC52V","Fee":"12","Flags":0,"LastLedgerSequence":10,"Sequence":3,"SigningPubKey":"0330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD020","TransactionType":"Payment","TxnSignature":"3045022100F3FF238E0EE7060753A9ABBD38FA44F76BEBC8EE9EB73B06A08D0CDFB0DFC68F022030E10959CE5922092493B1D4A66A9445B3FB9A591768976BFF99A55E90A47826","hash":"68FFEDCE1A2DFC4D338CA74EE0C0E039CD241C7CC65A88509AD152FFE860EF79"}},"status":"success","type":"response"})) } } case accounts.alice.address : if (so.Destination == accounts.bob.address) { if (so.Amount == '1') { ws.send(JSON.stringify({"id":data.id, "result":{"engine_result":"tecNO_DST_INSUF_XDV","engine_result_code":125,"engine_result_message":"Destination does not exist. Too little XDV sent to create it.","tx_blob":"12000022000000002400000001201B0000000A61400000000000000168400000000000000C7321022E3308DCB75B17BEF734CE342AC40FF7FDF55E3FEA3593EE8301A70C532BB5BB7446304402206DC3B71D92905AD48CB360D749A59B21C40C61ACD8588CF6265F04FDB97A318202206AE57409DA90B873DA430B78F023BD8F610365823C1C71E344FDC931F44D00AE8114BF14A5EF6814B074833FDDBA3B2235812EF55ABF83146B3515E84CB5F28032F968FCBD58B694B33E1C69","tx_json":{"Account":"rJRLoJSErtNRFnbCyHEUYnRUKNwkVYDM7U","Amount":"1","Destination":"rwmityd4Ss34DBUsRy7Pacv6UA5n7yjfe5","Fee":"12","Flags":0,"LastLedgerSequence":10,"Sequence":1,"SigningPubKey":"022E3308DCB75B17BEF734CE342AC40FF7FDF55E3FEA3593EE8301A70C532BB5BB","TransactionType":"Payment","TxnSignature":"304402206DC3B71D92905AD48CB360D749A59B21C40C61ACD8588CF6265F04FDB97A318202206AE57409DA90B873DA430B78F023BD8F610365823C1C71E344FDC931F44D00AE","hash":"2F56D7997CF9BC90005EFA5A4DE83384DDAD9146644D26FBBCBC2D6C9FC212F9"}},"status":"success","type":"response" })) } else if ((so.Amount == '20000000') || (so.Amount == '200000000')) { // this is the server_info's minimum drop XDV reserve to create an account // which is 10x higher in standalone than in regular ws.send(JSON.stringify({"id":data.id,"result":{"engine_result":"tesSUCCESS","engine_result_code":0,"engine_result_message":"The transaction was applied.","tx_blob":"12000022000000002400000002201B0000000A61400000000BEBC20068400000000000000C7321022E3308DCB75B17BEF734CE342AC40FF7FDF55E3FEA3593EE8301A70C532BB5BB74473045022100980B5BB4905990AB40724033611B28E1CAA111BC14E2B5301E306A913ADCB95C02201BCEA8C5BC6DF9A1262358F319BAC8184980A40263014FC4FBB80F6393DC4EFF8114BF14A5EF6814B074833FDDBA3B2235812EF55ABF83146B3515E84CB5F28032F968FCBD58B694B33E1C69","tx_json":{"Account":"rJRLoJSErtNRFnbCyHEUYnRUKNwkVYDM7U","Amount":"200000000","Destination":"rwmityd4Ss34DBUsRy7Pacv6UA5n7yjfe5","Fee":"12","Flags":0,"LastLedgerSequence":10,"Sequence":2,"SigningPubKey":"022E3308DCB75B17BEF734CE342AC40FF7FDF55E3FEA3593EE8301A70C532BB5BB","TransactionType":"Payment","TxnSignature":"3045022100980B5BB4905990AB40724033611B28E1CAA111BC14E2B5301E306A913ADCB95C02201BCEA8C5BC6DF9A1262358F319BAC8184980A40263014FC4FBB80F6393DC4EFF","hash":"F61422CBCBBEBD131DA92D8A78917BE082DB5874CCB7BA451995BBDC417A5011"}},"status":"success","type":"response"} )) } } break; case accounts.bob.address: if (so.TransactionType == 'TrustSet') { ws.send(JSON.stringify({"id":data.id,"result":{"engine_result":"tesSUCCESS","engine_result_code":0,"engine_result_message":"The transaction was applied.","tx_blob":"12001422800000002400000001201B0000000C63D4C38D7EA4C680000000000000000000000000005553440000000000BF14A5EF6814B074833FDDBA3B2235812EF55ABF68400000000000000C732103BC02F6C0F2C50EF5DB02C2C17062B7449B34FBD669A75362E41348C9FAE3DDE17446304402203622FB32D81BCA193EC797115349B8AEDEF70ADDA73E7C70C0EF61657DD3C0FB0220065A75C89BCE67138D3100C2EC814EAA96A09F3589B074DB7B618D77DE09839881146B3515E84CB5F28032F968FCBD58B694B33E1C69","tx_json":{"Account":"rwmityd4Ss34DBUsRy7Pacv6UA5n7yjfe5","Fee":"12","Flags":2147483648,"LastLedgerSequence":12,"LimitAmount":{"currency":"USD","issuer":"rJRLoJSErtNRFnbCyHEUYnRUKNwkVYDM7U","value":"10"},"Sequence":1,"SigningPubKey":"03BC02F6C0F2C50EF5DB02C2C17062B7449B34FBD669A75362E41348C9FAE3DDE1","TransactionType":"TrustSet","TxnSignature":"304402203622FB32D81BCA193EC797115349B8AEDEF70ADDA73E7C70C0EF61657DD3C0FB0220065A75C89BCE67138D3100C2EC814EAA96A09F3589B074DB7B618D77DE098398","hash":"6D734CEE0B1B2FA27E8446ACC31F6BF09DC7946C4F93619AC878F18D612AA4E2"}},"status":"success","type":"response"})) } break; case accounts.carol.address: if (so.Destination == accounts.dan.address) { ws.send(JSON.stringify( {"id":data.id,"result":{"engine_result":"tesSUCCESS","engine_result_code":0,"engine_result_message":"The transaction was applied.","tx_blob":"12000022000000002400000001201B0000000A61D4C38D7EA4C68000000000000000000000000000555344000000000052B3CFB038A0B6AA332C370EEA8D8251693B338F68400000000000000C7321034C421636E875492233E02FE281785988065E0E1A45E5EAFBBCE67DC92B17EC51744730450221008297F96D782519C59CD0D63AD44AA59C5C6B26851E204982AB5BA349F8F1BDE202206231BA78E7D3B3FEF122158BC1B4730D52CE1628E25B7F6CEFE4A873C281CCFA811452B3CFB038A0B6AA332C370EEA8D8251693B338F831418B7EE40D089C5BE012671282295F879804A9AB6","tx_json":{"Account":"r3YHFNkQRJDPc9aCkRojPLwKVwok3ihgBJ","Amount":{"currency":"USD","issuer":"r3YHFNkQRJDPc9aCkRojPLwKVwok3ihgBJ","value":"10"},"Destination":"rsE6ZLDkXhSvfJHvSqFPhdazsoMgCEC52V","Fee":"12","Flags":0,"LastLedgerSequence":10,"Sequence":1,"SigningPubKey":"034C421636E875492233E02FE281785988065E0E1A45E5EAFBBCE67DC92B17EC51","TransactionType":"Payment","TxnSignature":"30450221008297F96D782519C59CD0D63AD44AA59C5C6B26851E204982AB5BA349F8F1BDE202206231BA78E7D3B3FEF122158BC1B4730D52CE1628E25B7F6CEFE4A873C281CCFA","hash":"BB5A6A8F8AF5E13BDA911E53ACF9620B7DCE08C01CA0969FD80D5CAFE4486AAB"}},"status":"success","type":"response"})) } break; case accounts.dan.address: if (so.TransactionType == 'TrustSet') { if (state.dantrust == undefined) { state.dantrust = 0; } state.dantrust++ if (state.dantrust == 1) { ws.send(JSON.stringify({"id":data.id,"result":{"engine_result":"tesSUCCESS","engine_result_code":0,"engine_result_message":"The transaction was applied.","tx_blob":"12001422800000002400000001201B0000000C63D4C38D7EA4C68000000000000000000000000000555344000000000052B3CFB038A0B6AA332C370EEA8D8251693B338F68400000000000000C7321020E575151BC03EEEB5E6BA258CBD88F37DADAC0BF123267810A140036BA831FB07446304402200C605854C9453B26CDC8D04748033AF125AD843ED61ABE140CDF4CE3C7C9DC1E02205ADE214480EA1C836E7531921D51694CCBD7A62037C7E89415494BCDF8BCE0C6811418B7EE40D089C5BE012671282295F879804A9AB6","tx_json":{"Account":"rsE6ZLDkXhSvfJHvSqFPhdazsoMgCEC52V","Fee":"12","Flags":2147483648,"LastLedgerSequence":12,"LimitAmount":{"currency":"USD","issuer":"r3YHFNkQRJDPc9aCkRojPLwKVwok3ihgBJ","value":"10"},"Sequence":1,"SigningPubKey":"020E575151BC03EEEB5E6BA258CBD88F37DADAC0BF123267810A140036BA831FB0","TransactionType":"TrustSet","TxnSignature":"304402200C605854C9453B26CDC8D04748033AF125AD843ED61ABE140CDF4CE3C7C9DC1E02205ADE214480EA1C836E7531921D51694CCBD7A62037C7E89415494BCDF8BCE0C6","hash":"E5BD2DCA496B5AB0AE57BC797E735ED718F7192604C1E6634C2D6581673759A0"}},"status":"success","type":"response"})) } else if (state.dantrust == 2) { ws.send(JSON.stringify({"id":data.id,"result":{"engine_result":"tesSUCCESS","engine_result_code":0,"engine_result_message":"The transaction was applied.","tx_blob":"12001422800000002400000002201B0000000C63D4C38D7EA4C68000000000000000000000000000555344000000000052B3CFB038A0B6AA332C370EEA8D8251693B338F68400000000000000C7321020E575151BC03EEEB5E6BA258CBD88F37DADAC0BF123267810A140036BA831FB07446304402200E326C46A86CC775E7D3E460264B68684DC29CCE6D1976B7D2B2C95DC0B5B71D0220590E20A77962A7F79ECA46E35D8C2F10AAC4A3811D8A78813C8F42A13CD24678811418B7EE40D089C5BE012671282295F879804A9AB6","tx_json":{"Account":"rsE6ZLDkXhSvfJHvSqFPhdazsoMgCEC52V","Fee":"12","Flags":2147483648,"LastLedgerSequence":12,"LimitAmount":{"currency":"USD","issuer":"r3YHFNkQRJDPc9aCkRojPLwKVwok3ihgBJ","value":"10"},"Sequence":2,"SigningPubKey":"020E575151BC03EEEB5E6BA258CBD88F37DADAC0BF123267810A140036BA831FB0","TransactionType":"TrustSet","TxnSignature":"304402200E326C46A86CC775E7D3E460264B68684DC29CCE6D1976B7D2B2C95DC0B5B71D0220590E20A77962A7F79ECA46E35D8C2F10AAC4A3811D8A78813C8F42A13CD24678","hash":"693E267667048FE33B6A119312B3E668911D29870727F6F0C5B790D194C1FAB0"}},"status":"success","type":"response"})) } } break; default: break; } }; exports.submit = submit; var ping = function(data,ws) { ws.send(JSON.stringify({"id": data.id,"status": "success","type": "response","result": {}})) } exports.ping = ping; var subscribe = function(data,ws) { ws.send(JSON.stringify({"id":data.id,"result":{"fee_base":10,"fee_ref":10,"ledger_hash":"58DF7D83991774A9A833FEB6C0B20FD948EA78C192FBC75CD85CBDE270ECEBAF","ledger_index":2,"ledger_time":465072540,"load_base":256,"load_factor":256,"random":"3E87F583CAFBFCF9C418D2EB7FA5A94EE82840D2C6CE99BF4EEE411C877EC0A1","reserve_base":200000000,"reserve_inc":50000000,"server_status":"full","stand_alone":true,"validated_ledgers":"1-2"},"status":"success","type":"response"})) } exports.subscribe = subscribe; var response = function(data,ws) { if (data.accounts) { ws.send(JSON.stringify({ id: data.id, result: {}, status: 'success', type: 'response' })) } } exports.response = response; var server_info = function(data,ws) { ws.send(JSON.stringify({ "id": data.id, "status": "success", "type": "response", "result": { "info": { "build_version": "0.26.3-rc2", "complete_ledgers": "32570-8803979", "hostid": "KEY", "io_latency_ms": 1, "last_close": { "converge_time_s": 2.01, "proposers": 0 }, "load_factor": 1, "peers": 48, "pubkey_node": "n9KdXJvZ9YjuDTRLRYuS6isVeKv7C2sehxCnCtg3G6HY2fuvVG2K", "server_state": "syncing", "validated_ledger": { "age": 6, "base_fee_xdv": 0.00001, "hash": "8AA5B0329BB5A67CD53A5A31700F40D9AA44423DC4ACD598EB3BCBC6D425565D", "reserve_base_xdv": 20, "reserve_inc_xdv": 5, "seq": 8803979 }, "validation_quorum": 3 }}})); } exports.server_info = server_info; var divvy_path_find = function(data,ws) { switch (data.source_account) { case accounts.alice.address : if (data.destination_account == accounts.bob.address) { if (data.destination_amount == '1') { ws.send(JSON.stringify({ "id":data.id,"result":{"alternatives":[],"destination_account":"rwmityd4Ss34DBUsRy7Pacv6UA5n7yjfe5","destination_currencies":["XDV"],"ledger_current_index":3,"validated":false},"status":"success","type":"response" })); } else if (data.destination_amount == '20000000') { ws.send(JSON.stringify({ "id":data.id,"result":{"alternatives":[],"destination_account":"rwmityd4Ss34DBUsRy7Pacv6UA5n7yjfe5","destination_currencies":["XDV"],"ledger_current_index":3,"validated":false},"status":"success","type":"response" })); } else if (typeof data.destination_amount == 'object') { if (data.destination_amount.currency == 'USD') { if (state.usd === undefined) { // first time, return no path state.usd = 1; ws.send(JSON.stringify({"id":data.id,"result":{"alternatives":[],"destination_account":"rwmityd4Ss34DBUsRy7Pacv6UA5n7yjfe5","destination_currencies":["XDV"],"ledger_current_index":4,"validated":false},"status":"success","type":"response"})) } else { // second time, return path state.usd++; ws.send(JSON.stringify({"id":data.id,"result":{"alternatives":[{"paths_canonical":[],"paths_computed":[],"source_amount":{"currency":"USD","issuer":"rJRLoJSErtNRFnbCyHEUYnRUKNwkVYDM7U","value":"10"}}],"destination_account":"rwmityd4Ss34DBUsRy7Pacv6UA5n7yjfe5","destination_currencies":["USD","XDV"],"ledger_current_index":4,"validated":false},"status":"success","type":"response"})) } } } } break; case accounts.genesis.address : switch (data.destination_account) { case accounts.alice.address : ws.send(JSON.stringify( { id: 2, result: { alternatives: [], destination_account: 'rJRLoJSErtNRFnbCyHEUYnRUKNwkVYDM7U', destination_currencies: [ 'XDV' ] }, status: 'success', type: 'response' } )) break; case accounts.carol.address: ws.send(JSON.stringify({"id":data.id,"result":{"alternatives":[],"destination_account":"r3YHFNkQRJDPc9aCkRojPLwKVwok3ihgBJ","destination_currencies":["XDV"],"ledger_current_index":4,"validated":false},"status":"success","type":"response"})) break; case accounts.dan.address: ws.send(JSON.stringify({"id":data.id,"result":{"alternatives":[],"destination_account":"rsE6ZLDkXhSvfJHvSqFPhdazsoMgCEC52V","destination_currencies":["XDV"],"ledger_current_index":4,"validated":false},"status":"success","type":"response"})) break; default: break; } break; case accounts.bob.address : if (data.destination_account == accounts.alice.address) { ws.send(JSON.stringify({"id":data.id,"result":{"alternatives":[],"destination_account":"rJRLoJSErtNRFnbCyHEUYnRUKNwkVYDM7U","destination_currencies":["XDV"],"ledger_current_index":4,"validated":false},"status":"success","type":"response"} )) } break; case accounts.carol.address : if (data.destination_account == accounts.dan.address) { ws.send(JSON.stringify({"id":data.id,"result":{"alternatives":[{"paths_canonical":[],"paths_computed":[],"source_amount":{"currency":"USD","issuer":"r3YHFNkQRJDPc9aCkRojPLwKVwok3ihgBJ","value":"10"}}],"destination_account":"rsE6ZLDkXhSvfJHvSqFPhdazsoMgCEC52V","destination_currencies":["USD","XDV"],"ledger_current_index":4,"validated":false},"status":"success","type":"response"})) } default: break; } }; exports.divvy_path_find = divvy_path_find var account_info = function(data,ws) { switch (data.account) { case accounts.genesis.address : ws.send(JSON.stringify( { id: data.id, result: { account_data: { Account: 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh', Balance: '100000000000000000', Flags: 0, LedgerEntryType: 'AccountRoot', OwnerCount: 0, PreviousTxnID: '0000000000000000000000000000000000000000000000000000000000000000', PreviousTxnLgrSeq: 0, Sequence: 1, index: '2B6AC232AA4C4BE41BF49D2459FA4A0347E1B543A4C92FCEE0821C0201E2E9A8' }, ledger_current_index: 5, validated: false }, status: 'success', type: 'response' } )) break; case accounts.alice.address : ws.send(JSON.stringify({ id: data.id, result: { account_data: { Account: 'rJRLoJSErtNRFnbCyHEUYnRUKNwkVYDM7U', Balance: '429000000', Flags: 0, LedgerEntryType: 'AccountRoot', OwnerCount: 0, PreviousTxnID: '253B0DB944E0B05549BA169846FB55AC0667612BBBDF2EDC8E3F5BC296B13C00', PreviousTxnLgrSeq: 4, Sequence: 1, index: '553724E23F51CF8A45D50F77C884D6BFF0E212094DF8B66D37CA697D03168536' }, ledger_current_index: 4, validated: false }, status: 'success', type: 'response' })) break; case accounts.bob.address : ws.send(JSON.stringify({"id":data.id, "result":{"account_data":{"Account":"rwmityd4Ss34DBUsRy7Pacv6UA5n7yjfe5","Balance":"200000000","Flags":0,"LedgerEntryType":"AccountRoot","OwnerCount":0,"PreviousTxnID":"E05706F92475436BEA5570743331E2D62DBCECA2B9FA6F7FED39C8A85490EF68","PreviousTxnLgrSeq":4,"Sequence":1,"index":"F44A494EEF93D6AD5D257D7A23A075FF29FF142B0FC8DE68DA43F0F176D47A6E"},"ledger_current_index":4,"validated":false},"status":"success","type":"response" })) break; case accounts.carol.address: if (state.carolaccountinfo == undefined) state.carolaccountinfo = 0; state.carolaccountinfo++; if (state.carolaccountinfo == 1) { ws.send(JSON.stringify({"id":data.id,"result":{"account_data":{"Account":"r3YHFNkQRJDPc9aCkRojPLwKVwok3ihgBJ","Balance":"400000000","Flags":0,"LedgerEntryType":"AccountRoot","OwnerCount":0,"PreviousTxnID":"BA11014094AB9563200249DB5CF3E506F6A4A07EFBC75FDD5C31CDE26C6F4B7E","PreviousTxnLgrSeq":4,"Sequence":1,"index":"F0F3E450A8E548CBC9A6F1E05D4B2CCBFE0F945D46B813C5E59DCB0414EE09A5"},"ledger_current_index":4,"validated":false},"status":"success","type":"response"})) } break; case accounts.dan.address : ws.send(JSON.stringify({"id":data.id,"result":{"account_data":{"Account":"rsE6ZLDkXhSvfJHvSqFPhdazsoMgCEC52V","Balance":"600000000","Flags":0,"LedgerEntryType":"AccountRoot","OwnerCount":0,"PreviousTxnID":"6EF920AE9D528C8D72C5BAFCE527561FADEFB5241BF80266E14F39EB3D34E24C","PreviousTxnLgrSeq":4,"Sequence":1,"index":"34FF1FC6B0F1A856A4417DDA0CC13683BB2AF87B3BCA5CE2F10828E972029140"},"ledger_current_index":4,"validated":false},"status":"success","type":"response"})) break; default : break; } }; exports.account_info = account_info var account_lines = function(data,ws) { switch (data.account) { case accounts.alice.address : ws.send(JSON.stringify({ "id":data.id, "result":{ "account":"rJRLoJSErtNRFnbCyHEUYnRUKNwkVYDM7U","lines":[] }, "status":"success", "type":"response" })) break; case accounts.bob.address : ws.send(JSON.stringify({"id":data.id, "result":{"account":"rwmityd4Ss34DBUsRy7Pacv6UA5n7yjfe5","lines":[]},"status":"success","type":"response" })) break; default: break; } }; exports.account_lines = account_lines; exports.sample_ledger = JSON.stringify({ "type": "ledgerClosed", "fee_base": 10, "fee_ref": 10, "ledger_hash": "5CE11F88A44F7DA9D2E092719CEC7920BCE6128428F4549B8F51299648A9511C", "ledger_index": 8804615, "ledger_time": 463710700, "reserve_base": 20000000, "reserve_inc": 5000000, "txn_count": 17, "validated_ledgers": "32570-8804615" }); var connection = function(ws) { ws.send(JSON.stringify({ id: 0, status: 'success', type: 'response', result: { fee_base: 10, fee_ref: 10, ledger_hash: '1838539EE12463C36F2C53B079D807C697E3D93A1936B717E565A4A912E11776', ledger_index: 7053695, ledger_time: 455414390, load_base: 256, load_factor: 256, random: 'E56C9154D9BE94D49C581179356C2E084E16D18D74E8B09093F2D61207625E6A', reserve_base: 20000000, reserve_inc: 5000000, server_status: 'full', validated_ledgers: '32570-7053695' } })); var onmessage = function(message) { var data = JSON.parse(message) if (data.command) { this.route.emit(data.command, data,ws) } } ws.on('message', onmessage.bind(this)); } exports.connection = connection; exports.clearInterval = function() { // clearInterval(timerid) } exports.nominal_xdv_post_response = { "success": true, "client_resource_id": "f2f811b7-dc3b-4078-a2c2-e4ca9e453981", "status_url": ".../v1/accounts/r1.../payments/f2f811b7-dc3b-4078-a2c2-e4ca9e453981" } var tx = function(data,ws) { ws.send(JSON.stringify( { id: data.id, result: { tx: SerializedObject.from_json({ Account: "rJRLoJSErtNRFnbCyHEUYnRUKNwkVYDM7U", Amount: "200000000", Destination: "rwmityd4Ss34DBUsRy7Pacv6UA5n7yjfe5", Fee: "12", Flags: 0, LastLedgerSequence: 10, Sequence: 2, SigningPubKey: "022E3308DCB75B17BEF734CE342AC40FF7FDF55E3FEA3593EE8301A70C532BB5BB", TransactionType: "Payment", TxnSignature: "3044022030A2F33C088F07CC86A87B8E82EFC95E1CE1D525A16EF2DC059485EB54D946BB022009482C8F4F14BC4E2E7FF188C95DB47EA84533BF9E1114C28E7997B1B439C46A", }).to_hex(), hash:"8EA3CF4D854669007058EB45E9860611CC24FEB655895E418A5C8BC5EA901D01" }, status: "success", type: "response" } )) } exports.tx = tx;