mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-21 20:25:51 +00:00
rippleapi_quickstart - cleanup
This commit is contained in:
@@ -5,29 +5,34 @@ env:
|
||||
amd: false
|
||||
mocha: true
|
||||
jasmine: false
|
||||
es6: true
|
||||
rules:
|
||||
no-alert: 2
|
||||
no-array-constructor: 2
|
||||
no-arrow-condition: 0
|
||||
no-bitwise: 0
|
||||
no-caller: 2
|
||||
no-case-declarations: 2
|
||||
no-catch-shadow: 2
|
||||
comma-dangle: 2
|
||||
no-class-assign: 2
|
||||
no-cond-assign: [2, 'always']
|
||||
no-console: 0
|
||||
no-const-assign: 2
|
||||
no-constant-condition: 2
|
||||
no-continue: 0
|
||||
no-control-regex: 2
|
||||
no-debugger: 2
|
||||
no-delete-var: 2
|
||||
no-div-regex: 0
|
||||
no-dupe-class-members: 2
|
||||
no-dupe-keys: 2
|
||||
no-dupe-args: 2
|
||||
no-duplicate-case: 2
|
||||
no-else-return: 2
|
||||
no-else-return: 0
|
||||
no-empty: 2
|
||||
no-empty-character-class: 2
|
||||
no-empty-label: 2
|
||||
no-empty-pattern: 2
|
||||
no-eq-null: 2
|
||||
no-eval: 2
|
||||
no-ex-assign: 2
|
||||
@@ -44,6 +49,7 @@ rules:
|
||||
no-inline-comments: 0
|
||||
no-inner-declarations: [2, 'functions']
|
||||
no-invalid-regexp: 2
|
||||
no-invalid-this: 0 # this rule would cause problems with mocha test cases
|
||||
no-irregular-whitespace: 2
|
||||
no-iterator: 2
|
||||
no-label-var: 2
|
||||
@@ -53,10 +59,12 @@ rules:
|
||||
no-loop-func: 2
|
||||
no-mixed-requires: [0, false]
|
||||
no-mixed-spaces-and-tabs: [2, false]
|
||||
linebreak-style: [2, 'unix']
|
||||
no-multi-spaces: 2
|
||||
no-multi-str: 2
|
||||
no-multiple-empty-lines: [2, {max: 2}]
|
||||
no-native-reassign: 2
|
||||
no-negated-condition: 0
|
||||
no-negated-in-lhs: 2
|
||||
no-nested-ternary: 0
|
||||
no-new: 2
|
||||
@@ -76,71 +84,106 @@ rules:
|
||||
no-redeclare: 2
|
||||
no-regex-spaces: 2
|
||||
no-restricted-modules: 0
|
||||
no-restricted-syntax: 0
|
||||
no-return-assign: 2
|
||||
no-script-url: 2
|
||||
no-self-compare: 2
|
||||
no-sequences: 2
|
||||
no-shadow: 2
|
||||
no-shadow-restricted-names: 2
|
||||
semi-spacing: 2
|
||||
no-spaced-func: 2
|
||||
no-sparse-arrays: 2
|
||||
no-sync: 0
|
||||
no-ternary: 0
|
||||
no-trailing-spaces: 2
|
||||
no-this-before-super: 2
|
||||
no-throw-literal: 2
|
||||
no-undef: 2
|
||||
no-undef-init: 2
|
||||
no-undefined: 0
|
||||
no-unexpected-multiline: 2
|
||||
no-underscore-dangle: 0
|
||||
no-unneeded-ternary: 0
|
||||
no-unreachable: 2
|
||||
no-unused-expressions: 2
|
||||
no-unused-vars: [2, {vars: 'all', args: 'all'}]
|
||||
no-use-before-define: 2
|
||||
no-useless-call: 2
|
||||
no-useless-concat: 0
|
||||
no-void: 2
|
||||
no-var: 2
|
||||
prefer-const: 2
|
||||
no-warning-comments: [0, {terms: ['todo', 'fixme', 'xxx'], location: 'start'}]
|
||||
no-with: 2
|
||||
no-magic-numbers: 0
|
||||
|
||||
array-bracket-spacing: [2, 'never']
|
||||
arrow-body-style: 0
|
||||
arrow-parens: [2, 'as-needed']
|
||||
arrow-spacing: 2
|
||||
accessor-pairs: 2
|
||||
block-scoped-var: 2
|
||||
block-spacing: 2
|
||||
brace-style: 2
|
||||
callback-return: 0
|
||||
camelcase: 0
|
||||
comma-dangle: 2
|
||||
comma-spacing: 2
|
||||
comma-style: 2
|
||||
complexity: [0, 11]
|
||||
computed-property-spacing: 2
|
||||
consistent-return: 2
|
||||
consistent-this: [2, 'self']
|
||||
constructor-super: 2
|
||||
curly: [2, 'all']
|
||||
default-case: 0
|
||||
dot-location: [2, 'property']
|
||||
dot-notation: [2, {allowKeywords: true}]
|
||||
eol-last: 2
|
||||
eqeqeq: 2
|
||||
func-names: 0
|
||||
func-style: [2, 'declaration']
|
||||
generator-star: 0
|
||||
generator-star-spacing: 2
|
||||
global-require: 0
|
||||
guard-for-in: 0
|
||||
handle-callback-err: 2
|
||||
id-length: 0
|
||||
indent: [2, 2, {SwitchCase: 1}]
|
||||
init-declarations: 0
|
||||
jsx-quotes: 0
|
||||
key-spacing: [2, {beforeColon: false, afterColon: true}]
|
||||
max-depth: [1, 4]
|
||||
lines-around-comment: 0
|
||||
max-depth: [0, 4]
|
||||
max-len: [2, 80]
|
||||
max-nested-callbacks: [1, 2]
|
||||
max-params: [1, 4]
|
||||
max-nested-callbacks: [0, 2]
|
||||
max-params: [0, 4]
|
||||
max-statements: [0, 10]
|
||||
new-cap: 2
|
||||
new-parens: 2
|
||||
newline-after-var: 0
|
||||
object-curly-spacing: [2, 'never']
|
||||
object-shorthand: 0
|
||||
one-var: [2, 'never']
|
||||
operator-assignment: [0, 'always']
|
||||
operator-linebreak: 0
|
||||
padded-blocks: 0
|
||||
prefer-arrow-callback: 0
|
||||
prefer-const: 2
|
||||
prefer-spread: 2
|
||||
prefer-reflect: 0
|
||||
prefer-template: 0
|
||||
quote-props: 0
|
||||
quotes: [2, 'single']
|
||||
radix: 2
|
||||
id-match: 0
|
||||
require-jsdoc: 0
|
||||
require-yield: 0
|
||||
semi: 2
|
||||
semi-spacing: 2
|
||||
sort-vars: 0
|
||||
space-after-keywords: 2
|
||||
space-before-keywords: 2
|
||||
space-before-blocks: 2
|
||||
space-before-function-paren: [2, 'never']
|
||||
object-curly-spacing: [2, 'never']
|
||||
array-bracket-spacing: [2, 'never']
|
||||
space-in-parens: 2
|
||||
space-infix-ops: 2
|
||||
space-return-throw-case: 2
|
||||
@@ -155,27 +198,4 @@ rules:
|
||||
wrap-regex: 0
|
||||
yoda: [2, 'never']
|
||||
ecmaFeatures:
|
||||
arrowFunctions: true
|
||||
binaryLiterals: true
|
||||
blockBindings: true
|
||||
classes: true
|
||||
defaultParams: true
|
||||
destructuring: true
|
||||
forOf: true
|
||||
generators: true
|
||||
# not sure about the implications of globalReturn
|
||||
# globalReturn: true
|
||||
jsx: true
|
||||
objectLiteralComputedProperties: true
|
||||
objectLiteralShorthandMethods: true
|
||||
objectLiteralShorthandProperties: true
|
||||
# duplicate properties may be required but we are not
|
||||
# sure at this point
|
||||
# objectLiteralDuplicateProperties: true
|
||||
octalLiterals: true
|
||||
regexUFlag: true
|
||||
regexYFlag: true
|
||||
restParams: true
|
||||
spread: true
|
||||
templateStrings: true
|
||||
unicodeCodePointEscapes: true
|
||||
|
||||
@@ -5,24 +5,24 @@
|
||||
<script>
|
||||
console.log(ripple);
|
||||
var api = new ripple.RippleAPI({server:'wss://s1.ripple.com/'});
|
||||
api.connect().then(()=>{
|
||||
api.connect().then(function() {
|
||||
return api.getServerInfo();
|
||||
}).then(server_info=>{
|
||||
document.body.innerHTML += `<p>Connected to rippled server!</p>
|
||||
<table>
|
||||
<tr><th>Version</th>
|
||||
<td>${ server_info.buildVersion }</td></tr>
|
||||
<tr><th>Ledgers available</th>
|
||||
<td>${ server_info.completeLedgers }</td></tr>
|
||||
<tr><th>hostID</th>
|
||||
<td>${ server_info.hostID }</td></tr>
|
||||
<tr><th>Most Recent Validated Ledger Seq.</th>
|
||||
<td>${ server_info.validatedLedger.ledgerVersion }</td></tr>
|
||||
<tr><th>Most Recent Validated Ledger Hash</th>
|
||||
<td>${ server_info.validatedLedger.hash }</td></tr>
|
||||
<tr><th>Seconds since last ledger validated</th>
|
||||
<td>${ server_info.validatedLedger.age }</td></tr>
|
||||
</table>`;
|
||||
}).then(function(server_info) {
|
||||
document.body.innerHTML += "<p>Connected to rippled server!</p>" +
|
||||
" <table>" +
|
||||
" <tr><th>Version</th>" +
|
||||
" <td>" + server_info.buildVersion + "</td></tr>" +
|
||||
" <tr><th>Ledgers available</th>" +
|
||||
" <td>" + server_info.completeLedgers + "</td></tr>" +
|
||||
" <tr><th>hostID</th>" +
|
||||
" <td>" + server_info.hostID + "</td></tr>" +
|
||||
" <tr><th>Most Recent Validated Ledger Seq.</th>" +
|
||||
" <td>" + server_info.validatedLedger.ledgerVersion + "</td></tr>" +
|
||||
" <tr><th>Most Recent Validated Ledger Hash</th>" +
|
||||
" <td>" + server_info.validatedLedger.hash + "</td></tr>" +
|
||||
" <tr><th>Seconds since last ledger validated</th>" +
|
||||
" <td>" + server_info.validatedLedger.age + "</td></tr>" +
|
||||
" </table>";
|
||||
});
|
||||
</script>
|
||||
<style type="text/css">
|
||||
|
||||
@@ -5,29 +5,34 @@ env:
|
||||
amd: false
|
||||
mocha: true
|
||||
jasmine: false
|
||||
es6: true
|
||||
rules:
|
||||
no-alert: 2
|
||||
no-array-constructor: 2
|
||||
no-arrow-condition: 0
|
||||
no-bitwise: 0
|
||||
no-caller: 2
|
||||
no-case-declarations: 2
|
||||
no-catch-shadow: 2
|
||||
comma-dangle: 2
|
||||
no-class-assign: 2
|
||||
no-cond-assign: [2, 'always']
|
||||
no-console: 0
|
||||
no-const-assign: 2
|
||||
no-constant-condition: 2
|
||||
no-continue: 0
|
||||
no-control-regex: 2
|
||||
no-debugger: 2
|
||||
no-delete-var: 2
|
||||
no-div-regex: 0
|
||||
no-dupe-class-members: 2
|
||||
no-dupe-keys: 2
|
||||
no-dupe-args: 2
|
||||
no-duplicate-case: 2
|
||||
no-else-return: 2
|
||||
no-else-return: 0
|
||||
no-empty: 2
|
||||
no-empty-character-class: 2
|
||||
no-empty-label: 2
|
||||
no-empty-pattern: 2
|
||||
no-eq-null: 2
|
||||
no-eval: 2
|
||||
no-ex-assign: 2
|
||||
@@ -44,6 +49,7 @@ rules:
|
||||
no-inline-comments: 0
|
||||
no-inner-declarations: [2, 'functions']
|
||||
no-invalid-regexp: 2
|
||||
no-invalid-this: 0 # this rule would cause problems with mocha test cases
|
||||
no-irregular-whitespace: 2
|
||||
no-iterator: 2
|
||||
no-label-var: 2
|
||||
@@ -53,10 +59,12 @@ rules:
|
||||
no-loop-func: 2
|
||||
no-mixed-requires: [0, false]
|
||||
no-mixed-spaces-and-tabs: [2, false]
|
||||
linebreak-style: [2, 'unix']
|
||||
no-multi-spaces: 2
|
||||
no-multi-str: 2
|
||||
no-multiple-empty-lines: [2, {max: 2}]
|
||||
no-native-reassign: 2
|
||||
no-negated-condition: 0
|
||||
no-negated-in-lhs: 2
|
||||
no-nested-ternary: 0
|
||||
no-new: 2
|
||||
@@ -76,71 +84,106 @@ rules:
|
||||
no-redeclare: 2
|
||||
no-regex-spaces: 2
|
||||
no-restricted-modules: 0
|
||||
no-restricted-syntax: 0
|
||||
no-return-assign: 2
|
||||
no-script-url: 2
|
||||
no-self-compare: 2
|
||||
no-sequences: 2
|
||||
no-shadow: 2
|
||||
no-shadow-restricted-names: 2
|
||||
semi-spacing: 2
|
||||
no-spaced-func: 2
|
||||
no-sparse-arrays: 2
|
||||
no-sync: 0
|
||||
no-ternary: 0
|
||||
no-trailing-spaces: 2
|
||||
no-this-before-super: 2
|
||||
no-throw-literal: 2
|
||||
no-undef: 2
|
||||
no-undef-init: 2
|
||||
no-undefined: 0
|
||||
no-unexpected-multiline: 2
|
||||
no-underscore-dangle: 0
|
||||
no-unneeded-ternary: 0
|
||||
no-unreachable: 2
|
||||
no-unused-expressions: 2
|
||||
no-unused-vars: [2, {vars: 'all', args: 'all'}]
|
||||
no-use-before-define: 2
|
||||
no-useless-call: 2
|
||||
no-useless-concat: 0
|
||||
no-void: 2
|
||||
no-var: 2
|
||||
prefer-const: 2
|
||||
no-warning-comments: [0, {terms: ['todo', 'fixme', 'xxx'], location: 'start'}]
|
||||
no-with: 2
|
||||
no-magic-numbers: 0
|
||||
|
||||
array-bracket-spacing: [2, 'never']
|
||||
arrow-body-style: 0
|
||||
arrow-parens: [2, 'as-needed']
|
||||
arrow-spacing: 2
|
||||
accessor-pairs: 2
|
||||
block-scoped-var: 2
|
||||
block-spacing: 2
|
||||
brace-style: 2
|
||||
callback-return: 0
|
||||
camelcase: 0
|
||||
comma-dangle: 2
|
||||
comma-spacing: 2
|
||||
comma-style: 2
|
||||
complexity: [0, 11]
|
||||
computed-property-spacing: 2
|
||||
consistent-return: 2
|
||||
consistent-this: [2, 'self']
|
||||
constructor-super: 2
|
||||
curly: [2, 'all']
|
||||
default-case: 0
|
||||
dot-location: [2, 'property']
|
||||
dot-notation: [2, {allowKeywords: true}]
|
||||
eol-last: 2
|
||||
eqeqeq: 2
|
||||
func-names: 0
|
||||
func-style: [2, 'declaration']
|
||||
generator-star: 0
|
||||
generator-star-spacing: 2
|
||||
global-require: 0
|
||||
guard-for-in: 0
|
||||
handle-callback-err: 2
|
||||
id-length: 0
|
||||
indent: [2, 2, {SwitchCase: 1}]
|
||||
init-declarations: 0
|
||||
jsx-quotes: 0
|
||||
key-spacing: [2, {beforeColon: false, afterColon: true}]
|
||||
max-depth: [1, 4]
|
||||
lines-around-comment: 0
|
||||
max-depth: [0, 4]
|
||||
max-len: [2, 80]
|
||||
max-nested-callbacks: [1, 2]
|
||||
max-params: [1, 4]
|
||||
max-nested-callbacks: [0, 2]
|
||||
max-params: [0, 4]
|
||||
max-statements: [0, 10]
|
||||
new-cap: 2
|
||||
new-parens: 2
|
||||
newline-after-var: 0
|
||||
object-curly-spacing: [2, 'never']
|
||||
object-shorthand: 0
|
||||
one-var: [2, 'never']
|
||||
operator-assignment: [0, 'always']
|
||||
operator-linebreak: 0
|
||||
padded-blocks: 0
|
||||
prefer-arrow-callback: 0
|
||||
prefer-const: 2
|
||||
prefer-spread: 2
|
||||
prefer-reflect: 0
|
||||
prefer-template: 0
|
||||
quote-props: 0
|
||||
quotes: [2, 'single']
|
||||
radix: 2
|
||||
id-match: 0
|
||||
require-jsdoc: 0
|
||||
require-yield: 0
|
||||
semi: 2
|
||||
semi-spacing: 2
|
||||
sort-vars: 0
|
||||
space-after-keywords: 2
|
||||
space-before-keywords: 2
|
||||
space-before-blocks: 2
|
||||
space-before-function-paren: [2, 'never']
|
||||
object-curly-spacing: [2, 'never']
|
||||
array-bracket-spacing: [2, 'never']
|
||||
space-in-parens: 2
|
||||
space-infix-ops: 2
|
||||
space-return-throw-case: 2
|
||||
@@ -155,27 +198,4 @@ rules:
|
||||
wrap-regex: 0
|
||||
yoda: [2, 'never']
|
||||
ecmaFeatures:
|
||||
arrowFunctions: true
|
||||
binaryLiterals: true
|
||||
blockBindings: true
|
||||
classes: true
|
||||
defaultParams: true
|
||||
destructuring: true
|
||||
forOf: true
|
||||
generators: true
|
||||
# not sure about the implications of globalReturn
|
||||
# globalReturn: true
|
||||
jsx: true
|
||||
objectLiteralComputedProperties: true
|
||||
objectLiteralShorthandMethods: true
|
||||
objectLiteralShorthandProperties: true
|
||||
# duplicate properties may be required but we are not
|
||||
# sure at this point
|
||||
# objectLiteralDuplicateProperties: true
|
||||
octalLiterals: true
|
||||
regexUFlag: true
|
||||
regexYFlag: true
|
||||
restParams: true
|
||||
spread: true
|
||||
templateStrings: true
|
||||
unicodeCodePointEscapes: true
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
'use strict';
|
||||
const {RippleAPI} = require('ripple-lib');
|
||||
const RippleAPI = require('ripple-lib').RippleAPI;
|
||||
|
||||
const api = new RippleAPI({
|
||||
server: 'wss://s1.ripple.com' // Public rippled server
|
||||
});
|
||||
api.connect().then(() => {
|
||||
/* begin custom code ------------------------------------ */
|
||||
const my_address = 'rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn';
|
||||
const myAddress = 'rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn';
|
||||
|
||||
console.log('getting account info for', my_address);
|
||||
return api.getAccountInfo(my_address);
|
||||
console.log('getting account info for', myAddress);
|
||||
return api.getAccountInfo(myAddress);
|
||||
|
||||
// info => {...} is just a shorter syntax for function(info) {...}
|
||||
}).then(info => {
|
||||
console.log(info);
|
||||
console.log('getAccountInfo done');
|
||||
@@ -19,6 +18,6 @@ api.connect().then(() => {
|
||||
/* end custom code -------------------------------------- */
|
||||
}).then(() => {
|
||||
return api.disconnect();
|
||||
}).then(()=> {
|
||||
}).then(() => {
|
||||
console.log('done and disconnected.');
|
||||
}).catch(console.error);
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
'use strict';
|
||||
/* import RippleAPI and support libraies*/
|
||||
const {RippleAPI} = require('ripple-lib');
|
||||
const RippleAPI = require('ripple-lib').RippleAPI;
|
||||
const assert = require('assert');
|
||||
|
||||
/* Credentials of the account placing the order */
|
||||
const my_addr = 'rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn';
|
||||
const my_secret = 's████████████████████████████';
|
||||
const myAddr = 'rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn';
|
||||
const mySecret = 's████████████████████████████';
|
||||
|
||||
/* Define the order to place here */
|
||||
const my_order = {
|
||||
const myOrder = {
|
||||
'direction': 'buy',
|
||||
'quantity': {
|
||||
'currency': 'FOO',
|
||||
@@ -27,7 +27,7 @@ const INTERVAL = 1000;
|
||||
const api = new RippleAPI({server: 'wss://s2.ripple.com'});
|
||||
/* number of ledgers to check for valid transaction before fail */
|
||||
const ledgerOffset = 5;
|
||||
const my_instructions = {maxLedgerVersionOffset: ledgerOffset};
|
||||
const myInstructions = {maxLedgerVersionOffset: ledgerOffset};
|
||||
|
||||
|
||||
/* Verify a transaction is in a validated RCL version */
|
||||
@@ -39,7 +39,8 @@ function verifyTransaction(hash, options) {
|
||||
console.log('Sequence: ', data.sequence);
|
||||
return data.outcome.result === 'tesSUCCESS';
|
||||
}).catch(error => {
|
||||
/* if transaction not in latest validated ledger try again until max ledger hit */
|
||||
/* if transaction not in latest validated ledger,
|
||||
try again until max ledger hit */
|
||||
if (error instanceof api.errors.PendingLedgerVersionError) {
|
||||
return new Promise((resolve, reject) => {
|
||||
setTimeout(() => verifyTransaction(hash, options)
|
||||
@@ -76,12 +77,12 @@ function submitTransaction(lastClosedLedgerVersion, prepared, secret) {
|
||||
|
||||
api.connect().then(() => {
|
||||
console.log('Connected');
|
||||
return api.prepareOrder(my_addr, my_order, my_instructions);
|
||||
return api.prepareOrder(myAddr, myOrder, myInstructions);
|
||||
}).then(prepared => {
|
||||
console.log('Order Prepared');
|
||||
return api.getLedger().then(ledger => {
|
||||
console.log('Current Ledger', ledger.ledgerVersion);
|
||||
return submitTransaction(ledger.ledgerVersion, prepared, my_secret);
|
||||
return submitTransaction(ledger.ledgerVersion, prepared, mySecret);
|
||||
});
|
||||
}).then(() => {
|
||||
api.disconnect().then(() => {
|
||||
|
||||
@@ -124,12 +124,12 @@ Even for a simple script, there's a lot packed into that, including some syntax
|
||||
|
||||
```
|
||||
'use strict';
|
||||
const {RippleAPI} = require('ripple-lib');
|
||||
const RippleAPI = require('ripple-lib').RippleAPI;
|
||||
```
|
||||
|
||||
The opening line enables [strict mode](https://www.nczonline.net/blog/2012/03/13/its-time-to-start-using-javascript-strict-mode/). This is purely optional, but it helps you avoid some common pitfalls of JavaScript. See also: [Restrictions on Code in Strict Mode](https://msdn.microsoft.com/library/br230269%28v=vs.94%29.aspx#Anchor_1).
|
||||
|
||||
The second line imports RippleAPI into the current scope using Node.js's require function. The [destructuring assignment](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment) assigns it to the variable name `RippleAPI` instead of `ripple-lib` (which is the name of the package, for historical reasons).
|
||||
The second line imports RippleAPI into the current scope using Node.js's require function. RippleAPI is just one of [the modules `ripple-lib` exports](https://github.com/ripple/ripple-lib/blob/develop/src/index.js).
|
||||
|
||||
### Instantiating the API ###
|
||||
|
||||
@@ -144,7 +144,7 @@ This section creates a new instance of the RippleAPI class, assigning it to the
|
||||
The one argument to the constructor is an options object, which has [a variety of options](rippleapi.html#parameters). The `server` parameter tells it where it should connect to a `rippled` server.
|
||||
|
||||
* The example `server` setting uses a secure WebSocket connection to connect to one of the public servers that Ripple (the company) operates.
|
||||
* If you don't include the `server` option, RippleAPI runs in [offline mode](rippleapi.html#offline-functionality) instead, which severely limits what you can do with it.
|
||||
* If you don't include the `server` option, RippleAPI runs in [offline mode](rippleapi.html#offline-functionality) instead, which only provides methods that don't need network connectivity.
|
||||
* You can specify a [Ripple Test Net](https://ripple.com/build/ripple-test-net/) server instead to connect to the parallel-world Test Network instead of the production Ripple Consensus Ledger.
|
||||
* If you [run your own `rippled`](rippled-setup.html), you can instruct it to connect to your local server. For example, you might say `server: 'ws://localhost:5005'` instead.
|
||||
|
||||
@@ -166,12 +166,12 @@ Finally, we have more new ECMAScript 6 syntax - an [arrow function](https://deve
|
||||
|
||||
```
|
||||
/* begin custom code ------------------------------------ */
|
||||
const my_address = 'rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn';
|
||||
|
||||
console.log('getting account info for',my_address);
|
||||
return api.getAccountInfo(my_address);
|
||||
const myAddress = 'rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn';
|
||||
|
||||
}).then( info => {
|
||||
console.log('getting account info for', myAddress);
|
||||
return api.getAccountInfo(myAddress);
|
||||
|
||||
}).then(info => {
|
||||
console.log(info);
|
||||
console.log('getAccountInfo done');
|
||||
|
||||
@@ -193,7 +193,7 @@ The results of that API method are another Promise, so the line `}).then( info =
|
||||
```
|
||||
}).then(() => {
|
||||
return api.disconnect();
|
||||
}).then(()=> {
|
||||
}).then(() => {
|
||||
console.log('done and disconnected.');
|
||||
}).catch(console.error);
|
||||
```
|
||||
@@ -210,7 +210,13 @@ One of the biggest challenges in using the Ripple Consensus Ledger (or any decen
|
||||
{% include 'code_samples/rippleapi_quickstart/submit-and-verify.js' %}
|
||||
```
|
||||
|
||||
This code uses
|
||||
This code creates and submits an order transaction, although the same principles apply to other types of transactions as well. After submitting the transaction, the code uses a new Promise, which queries the ledger again after using setTimeout to wait a fixed amount of time, to see if the transaction has been verified. If it hasn't been verified, the process repeats until either the transaction is found in a validated ledger or the returned ledger is higher than the LastLedgerSequence parameter.
|
||||
|
||||
In rare cases (particularly with a large delay or a loss of power), the `rippled` server may be missing a ledger version between when you submitted the transaction and when you determined that the network has passed the `maxLedgerVersion`. In this case, you cannot be definitively sure whether the transaction has failed, or has been included in one of the missing ledger versions. RippleAPI returns `MissingLedgerHistoryError` in this case.
|
||||
|
||||
If you are the administrator of the `rippled` server, you can [manually request the missing ledger(s)](rippled-apis.html#ledger-request). Otherwise, you can try checking the ledger history using a different server. (Ripple runs a public full-history server at `s2.ripple.com` for this purpose.)
|
||||
|
||||
See [Reliable Transaction Submission](reliable_tx.html) for a more thorough explanation.
|
||||
|
||||
|
||||
|
||||
@@ -256,13 +262,30 @@ npm WARN notsup Not compatible with your operating system or architecture: fseve
|
||||
|
||||
#### 3. Use Gulp to build a single JavaScript output
|
||||
|
||||
RippleAPI comes with code to use the [gulp](http://gulpjs.com/) package to compile all its source code into browser-compatible JavaScript files. Gulp is automatically installed as one of the dependencies, so all you have to do is run it:
|
||||
RippleAPI comes with code to use the [gulp](http://gulpjs.com/) package to compile all its source code into browser-compatible JavaScript files. Gulp is automatically installed as one of the dependencies, so all you have to do is run it. RippleAPI's configuration makes this easy:
|
||||
|
||||
```
|
||||
./node_modules/.bin/gulp
|
||||
npm run build
|
||||
```
|
||||
|
||||
This may take a little while. It outputs several things, and creates a new `build/` folder, which contains the files you want.
|
||||
Output:
|
||||
|
||||
```
|
||||
> ripple-lib@0.16.5 build /home/username/ripple-lib
|
||||
> gulp
|
||||
|
||||
[15:22:30] Using gulpfile /home/username/ripple-lib/Gulpfile.js
|
||||
[15:22:30] Starting 'build'...
|
||||
[15:22:30] Starting 'build-debug'...
|
||||
[15:22:42] Finished 'build' after 12 s
|
||||
[15:22:42] Starting 'build-min'...
|
||||
[15:22:42] Finished 'build-debug' after 12 s
|
||||
[15:22:51] Finished 'build-min' after 9.83 s
|
||||
[15:22:51] Starting 'default'...
|
||||
[15:22:51] Finished 'default' after 4.58 μs
|
||||
```
|
||||
|
||||
This may take a while. At the end, the build process creates a new `build/` folder, which contains the files you want.
|
||||
|
||||
The file `build/ripple-<VERSION NUMBER>.js` is a straight export of RippleAPI (whatever version you built) ready to be used in browsers. The file ending in `-min.js` is the same thing, but with the content [minified](https://en.wikipedia.org/wiki/Minification_%28programming%29) for faster loading.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user