nanook 0.7.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/CHANGELOG.md +26 -0
- data/Gemfile.lock +2 -2
- data/README.md +18 -7
- data/Rakefile +18 -0
- data/docs/0.7.0/apple-touch-icon.png +0 -0
- data/docs/0.7.0/classes/Nanook.html +572 -0
- data/docs/0.7.0/classes/Nanook/Account.html +909 -0
- data/docs/0.7.0/classes/Nanook/Block.html +717 -0
- data/docs/0.7.0/classes/Nanook/Error.html +84 -0
- data/docs/0.7.0/classes/Nanook/Key.html +253 -0
- data/docs/0.7.0/classes/Nanook/Node.html +657 -0
- data/docs/0.7.0/classes/Nanook/Rpc.html +247 -0
- data/docs/0.7.0/classes/Nanook/Util.html +197 -0
- data/docs/0.7.0/classes/Nanook/Wallet.html +986 -0
- data/docs/0.7.0/classes/Nanook/WalletAccount.html +446 -0
- data/docs/0.7.0/classes/Nanook/WorkPeer.html +294 -0
- data/docs/0.7.0/created.rid +14 -0
- data/docs/0.7.0/css/github.css +123 -0
- data/docs/0.7.0/css/main.css +374 -0
- data/docs/0.7.0/css/panel.css +360 -0
- data/docs/0.7.0/css/reset.css +48 -0
- data/docs/0.7.0/favicon.ico +0 -0
- data/docs/0.7.0/files/README_md.html +418 -0
- data/docs/0.7.0/files/lib/nanook/account_rb.html +89 -0
- data/docs/0.7.0/files/lib/nanook/block_rb.html +89 -0
- data/docs/0.7.0/files/lib/nanook/error_rb.html +89 -0
- data/docs/0.7.0/files/lib/nanook/key_rb.html +89 -0
- data/docs/0.7.0/files/lib/nanook/node_rb.html +89 -0
- data/docs/0.7.0/files/lib/nanook/rpc_rb.html +99 -0
- data/docs/0.7.0/files/lib/nanook/util_rb.html +89 -0
- data/docs/0.7.0/files/lib/nanook/version_rb.html +84 -0
- data/docs/0.7.0/files/lib/nanook/wallet_account_rb.html +89 -0
- data/docs/0.7.0/files/lib/nanook/wallet_rb.html +89 -0
- data/docs/0.7.0/files/lib/nanook/work_peer_rb.html +89 -0
- data/docs/0.7.0/files/lib/nanook_rb.html +94 -0
- data/docs/0.7.0/i/arrow-down.svg +8 -0
- data/docs/0.7.0/i/arrow-right.svg +8 -0
- data/docs/0.7.0/i/search.svg +12 -0
- data/docs/0.7.0/i/tree_bg.svg +8 -0
- data/docs/0.7.0/index.html +11 -0
- data/docs/0.7.0/js/highlight.pack.js +1 -0
- data/docs/0.7.0/js/jquery-1.3.2.min.js +19 -0
- data/docs/0.7.0/js/main.js +25 -0
- data/docs/0.7.0/js/navigation.js +142 -0
- data/docs/0.7.0/js/search_index.js +1 -0
- data/docs/0.7.0/js/searchdoc.js +465 -0
- data/docs/0.7.0/js/searcher.js +229 -0
- data/docs/0.7.0/panel/index.html +47 -0
- data/docs/0.7.0/panel/links.html +32 -0
- data/docs/0.7.0/panel/tree.js +1 -0
- data/docs/0.8.0/apple-touch-icon.png +0 -0
- data/docs/0.8.0/classes/Nanook.html +621 -0
- data/docs/0.8.0/classes/Nanook/Account.html +971 -0
- data/docs/0.8.0/classes/Nanook/Block.html +759 -0
- data/docs/0.8.0/classes/Nanook/Error.html +84 -0
- data/docs/0.8.0/classes/Nanook/Key.html +295 -0
- data/docs/0.8.0/classes/Nanook/Node.html +657 -0
- data/docs/0.8.0/classes/Nanook/Rpc.html +247 -0
- data/docs/0.8.0/classes/Nanook/Util.html +264 -0
- data/docs/0.8.0/classes/Nanook/Wallet.html +1056 -0
- data/docs/0.8.0/classes/Nanook/WalletAccount.html +582 -0
- data/docs/0.8.0/classes/Nanook/WorkPeer.html +294 -0
- data/docs/0.8.0/created.rid +14 -0
- data/docs/0.8.0/css/github.css +123 -0
- data/docs/0.8.0/css/main.css +374 -0
- data/docs/0.8.0/css/panel.css +360 -0
- data/docs/0.8.0/css/reset.css +48 -0
- data/docs/0.8.0/favicon.ico +0 -0
- data/docs/0.8.0/files/README_md.html +423 -0
- data/docs/0.8.0/files/lib/nanook/account_rb.html +89 -0
- data/docs/0.8.0/files/lib/nanook/block_rb.html +89 -0
- data/docs/0.8.0/files/lib/nanook/error_rb.html +89 -0
- data/docs/0.8.0/files/lib/nanook/key_rb.html +89 -0
- data/docs/0.8.0/files/lib/nanook/node_rb.html +89 -0
- data/docs/0.8.0/files/lib/nanook/rpc_rb.html +99 -0
- data/docs/0.8.0/files/lib/nanook/util_rb.html +97 -0
- data/docs/0.8.0/files/lib/nanook/version_rb.html +84 -0
- data/docs/0.8.0/files/lib/nanook/wallet_account_rb.html +89 -0
- data/docs/0.8.0/files/lib/nanook/wallet_rb.html +89 -0
- data/docs/0.8.0/files/lib/nanook/work_peer_rb.html +89 -0
- data/docs/0.8.0/files/lib/nanook_rb.html +94 -0
- data/docs/0.8.0/i/arrow-down.svg +8 -0
- data/docs/0.8.0/i/arrow-right.svg +8 -0
- data/docs/0.8.0/i/search.svg +12 -0
- data/docs/0.8.0/i/tree_bg.svg +8 -0
- data/docs/0.8.0/index.html +11 -0
- data/docs/0.8.0/js/highlight.pack.js +1 -0
- data/docs/0.8.0/js/jquery-1.3.2.min.js +19 -0
- data/docs/0.8.0/js/main.js +25 -0
- data/docs/0.8.0/js/navigation.js +142 -0
- data/docs/0.8.0/js/search_index.js +1 -0
- data/docs/0.8.0/js/searchdoc.js +465 -0
- data/docs/0.8.0/js/searcher.js +229 -0
- data/docs/0.8.0/panel/index.html +47 -0
- data/docs/0.8.0/panel/links.html +32 -0
- data/docs/0.8.0/panel/tree.js +1 -0
- data/docs/1.0.0/apple-touch-icon.png +0 -0
- data/docs/1.0.0/classes/Nanook.html +621 -0
- data/docs/1.0.0/classes/Nanook/Account.html +971 -0
- data/docs/1.0.0/classes/Nanook/Block.html +759 -0
- data/docs/1.0.0/classes/Nanook/Error.html +84 -0
- data/docs/1.0.0/classes/Nanook/Key.html +295 -0
- data/docs/1.0.0/classes/Nanook/Node.html +657 -0
- data/docs/1.0.0/classes/Nanook/Rpc.html +247 -0
- data/docs/1.0.0/classes/Nanook/Util.html +264 -0
- data/docs/1.0.0/classes/Nanook/Wallet.html +1056 -0
- data/docs/1.0.0/classes/Nanook/WalletAccount.html +582 -0
- data/docs/1.0.0/classes/Nanook/WorkPeer.html +294 -0
- data/docs/1.0.0/created.rid +14 -0
- data/docs/1.0.0/css/github.css +123 -0
- data/docs/1.0.0/css/main.css +374 -0
- data/docs/1.0.0/css/panel.css +360 -0
- data/docs/1.0.0/css/reset.css +48 -0
- data/docs/1.0.0/favicon.ico +0 -0
- data/docs/1.0.0/files/README_md.html +423 -0
- data/docs/1.0.0/files/lib/nanook/account_rb.html +89 -0
- data/docs/1.0.0/files/lib/nanook/block_rb.html +89 -0
- data/docs/1.0.0/files/lib/nanook/error_rb.html +89 -0
- data/docs/1.0.0/files/lib/nanook/key_rb.html +89 -0
- data/docs/1.0.0/files/lib/nanook/node_rb.html +89 -0
- data/docs/1.0.0/files/lib/nanook/rpc_rb.html +99 -0
- data/docs/1.0.0/files/lib/nanook/util_rb.html +97 -0
- data/docs/1.0.0/files/lib/nanook/version_rb.html +84 -0
- data/docs/1.0.0/files/lib/nanook/wallet_account_rb.html +89 -0
- data/docs/1.0.0/files/lib/nanook/wallet_rb.html +89 -0
- data/docs/1.0.0/files/lib/nanook/work_peer_rb.html +89 -0
- data/docs/1.0.0/files/lib/nanook_rb.html +94 -0
- data/docs/1.0.0/i/arrow-down.svg +8 -0
- data/docs/1.0.0/i/arrow-right.svg +8 -0
- data/docs/1.0.0/i/search.svg +12 -0
- data/docs/1.0.0/i/tree_bg.svg +8 -0
- data/docs/1.0.0/index.html +11 -0
- data/docs/1.0.0/js/highlight.pack.js +1 -0
- data/docs/1.0.0/js/jquery-1.3.2.min.js +19 -0
- data/docs/1.0.0/js/main.js +25 -0
- data/docs/1.0.0/js/navigation.js +142 -0
- data/docs/1.0.0/js/search_index.js +1 -0
- data/docs/1.0.0/js/searchdoc.js +465 -0
- data/docs/1.0.0/js/searcher.js +229 -0
- data/docs/1.0.0/panel/index.html +47 -0
- data/docs/1.0.0/panel/links.html +32 -0
- data/docs/1.0.0/panel/tree.js +1 -0
- data/docs/apple-touch-icon.png +0 -0
- data/docs/classes/Nanook.html +572 -0
- data/docs/classes/Nanook/Account.html +907 -0
- data/docs/classes/Nanook/Block.html +717 -0
- data/docs/classes/Nanook/Error.html +84 -0
- data/docs/classes/Nanook/Key.html +253 -0
- data/docs/classes/Nanook/Node.html +657 -0
- data/docs/classes/Nanook/Rpc.html +247 -0
- data/docs/classes/Nanook/Util.html +197 -0
- data/docs/classes/Nanook/Wallet.html +778 -0
- data/docs/classes/Nanook/WalletAccount.html +447 -0
- data/docs/classes/Nanook/WorkPeer.html +294 -0
- data/docs/created.rid +14 -0
- data/docs/css/github.css +123 -0
- data/docs/css/main.css +374 -0
- data/docs/css/panel.css +360 -0
- data/docs/css/reset.css +48 -0
- data/docs/favicon.ico +0 -0
- data/docs/files/README_md.html +408 -0
- data/docs/files/lib/nanook/account_rb.html +89 -0
- data/docs/files/lib/nanook/block_rb.html +89 -0
- data/docs/files/lib/nanook/error_rb.html +89 -0
- data/docs/files/lib/nanook/key_rb.html +89 -0
- data/docs/files/lib/nanook/node_rb.html +89 -0
- data/docs/files/lib/nanook/rpc_rb.html +99 -0
- data/docs/files/lib/nanook/util_rb.html +89 -0
- data/docs/files/lib/nanook/version_rb.html +84 -0
- data/docs/files/lib/nanook/wallet_account_rb.html +89 -0
- data/docs/files/lib/nanook/wallet_rb.html +89 -0
- data/docs/files/lib/nanook/work_peer_rb.html +89 -0
- data/docs/files/lib/nanook_rb.html +94 -0
- data/docs/i/arrow-down.svg +8 -0
- data/docs/i/arrow-right.svg +8 -0
- data/docs/i/search.svg +12 -0
- data/docs/i/tree_bg.svg +8 -0
- data/docs/index.html +11 -0
- data/docs/js/highlight.pack.js +1 -0
- data/docs/js/jquery-1.3.2.min.js +19 -0
- data/docs/js/main.js +25 -0
- data/docs/js/navigation.js +142 -0
- data/docs/js/search_index.js +1 -0
- data/docs/js/searchdoc.js +465 -0
- data/docs/js/searcher.js +229 -0
- data/docs/panel/index.html +47 -0
- data/docs/panel/links.html +32 -0
- data/docs/panel/tree.js +1 -0
- data/lib/nanook.rb +40 -4
- data/lib/nanook/account.rb +250 -8
- data/lib/nanook/block.rb +25 -2
- data/lib/nanook/key.rb +10 -2
- data/lib/nanook/node.rb +4 -0
- data/lib/nanook/rpc.rb +5 -1
- data/lib/nanook/util.rb +9 -1
- data/lib/nanook/version.rb +1 -1
- data/lib/nanook/wallet.rb +275 -14
- data/lib/nanook/wallet_account.rb +63 -11
- data/lib/nanook/work_peer.rb +4 -0
- metadata +188 -3
data/docs/js/searcher.js
ADDED
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
Searcher = function(data) {
|
|
2
|
+
this.data = data;
|
|
3
|
+
this.handlers = [];
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
Searcher.prototype = new function() {
|
|
7
|
+
// search is performed in chunks of 1000 for non-blocking user input
|
|
8
|
+
var CHUNK_SIZE = 1000;
|
|
9
|
+
// do not try to find more than 100 results
|
|
10
|
+
var MAX_RESULTS = 100;
|
|
11
|
+
var huid = 1;
|
|
12
|
+
var suid = 1;
|
|
13
|
+
var runs = 0;
|
|
14
|
+
|
|
15
|
+
this.find = function(query) {
|
|
16
|
+
var queries = splitQuery(query);
|
|
17
|
+
var regexps = buildRegexps(queries);
|
|
18
|
+
var highlighters = buildHilighters(queries);
|
|
19
|
+
var state = { from: 0, pass: 0, limit: MAX_RESULTS, n: suid++};
|
|
20
|
+
var _this = this;
|
|
21
|
+
|
|
22
|
+
this.currentSuid = state.n;
|
|
23
|
+
|
|
24
|
+
if (!query) return;
|
|
25
|
+
|
|
26
|
+
var run = function() {
|
|
27
|
+
// stop current search thread if new search started
|
|
28
|
+
if (state.n != _this.currentSuid) return;
|
|
29
|
+
|
|
30
|
+
var results =
|
|
31
|
+
performSearch(_this.data, regexps, queries, highlighters, state);
|
|
32
|
+
var hasMore = (state.limit > 0 && state.pass < 4);
|
|
33
|
+
|
|
34
|
+
triggerResults.call(_this, results, !hasMore);
|
|
35
|
+
if (hasMore) {
|
|
36
|
+
setTimeout(run, 2);
|
|
37
|
+
}
|
|
38
|
+
runs++;
|
|
39
|
+
};
|
|
40
|
+
runs = 0;
|
|
41
|
+
|
|
42
|
+
// start search thread
|
|
43
|
+
run();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* ----- Events ------ */
|
|
47
|
+
this.ready = function(fn) {
|
|
48
|
+
fn.huid = huid;
|
|
49
|
+
this.handlers.push(fn);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* ----- Utilities ------ */
|
|
53
|
+
function splitQuery(query) {
|
|
54
|
+
return jQuery.grep(query.split(/(\s+|::?|\(\)?)/), function(string) {
|
|
55
|
+
return string.match(/\S/);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function buildRegexps(queries) {
|
|
60
|
+
return jQuery.map(queries, function(query) {
|
|
61
|
+
return new RegExp(query.replace(/(.)/g, '([$1])([^$1]*?)'), 'i');
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function buildHilighters(queries) {
|
|
66
|
+
return jQuery.map(queries, function(query) {
|
|
67
|
+
return jQuery.map(query.split(''), function(l, i) {
|
|
68
|
+
return '\u0001$' + (i*2+1) + '\u0002$' + (i*2+2);
|
|
69
|
+
}).join('');
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// function longMatchRegexp(index, longIndex, regexps) {
|
|
74
|
+
// for (var i = regexps.length - 1; i >= 0; i--){
|
|
75
|
+
// if (!index.match(regexps[i]) && !longIndex.match(regexps[i])) return false;
|
|
76
|
+
// };
|
|
77
|
+
// return true;
|
|
78
|
+
// }
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
/* ----- Mathchers ------ */
|
|
82
|
+
|
|
83
|
+
/*
|
|
84
|
+
* This record matches if the index starts with queries[0] and the record
|
|
85
|
+
* matches all of the regexps
|
|
86
|
+
*/
|
|
87
|
+
function matchPassBeginning(index, longIndex, queries, regexps) {
|
|
88
|
+
if (index.indexOf(queries[0]) != 0) return false;
|
|
89
|
+
for (var i=1, l = regexps.length; i < l; i++) {
|
|
90
|
+
if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
|
|
91
|
+
return false;
|
|
92
|
+
};
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/*
|
|
97
|
+
* This record matches if the longIndex starts with queries[0] and the
|
|
98
|
+
* longIndex matches all of the regexps
|
|
99
|
+
*/
|
|
100
|
+
function matchPassLongIndex(index, longIndex, queries, regexps) {
|
|
101
|
+
if (longIndex.indexOf(queries[0]) != 0) return false;
|
|
102
|
+
for (var i=1, l = regexps.length; i < l; i++) {
|
|
103
|
+
if (!longIndex.match(regexps[i]))
|
|
104
|
+
return false;
|
|
105
|
+
};
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/*
|
|
110
|
+
* This record matches if the index contains queries[0] and the record
|
|
111
|
+
* matches all of the regexps
|
|
112
|
+
*/
|
|
113
|
+
function matchPassContains(index, longIndex, queries, regexps) {
|
|
114
|
+
if (index.indexOf(queries[0]) == -1) return false;
|
|
115
|
+
for (var i=1, l = regexps.length; i < l; i++) {
|
|
116
|
+
if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
|
|
117
|
+
return false;
|
|
118
|
+
};
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/*
|
|
123
|
+
* This record matches if regexps[0] matches the index and the record
|
|
124
|
+
* matches all of the regexps
|
|
125
|
+
*/
|
|
126
|
+
function matchPassRegexp(index, longIndex, queries, regexps) {
|
|
127
|
+
if (!index.match(regexps[0])) return false;
|
|
128
|
+
for (var i=1, l = regexps.length; i < l; i++) {
|
|
129
|
+
if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
|
|
130
|
+
return false;
|
|
131
|
+
};
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
/* ----- Highlighters ------ */
|
|
137
|
+
function highlightRegexp(info, queries, regexps, highlighters) {
|
|
138
|
+
var result = createResult(info);
|
|
139
|
+
for (var i=0, l = regexps.length; i < l; i++) {
|
|
140
|
+
result.title = result.title.replace(regexps[i], highlighters[i]);
|
|
141
|
+
result.namespace = result.namespace.replace(regexps[i], highlighters[i]);
|
|
142
|
+
};
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function hltSubstring(string, pos, length) {
|
|
147
|
+
return string.substring(0, pos) + '\u0001' + string.substring(pos, pos + length) + '\u0002' + string.substring(pos + length);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function highlightQuery(info, queries, regexps, highlighters) {
|
|
151
|
+
var result = createResult(info);
|
|
152
|
+
var pos = 0;
|
|
153
|
+
var lcTitle = result.title.toLowerCase();
|
|
154
|
+
|
|
155
|
+
pos = lcTitle.indexOf(queries[0]);
|
|
156
|
+
if (pos != -1) {
|
|
157
|
+
result.title = hltSubstring(result.title, pos, queries[0].length);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
result.namespace = result.namespace.replace(regexps[0], highlighters[0]);
|
|
161
|
+
for (var i=1, l = regexps.length; i < l; i++) {
|
|
162
|
+
result.title = result.title.replace(regexps[i], highlighters[i]);
|
|
163
|
+
result.namespace = result.namespace.replace(regexps[i], highlighters[i]);
|
|
164
|
+
};
|
|
165
|
+
return result;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function createResult(info) {
|
|
169
|
+
var result = {};
|
|
170
|
+
result.title = info[0];
|
|
171
|
+
result.namespace = info[1];
|
|
172
|
+
result.path = info[2];
|
|
173
|
+
result.params = info[3];
|
|
174
|
+
result.snippet = info[4];
|
|
175
|
+
result.badge = info[6];
|
|
176
|
+
return result;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/* ----- Searching ------ */
|
|
180
|
+
function performSearch(data, regexps, queries, highlighters, state) {
|
|
181
|
+
var searchIndex = data.searchIndex;
|
|
182
|
+
var longSearchIndex = data.longSearchIndex;
|
|
183
|
+
var info = data.info;
|
|
184
|
+
var result = [];
|
|
185
|
+
var i = state.from;
|
|
186
|
+
var l = searchIndex.length;
|
|
187
|
+
var togo = CHUNK_SIZE;
|
|
188
|
+
var matchFunc, hltFunc;
|
|
189
|
+
|
|
190
|
+
while (state.pass < 4 && state.limit > 0 && togo > 0) {
|
|
191
|
+
if (state.pass == 0) {
|
|
192
|
+
matchFunc = matchPassBeginning;
|
|
193
|
+
hltFunc = highlightQuery;
|
|
194
|
+
} else if (state.pass == 1) {
|
|
195
|
+
matchFunc = matchPassLongIndex;
|
|
196
|
+
hltFunc = highlightQuery;
|
|
197
|
+
} else if (state.pass == 2) {
|
|
198
|
+
matchFunc = matchPassContains;
|
|
199
|
+
hltFunc = highlightQuery;
|
|
200
|
+
} else if (state.pass == 3) {
|
|
201
|
+
matchFunc = matchPassRegexp;
|
|
202
|
+
hltFunc = highlightRegexp;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
for (; togo > 0 && i < l && state.limit > 0; i++, togo--) {
|
|
206
|
+
if (info[i].n == state.n) continue;
|
|
207
|
+
if (matchFunc(searchIndex[i], longSearchIndex[i], queries, regexps)) {
|
|
208
|
+
info[i].n = state.n;
|
|
209
|
+
result.push(hltFunc(info[i], queries, regexps, highlighters));
|
|
210
|
+
state.limit--;
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
if (searchIndex.length <= i) {
|
|
214
|
+
state.pass++;
|
|
215
|
+
i = state.from = 0;
|
|
216
|
+
} else {
|
|
217
|
+
state.from = i;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return result;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
function triggerResults(results, isLast) {
|
|
224
|
+
jQuery.each(this.handlers, function(i, fn) {
|
|
225
|
+
fn.call(this, results, isLast)
|
|
226
|
+
})
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<title>search index</title>
|
|
5
|
+
<link rel="stylesheet" href="../css/reset.css" type="text/css" media="screen" charset="utf-8" />
|
|
6
|
+
<link rel="stylesheet" href="../css/panel.css" type="text/css" media="screen" charset="utf-8" />
|
|
7
|
+
<script src="../js/search_index.js" type="text/javascript" charset="utf-8"></script>
|
|
8
|
+
<script src="../js/searcher.js" type="text/javascript" charset="utf-8"></script>
|
|
9
|
+
<script src="tree.js" type="text/javascript" charset="utf-8"></script>
|
|
10
|
+
<script src="../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
|
|
11
|
+
<script src="../js/searchdoc.js" type="text/javascript" charset="utf-8"></script>
|
|
12
|
+
<script type="text/javascript" charset="utf-8">
|
|
13
|
+
$(function() {
|
|
14
|
+
$('#links').hide();
|
|
15
|
+
var panel = new Searchdoc.Panel($('#panel'), search_data, tree, top.frames[1]);
|
|
16
|
+
$('#search').focus();
|
|
17
|
+
|
|
18
|
+
var s = window.parent.location.search.match(/\?q=([^&]+)/);
|
|
19
|
+
if (s) {
|
|
20
|
+
s = decodeURIComponent(s[1]).replace(/\+/g, ' ');
|
|
21
|
+
if (s.length > 0) {
|
|
22
|
+
$('#search').val(s);
|
|
23
|
+
panel.search(s, true);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
</script>
|
|
28
|
+
</head>
|
|
29
|
+
|
|
30
|
+
<body>
|
|
31
|
+
<div class="panel panel_tree" id="panel">
|
|
32
|
+
<div class="header">
|
|
33
|
+
<input type="text" placeholder="Search for a class, method, ..." autosave="searchdoc" results="10" id="search" autocomplete="off" />
|
|
34
|
+
</div>
|
|
35
|
+
<div class="tree">
|
|
36
|
+
<ul>
|
|
37
|
+
</ul>
|
|
38
|
+
</div>
|
|
39
|
+
<div class="result">
|
|
40
|
+
<ul>
|
|
41
|
+
</ul>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
<a href="links.html" id="links">index</a>
|
|
45
|
+
</body>
|
|
46
|
+
|
|
47
|
+
</html>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<html>
|
|
2
|
+
<head>File index</head>
|
|
3
|
+
<body>
|
|
4
|
+
|
|
5
|
+
<a href="../files/README_md.html">README.md</a>
|
|
6
|
+
|
|
7
|
+
<a href="../files/lib/nanook_rb.html">lib/nanook.rb</a>
|
|
8
|
+
|
|
9
|
+
<a href="../files/lib/nanook/account_rb.html">lib/nanook/account.rb</a>
|
|
10
|
+
|
|
11
|
+
<a href="../files/lib/nanook/block_rb.html">lib/nanook/block.rb</a>
|
|
12
|
+
|
|
13
|
+
<a href="../files/lib/nanook/error_rb.html">lib/nanook/error.rb</a>
|
|
14
|
+
|
|
15
|
+
<a href="../files/lib/nanook/key_rb.html">lib/nanook/key.rb</a>
|
|
16
|
+
|
|
17
|
+
<a href="../files/lib/nanook/node_rb.html">lib/nanook/node.rb</a>
|
|
18
|
+
|
|
19
|
+
<a href="../files/lib/nanook/rpc_rb.html">lib/nanook/rpc.rb</a>
|
|
20
|
+
|
|
21
|
+
<a href="../files/lib/nanook/util_rb.html">lib/nanook/util.rb</a>
|
|
22
|
+
|
|
23
|
+
<a href="../files/lib/nanook/version_rb.html">lib/nanook/version.rb</a>
|
|
24
|
+
|
|
25
|
+
<a href="../files/lib/nanook/wallet_rb.html">lib/nanook/wallet.rb</a>
|
|
26
|
+
|
|
27
|
+
<a href="../files/lib/nanook/wallet_account_rb.html">lib/nanook/wallet_account.rb</a>
|
|
28
|
+
|
|
29
|
+
<a href="../files/lib/nanook/work_peer_rb.html">lib/nanook/work_peer.rb</a>
|
|
30
|
+
|
|
31
|
+
</body>
|
|
32
|
+
</html>
|
data/docs/panel/tree.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var tree = [["","","files",[["README.md","files/README_md.html","",[]],["","","lib",[["","","nanook",[["account.rb","files/lib/nanook/account_rb.html","",[]],["block.rb","files/lib/nanook/block_rb.html","",[]],["error.rb","files/lib/nanook/error_rb.html","",[]],["key.rb","files/lib/nanook/key_rb.html","",[]],["node.rb","files/lib/nanook/node_rb.html","",[]],["rpc.rb","files/lib/nanook/rpc_rb.html","",[]],["util.rb","files/lib/nanook/util_rb.html","",[]],["version.rb","files/lib/nanook/version_rb.html","",[]],["wallet.rb","files/lib/nanook/wallet_rb.html","",[]],["wallet_account.rb","files/lib/nanook/wallet_account_rb.html","",[]],["work_peer.rb","files/lib/nanook/work_peer_rb.html","",[]]]],["nanook.rb","files/lib/nanook_rb.html","",[]]]]]],["Nanook","classes/Nanook.html"," < Object",[["Account","classes/Nanook/Account.html"," < Object",[]],["Block","classes/Nanook/Block.html"," < Object",[]],["Error","classes/Nanook/Error.html"," < StandardError",[]],["Key","classes/Nanook/Key.html"," < Object",[]],["Node","classes/Nanook/Node.html"," < Object",[]],["Rpc","classes/Nanook/Rpc.html"," < Object",[]],["Util","classes/Nanook/Util.html"," < Object",[]],["Wallet","classes/Nanook/Wallet.html"," < Object",[]],["WalletAccount","classes/Nanook/WalletAccount.html"," < Object",[]],["WorkPeer","classes/Nanook/WorkPeer.html"," < Object",[]]]]]
|
data/lib/nanook.rb
CHANGED
|
@@ -3,22 +3,58 @@ require 'uri'
|
|
|
3
3
|
|
|
4
4
|
Dir[File.dirname(__FILE__) + '/nanook/*.rb'].each {|file| require file }
|
|
5
5
|
|
|
6
|
+
# ==== Initializing
|
|
7
|
+
#
|
|
8
|
+
# Connect to the default RPC host at http://localhost:7076 and with a timeout of 500 seconds:
|
|
9
|
+
#
|
|
10
|
+
# nanook = Nanook.new
|
|
11
|
+
#
|
|
12
|
+
# To connect to another host instead:
|
|
13
|
+
#
|
|
14
|
+
# nanook = Nanook.new("http://ip6-localhost.com:7076")
|
|
15
|
+
#
|
|
16
|
+
# To give a specific timeout value:
|
|
17
|
+
#
|
|
18
|
+
# Nanook.new(timeout: 600)
|
|
19
|
+
# Nanook.new("http://ip6-localhost.com:7076", timeout: 600)
|
|
6
20
|
class Nanook
|
|
7
21
|
|
|
22
|
+
# ==== Arguments
|
|
23
|
+
#
|
|
24
|
+
# * +uri+ - RPC host to connect to (default is "http://localhost:7076")
|
|
25
|
+
# * +timeout:+ - Connection timeout in number of seconds (default is 500)
|
|
26
|
+
#
|
|
27
|
+
# ==== Examples
|
|
28
|
+
#
|
|
29
|
+
# Nanook.new # Connect to http://localhost:7076 with 500s timeout
|
|
30
|
+
#
|
|
31
|
+
# Nanook.new(timeout: 600)
|
|
32
|
+
# Nanook.new("http://ip6-localhost.com:7076", timeout: 600)
|
|
8
33
|
def initialize(uri=Nanook::Rpc::DEFAULT_URI, timeout:Nanook::Rpc::DEFAULT_TIMEOUT)
|
|
9
34
|
@rpc = Nanook::Rpc.new(uri, timeout: timeout)
|
|
10
35
|
end
|
|
11
36
|
|
|
37
|
+
##
|
|
38
|
+
# Returns a Nanook::Account instance.
|
|
39
|
+
#
|
|
40
|
+
# nanook = Nanook.new
|
|
41
|
+
#
|
|
42
|
+
# account = nanook.account
|
|
43
|
+
# account = nanook.account("xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000")
|
|
12
44
|
def account(account=nil)
|
|
13
|
-
Nanook::Account.new(
|
|
45
|
+
Nanook::Account.new(@rpc, account)
|
|
14
46
|
end
|
|
15
47
|
|
|
16
48
|
def block(block=nil)
|
|
17
|
-
Nanook::Block.new(
|
|
49
|
+
Nanook::Block.new(@rpc, block)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def inspect # :nodoc
|
|
53
|
+
"#{self.class.name}(rpc: #{@rpc.inspect}, object_id: \"#{"0x00%x" % (object_id << 1)}\")"
|
|
18
54
|
end
|
|
19
55
|
|
|
20
56
|
def key(key=nil)
|
|
21
|
-
Nanook::Key.new(
|
|
57
|
+
Nanook::Key.new(@rpc, key)
|
|
22
58
|
end
|
|
23
59
|
|
|
24
60
|
def node
|
|
@@ -26,7 +62,7 @@ class Nanook
|
|
|
26
62
|
end
|
|
27
63
|
|
|
28
64
|
def wallet(wallet=nil)
|
|
29
|
-
Nanook::Wallet.new(
|
|
65
|
+
Nanook::Wallet.new(@rpc, wallet)
|
|
30
66
|
end
|
|
31
67
|
|
|
32
68
|
def work_peers
|
data/lib/nanook/account.rb
CHANGED
|
@@ -1,54 +1,290 @@
|
|
|
1
1
|
class Nanook
|
|
2
|
+
|
|
3
|
+
# The <tt>Nanook::Account</tt> class contains methods to discover
|
|
4
|
+
# publicly-available information about accounts on the nano network.
|
|
5
|
+
#
|
|
6
|
+
# === Initializing
|
|
7
|
+
#
|
|
8
|
+
# Initialize this class through the convenient Nanook#account method:
|
|
9
|
+
#
|
|
10
|
+
# nanook = Nanook.new
|
|
11
|
+
# account = nanook.account("xrb_...")
|
|
12
|
+
#
|
|
13
|
+
# Or compose the longhand way like this:
|
|
14
|
+
#
|
|
15
|
+
# rpc_conn = Nanook::Rpc.new
|
|
16
|
+
# account = Nanook::Account.new(rpc_conn, "xrb_...")
|
|
2
17
|
class Account
|
|
3
18
|
|
|
4
|
-
def initialize(
|
|
5
|
-
@account = account
|
|
19
|
+
def initialize(rpc, account)
|
|
6
20
|
@rpc = rpc
|
|
21
|
+
@account = account
|
|
7
22
|
end
|
|
8
23
|
|
|
24
|
+
# ==== Example response
|
|
25
|
+
# {
|
|
26
|
+
# "xrb_13bqhi1cdqq8yb9szneoc38qk899d58i5rcrgdk5mkdm86hekpoez3zxw5sd": "500000000000000000000000000000000000",
|
|
27
|
+
# "xrb_17k6ug685154an8gri9whhe5kb5z1mf5w6y39gokc1657sh95fegm8ht1zpn": "961647970820730000000000000000000000"
|
|
28
|
+
# }
|
|
9
29
|
def delegators
|
|
10
30
|
account_required!
|
|
11
31
|
rpc(:delegators)[:delegators]
|
|
12
32
|
end
|
|
13
33
|
|
|
34
|
+
# Returns a boolean indicating if account is known. Note, the
|
|
35
|
+
# reliability of the check depends on the node host having
|
|
36
|
+
# synchronized itself with most of the blocks on the nano network,
|
|
37
|
+
# otherwise you may get a false +false+. You can check if a node's
|
|
38
|
+
# synchronization is particular low using Nanook::Node#sync_progress.
|
|
39
|
+
#
|
|
40
|
+
# ==== Example response
|
|
41
|
+
# true
|
|
14
42
|
def exists?
|
|
15
43
|
account_required!
|
|
16
44
|
response = rpc(:validate_account_number)
|
|
17
45
|
!response.empty? && response[:valid] == 1
|
|
18
46
|
end
|
|
19
47
|
|
|
48
|
+
# Returns an account's history of send and receive payments.
|
|
49
|
+
# Amounts are in {raw}[https://nano.org/en/faq#what-are-nano-units-].
|
|
50
|
+
#
|
|
51
|
+
# ==== Arguments
|
|
52
|
+
#
|
|
53
|
+
# [+limit:+] Integer representing the maximum number of history
|
|
54
|
+
# items to return (default is 1000)
|
|
55
|
+
#
|
|
56
|
+
# ==== Example
|
|
57
|
+
#
|
|
58
|
+
# account.history
|
|
59
|
+
# account.history(limit: 1)
|
|
60
|
+
#
|
|
61
|
+
# ==== Example response
|
|
62
|
+
# [
|
|
63
|
+
# {
|
|
64
|
+
# :type=>"send",
|
|
65
|
+
# :account=>"xrb_1kdc5u48j3hr5r7eof9iao47szqh81ndqgq5e5hrsn1g9a3sa4hkkcotn3uq",
|
|
66
|
+
# :amount=>200000000000000000000000000000,
|
|
67
|
+
# :hash=>"2C3C570EA8898443C0FD04A1C385A3E3A8C985AD792635FCDCEBB30ADF6A0570"
|
|
68
|
+
# },
|
|
69
|
+
# {
|
|
70
|
+
# :type=>"receive",
|
|
71
|
+
# :account=>"xrb_1niabkx3gbxit5j5yyqcpas71dkffggbr6zpd3heui8rpoocm5xqbdwq44oh",
|
|
72
|
+
# :amount=>7836413000000000000000000000000,
|
|
73
|
+
# :hash=>"16743E8FF52F454E876E68EDD11F23094DCB96795A3B7F32F74F88563ACDDB04"
|
|
74
|
+
# }
|
|
75
|
+
# ]
|
|
20
76
|
def history(limit: 1000)
|
|
21
77
|
account_required!
|
|
22
78
|
rpc(:account_history, count: limit)[:history]
|
|
23
79
|
end
|
|
24
80
|
|
|
81
|
+
# Returns the public key belonging to an account.
|
|
82
|
+
#
|
|
83
|
+
# ==== Example response
|
|
84
|
+
# "3068BB1CA04525BB0E416C485FE6A67FD52540227D267CC8B6E8DA958A7FA039"
|
|
25
85
|
def public_key
|
|
26
86
|
account_required!
|
|
27
87
|
rpc(:account_key)[:key]
|
|
28
88
|
end
|
|
29
89
|
|
|
90
|
+
# Returns a String of the representative account for the account.
|
|
91
|
+
# Representatives are accounts which cast votes in the case of a
|
|
92
|
+
# fork in the network.
|
|
93
|
+
#
|
|
94
|
+
# ==== Example response
|
|
95
|
+
#
|
|
96
|
+
# "xrb_3pczxuorp48td8645bs3m6c3xotxd3idskrenmi65rbrga5zmkemzhwkaznh"
|
|
30
97
|
def representative
|
|
31
98
|
account_required!
|
|
32
99
|
rpc(:account_representative)[:representative]
|
|
33
100
|
end
|
|
34
101
|
|
|
35
|
-
|
|
102
|
+
# Returns a Hash containing the account's balance. Units are in
|
|
103
|
+
# {raw}[https://nano.org/en/faq#what-are-nano-units-].
|
|
104
|
+
#
|
|
105
|
+
# [+:balance+] Account balance
|
|
106
|
+
# [+:pending+] Amount pending and not yet received by the account
|
|
107
|
+
#
|
|
108
|
+
# ==== Arguments
|
|
109
|
+
#
|
|
110
|
+
# [+unit:+] Symbol (default is +:nano+) Represents the unit that
|
|
111
|
+
# the balances will be returned in.
|
|
112
|
+
# Must be either +:nano+ or +:raw+. (Note: this method
|
|
113
|
+
# interprets +:nano+ as NANO, which is technically Mnano
|
|
114
|
+
# See {What are Nano's Units}[https://nano.org/en/faq#what-are-nano-units-])
|
|
115
|
+
#
|
|
116
|
+
# ===== Example response
|
|
117
|
+
# {
|
|
118
|
+
# "balance": "2",
|
|
119
|
+
# "pending": "1"
|
|
120
|
+
# }
|
|
121
|
+
def balance(unit: Nanook::WalletAccount::DEFAULT_UNIT)
|
|
36
122
|
account_required!
|
|
37
|
-
|
|
123
|
+
|
|
124
|
+
unless Nanook::WalletAccount::UNITS.include?(unit)
|
|
125
|
+
raise ArgumentError.new("Unsupported unit: #{unit}")
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
rpc(:account_balance).tap do |r|
|
|
129
|
+
if unit == :nano
|
|
130
|
+
r[:balance] = Nanook::Util.raw_to_NANO(r[:balance])
|
|
131
|
+
r[:pending] = Nanook::Util.raw_to_NANO(r[:pending])
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def id
|
|
137
|
+
@block
|
|
38
138
|
end
|
|
39
139
|
|
|
40
|
-
|
|
140
|
+
# Returns a Hash containing the following information about an
|
|
141
|
+
# account:
|
|
142
|
+
#
|
|
143
|
+
# [+:frontier+] The latest block hash
|
|
144
|
+
# [+:open_block+] The first block in every account's blockchain. When this block was published the account was officially open
|
|
145
|
+
# [+:representative_block+] The block that named the representative for the account
|
|
146
|
+
# [+:balance+] Amount in {NANO}[https://nano.org/en/faq#what-are-nano-units-]
|
|
147
|
+
# [+:last_modified+] Unix timestamp
|
|
148
|
+
# [+:block_count+] Number of blocks in the account's blockchain
|
|
149
|
+
#
|
|
150
|
+
# When <tt>detailed: true</tt> is passed as an argument, this method
|
|
151
|
+
# makes four additional calls to the RPC to return more information
|
|
152
|
+
# about an account:
|
|
153
|
+
#
|
|
154
|
+
# [+:weight+] See #weight
|
|
155
|
+
# [+:pending+] See #balance
|
|
156
|
+
# [+:representative+] See #representative
|
|
157
|
+
# [+:public_key+] See #public_key
|
|
158
|
+
#
|
|
159
|
+
# ==== Arguments
|
|
160
|
+
#
|
|
161
|
+
# [+detailed:+] Boolean (default is false). When +true+, four
|
|
162
|
+
# additional calls are made to the RPC to return more
|
|
163
|
+
# information
|
|
164
|
+
#
|
|
165
|
+
# ==== Example 1
|
|
166
|
+
#
|
|
167
|
+
# account.info
|
|
168
|
+
#
|
|
169
|
+
# ==== Example 1 response
|
|
170
|
+
# {
|
|
171
|
+
# :balance=>11.439597000000001,
|
|
172
|
+
# :block_count=>4
|
|
173
|
+
# :frontier=>"2C3C570EA8898443C0FD04A1C385A3E3A8C985AD792635FCDCEBB30ADF6A0570",
|
|
174
|
+
# :modified_timestamp=>1520500357,
|
|
175
|
+
# :open_block=>"C82376314C387080A753871A32AD70F4168080C317C5E67356F0A62EB5F34FF9",
|
|
176
|
+
# :representative_block=>"C82376314C387080A753871A32AD70F4168080C317C5E67356F0A62EB5F34FF9",
|
|
177
|
+
# }
|
|
178
|
+
#
|
|
179
|
+
# ==== Example 2
|
|
180
|
+
#
|
|
181
|
+
# account.info(detailed: true)
|
|
182
|
+
#
|
|
183
|
+
# ==== Example 2 response
|
|
184
|
+
# {
|
|
185
|
+
# :balance=>11.439597000000001,
|
|
186
|
+
# :block_count=>4,
|
|
187
|
+
# :frontier=>"2C3C570EA8898443C0FD04A1C385A3E3A8C985AD792635FCDCEBB30ADF6A0570",
|
|
188
|
+
# :modified_timestamp=>1520500357,
|
|
189
|
+
# :open_block=>"C82376314C387080A753871A32AD70F4168080C317C5E67356F0A62EB5F34FF9",
|
|
190
|
+
# :pending=>0,
|
|
191
|
+
# :public_key=>"A82C906460046D230D7D37C6663723DC3EFCECC4B3254EBF45294B66746F4FEF",
|
|
192
|
+
# :representative=>"xrb_3pczxuorp48td8645bs3m6c3xotxd3idskrenmi65rbrga5zmkemzhwkaznh",
|
|
193
|
+
# :representative_block=>"C82376314C387080A753871A32AD70F4168080C317C5E67356F0A62EB5F34FF9",
|
|
194
|
+
# :weight=>0
|
|
195
|
+
# }
|
|
196
|
+
def info(detailed: false)
|
|
41
197
|
account_required!
|
|
42
|
-
|
|
198
|
+
|
|
199
|
+
response = rpc(:account_info)
|
|
200
|
+
|
|
201
|
+
# Return the response if we don't need any more info
|
|
202
|
+
return response unless detailed
|
|
203
|
+
|
|
204
|
+
# Otherwise make additional calls
|
|
205
|
+
response = response.merge({
|
|
206
|
+
weight: weight,
|
|
207
|
+
pending: balance[:pending],
|
|
208
|
+
representative: representative,
|
|
209
|
+
public_key: public_key
|
|
210
|
+
})
|
|
211
|
+
|
|
212
|
+
# Sort this new hash by keys
|
|
213
|
+
Hash[response.sort].to_symbolized_hash
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
def inspect # :nodoc:
|
|
217
|
+
"#{self.class.name}(id: \"#{id}\", object_id: \"#{"0x00%x" % (object_id << 1)}\")"
|
|
43
218
|
end
|
|
44
219
|
|
|
220
|
+
# Returns information about the given account as well as other
|
|
221
|
+
# accounts up the ledger. The number of accounts returned is determined
|
|
222
|
+
# by the <tt>limit:</tt> argument.
|
|
223
|
+
#
|
|
224
|
+
# The information in each Hash is the same as what the
|
|
225
|
+
# #info(detailed: false) method returns.
|
|
226
|
+
#
|
|
227
|
+
# ==== Arguments
|
|
228
|
+
#
|
|
229
|
+
# [+limit:+] Number of accounts to return in the ledger (default is 1)
|
|
230
|
+
#
|
|
231
|
+
# ==== Example
|
|
232
|
+
#
|
|
233
|
+
# ledger(limit: 2)
|
|
234
|
+
#
|
|
235
|
+
# ==== Example response
|
|
236
|
+
# {
|
|
237
|
+
# :xrb_3c3ek3k8135f6e8qtfy8eruk9q3yzmpebes7btzncccdest8ymzhjmnr196j=>{
|
|
238
|
+
# :frontier=>"2C3C570EA8898443C0FD04A1C385A3E3A8C985AD792635FCDCEBB30ADF6A0570",
|
|
239
|
+
# :open_block=>"C82376314C387080A753871A32AD70F4168080C317C5E67356F0A62EB5F34FF9",
|
|
240
|
+
# :representative_block=>"C82376314C387080A753871A32AD70F4168080C317C5E67356F0A62EB5F34FF9",
|
|
241
|
+
# :balance=>11439597000000000000000000000000,
|
|
242
|
+
# :modified_timestamp=>1520500357,
|
|
243
|
+
# :block_count=>4
|
|
244
|
+
# },
|
|
245
|
+
# :xrb_3c3ettq59kijuuad5fnaq35itc9schtr4r7r6rjhmwjbairowzq3wi5ap7h8=>{ ... }
|
|
246
|
+
# }
|
|
45
247
|
def ledger(limit: 1)
|
|
46
248
|
account_required!
|
|
47
249
|
rpc(:ledger, count: limit)[:accounts]
|
|
48
250
|
end
|
|
49
251
|
|
|
50
|
-
|
|
51
|
-
#
|
|
252
|
+
|
|
253
|
+
# Returns information about pending block hashes that are waiting to
|
|
254
|
+
# be received by the account.
|
|
255
|
+
#
|
|
256
|
+
# The default response is an Array of block hashes.
|
|
257
|
+
# With the +detailed:+ argument, the method can return a more
|
|
258
|
+
# complex Hash containing the amount in
|
|
259
|
+
# {raw}[https://nano.org/en/faq#what-are-nano-units-] of the pending
|
|
260
|
+
# block and the source account that sent it.
|
|
261
|
+
#
|
|
262
|
+
# ==== Arguments
|
|
263
|
+
#
|
|
264
|
+
# [+limit:+] Number of pending blocks to return (default is 1000)
|
|
265
|
+
# [+detailed:+] Boolean to have this method return a more complex
|
|
266
|
+
# Hash of pending block information (default is +false+)
|
|
267
|
+
#
|
|
268
|
+
# ==== Example 1
|
|
269
|
+
#
|
|
270
|
+
# pending
|
|
271
|
+
#
|
|
272
|
+
# ==== Example 1 response
|
|
273
|
+
#
|
|
274
|
+
# ["000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F"]
|
|
275
|
+
#
|
|
276
|
+
# ==== Example 2
|
|
277
|
+
#
|
|
278
|
+
# pending(detailed: true)
|
|
279
|
+
#
|
|
280
|
+
# ==== Example 2 response
|
|
281
|
+
#
|
|
282
|
+
# {
|
|
283
|
+
# "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F"=>{
|
|
284
|
+
# "amount"=>"6000000000000000000000000000000",
|
|
285
|
+
# "source"=>"xrb_3dcfozsmekr1tr9skf1oa5wbgmxt81qepfdnt7zicq5x3hk65fg4fqj58mbr"
|
|
286
|
+
# }
|
|
287
|
+
# }
|
|
52
288
|
def pending(limit: 1000, detailed: false)
|
|
53
289
|
account_required!
|
|
54
290
|
|
|
@@ -59,6 +295,12 @@ class Nanook
|
|
|
59
295
|
Nanook::Util.coerce_empty_string_to_type(response, (detailed ? Hash : Array))
|
|
60
296
|
end
|
|
61
297
|
|
|
298
|
+
# Returns the account's weight. Weight is determined by the
|
|
299
|
+
# account's balance, and represents the voting weight that account
|
|
300
|
+
# has on the network if it is a representative.
|
|
301
|
+
#
|
|
302
|
+
# ==== Example response
|
|
303
|
+
# 1
|
|
62
304
|
def weight
|
|
63
305
|
account_required!
|
|
64
306
|
rpc(:account_weight)[:weight]
|