1+ var request = require ( 'request' ) ;
2+ var nonce = require ( 'nonce' ) ;
3+ require ( 'dotenv' ) . config ( ) ;
4+ const key = process . env . tradeOgre_api_key
5+ const secret = process . env . tradeOgre_api_secret
6+
7+
8+
9+
10+
11+ console . log ( 'tradeOrge called..1.' + key + secret )
12+ module . exports = function ( ) {
13+ 'use strict' ;
14+ // tradeOgre(key,secret);
15+ // Module dependencies
16+
17+ // Constants
18+ var version = '0.1.0' ,
19+ PUBLIC_API_URL = 'https://tradeogre.com/api/v1' ,
20+ PRIVATE_API_URL = 'https://api.tradeOgre.com/v2/market' ,
21+ USER_AGENT = 'nomp/node-open-mining-portal'
22+
23+ // Constructor
24+ function tradeOgre ( key , secret ) {
25+ console . log ( 'tradeOrge called..2.' + key + ' ' + secret )
26+ // Generate headers signed by this user's key and secret.
27+ // The secret is encapsulated and never exposed
28+ this . _getPrivateHeaders = function ( parameters ) {
29+ var paramString , signature ;
30+
31+ if ( ! key || ! secret ) {
32+ throw 'tradeOgre: Error. API key and secret required' ;
33+ }
34+
35+ // Sort parameters alphabetically and convert to `arg1=foo&arg2=bar`
36+ paramString = Object . keys ( parameters ) . sort ( ) . map ( function ( param ) {
37+ return encodeURIComponent ( param ) + '=' + encodeURIComponent ( parameters [ param ] ) ;
38+ } ) . join ( '&' ) ;
39+
40+ signature = crypto . createHmac ( 'sha512' , secret ) . update ( paramString ) . digest ( 'hex' ) ;
41+
42+ return {
43+ Key : key ,
44+ Sign : signature
45+ } ;
46+ } ;
47+ }
48+
49+ // If a site uses non-trusted SSL certificates, set this value to false
50+ tradeOgre . STRICT_SSL = true ;
51+
52+ // Helper methods
53+ function joinCurrencies ( currencyA , currencyB ) {
54+ return currencyA + '-' + currencyB ;
55+ }
56+
57+ // Prototype
58+ tradeOgre . prototype = {
59+ constructor : tradeOgre ,
60+
61+ // Make an API request
62+ _request : function ( options , callback ) {
63+ if ( ! ( 'headers' in options ) ) {
64+ options . headers = { } ;
65+ }
66+
67+ options . headers [ 'User-Agent' ] = USER_AGENT ;
68+ options . json = true ;
69+ options . strictSSL = tradeOgre . STRICT_SSL ;
70+
71+ request ( options , function ( err , response , body ) {
72+ callback ( err , body ) ;
73+ } ) ;
74+
75+ return this ;
76+ } ,
77+
78+ // Make a public API request
79+ _public : function ( parameters , callback ) {
80+ var options = {
81+ method : 'GET' ,
82+ url : PUBLIC_API_URL ,
83+ qs : parameters
84+ } ;
85+ console . log ( 'options,: ' + options )
86+ return this . _request ( options , callback ) ;
87+ } ,
88+
89+ // Make a private API request
90+ _private : function ( parameters , callback ) {
91+ var options ;
92+
93+ parameters . nonce = nonce ( ) ;
94+ options = {
95+ method : 'POST' ,
96+ url : PRIVATE_API_URL ,
97+ form : parameters ,
98+ headers : this . _getPrivateHeaders ( parameters )
99+ } ;
100+
101+ return this . _request ( options , callback ) ;
102+ } ,
103+
104+
105+ /////
106+
107+
108+ // PUBLIC METHODS
109+
110+ getTicker : function ( callback ) {
111+ var options = {
112+ method : 'GET' ,
113+ url : PUBLIC_API_URL + '/markets' ,
114+ qs : null
115+ } ;
116+
117+ return this . _request ( options , callback ) ;
118+ } ,
119+
120+ getBuyOrderBook : function ( currencyA , currencyB , callback ) {
121+ var options = {
122+ method : 'GET' ,
123+ url : PUBLIC_API_URL + '/orders/' + joinCurrencies ( currencyA , currencyB ) ,
124+ qs : null
125+ } ;
126+
127+ return this . _request ( options , callback ) ;
128+ } ,
129+
130+ getOrderBook : function ( currencyA , currencyB , callback ) {
131+ var parameters = {
132+ command : 'returnOrderBook' ,
133+ currencyPair : joinCurrencies ( currencyA , currencyB )
134+ } ;
135+
136+ return this . _public ( parameters , callback ) ;
137+ } ,
138+
139+ getTradeHistory : function ( currencyA , currencyB , callback ) {
140+ var parameters = {
141+ command : 'returnTradeHistory' ,
142+ currencyPair : joinCurrencies ( currencyA , currencyB )
143+ } ;
144+
145+ return this . _public ( parameters , callback ) ;
146+ } ,
147+
148+
149+ /////
150+
151+
152+ // PRIVATE METHODS
153+
154+ myBalances : function ( callback ) {
155+ var parameters = {
156+ command : 'returnBalances'
157+ } ;
158+
159+ return this . _private ( parameters , callback ) ;
160+ } ,
161+
162+ myOpenOrders : function ( currencyA , currencyB , callback ) {
163+ var parameters = {
164+ command : 'returnOpenOrders' ,
165+ currencyPair : joinCurrencies ( currencyA , currencyB )
166+ } ;
167+
168+ return this . _private ( parameters , callback ) ;
169+ } ,
170+
171+ myTradeHistory : function ( currencyA , currencyB , callback ) {
172+ var parameters = {
173+ command : 'returnTradeHistory' ,
174+ currencyPair : joinCurrencies ( currencyA , currencyB )
175+ } ;
176+
177+ return this . _private ( parameters , callback ) ;
178+ } ,
179+
180+ buy : function ( currencyA , currencyB , rate , amount , callback ) {
181+ var parameters = {
182+ command : 'buy' ,
183+ currencyPair : joinCurrencies ( currencyA , currencyB ) ,
184+ rate : rate ,
185+ amount : amount
186+ } ;
187+
188+ return this . _private ( parameters , callback ) ;
189+ } ,
190+
191+ sell : function ( currencyA , currencyB , rate , amount , callback ) {
192+ var parameters = {
193+ command : 'sell' ,
194+ currencyPair : joinCurrencies ( currencyA , currencyB ) ,
195+ rate : rate ,
196+ amount : amount
197+ } ;
198+
199+ return this . _private ( parameters , callback ) ;
200+ } ,
201+
202+ cancelOrder : function ( currencyA , currencyB , orderNumber , callback ) {
203+ var parameters = {
204+ command : 'cancelOrder' ,
205+ currencyPair : joinCurrencies ( currencyA , currencyB ) ,
206+ orderNumber : orderNumber
207+ } ;
208+
209+ return this . _private ( parameters , callback ) ;
210+ } ,
211+
212+ withdraw : function ( currency , amount , address , callback ) {
213+ var parameters = {
214+ command : 'withdraw' ,
215+ currency : currency ,
216+ amount : amount ,
217+ address : address
218+ } ;
219+
220+ return this . _private ( parameters , callback ) ;
221+ }
222+ } ;
223+
224+ return tradeOgre ;
225+ } ( ) ;
0 commit comments