@@ -391,22 +391,22 @@ pub trait Alp : Exchange {
391391 }
392392 }
393393 let mut dynamic_calls: Vec < ( String , String , String ) > = vec ! [ ] ;
394- if let Value :: Json ( serde_json:: Value :: Object ( api_map) ) = self . describe ( ) . get ( "api" . into ( ) ) {
394+ if let Value :: Json ( serde_json:: Value :: Object ( api_map) ) = < Self as Alp > :: describe ( self ) . get ( "api" . into ( ) ) {
395395 for ( api_name, node) in api_map { collect_routes ( & node, & api_name, & mut dynamic_calls) ; }
396396 }
397397 for token in [ "tickers" , "ticker/24hr" , "ticker" , "bookticker" ] {
398398 for ( api_name, method_name, path_name) in & dynamic_calls {
399399 if method_name. as_str ( ) != "GET" || path_name. contains ( '{' ) { continue ; }
400400 let p = path_name. to_lowercase ( ) ;
401401 if p == token || p. contains ( token) {
402- let rv = self . request ( path_name. clone ( ) . into ( ) , api_name. clone ( ) . into ( ) , method_name. clone ( ) . into ( ) , params. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
402+ let rv = < Self as Alp > :: request ( self , path_name. clone ( ) . into ( ) , api_name. clone ( ) . into ( ) , method_name. clone ( ) . into ( ) , params. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
403403 if !rv. is_undefined ( ) { return rv; }
404404 }
405405 }
406406 }
407407 let candidates = vec ! [ ( "public" , "GET" , "ticker/24hr" ) , ( "public" , "GET" , "tickers" ) , ( "public" , "GET" , "ticker" ) ] ;
408408 for ( api_name, method_name, path_name) in candidates {
409- let rv = self . request ( path_name. into ( ) , api_name. into ( ) , method_name. into ( ) , params. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
409+ let rv = < Self as Alp > :: request ( self , path_name. into ( ) , api_name. into ( ) , method_name. into ( ) , params. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
410410 if !rv. is_undefined ( ) { return rv; }
411411 }
412412 Value :: Undefined
@@ -422,22 +422,22 @@ pub trait Alp : Exchange {
422422 let mut request = if params. is_object ( ) { params. clone ( ) } else { Value :: new_object ( ) } ;
423423 request. set ( "symbol" . into ( ) , symbol. clone ( ) ) ;
424424 let mut dynamic_calls: Vec < ( String , String , String ) > = vec ! [ ] ;
425- if let Value :: Json ( serde_json:: Value :: Object ( api_map) ) = self . describe ( ) . get ( "api" . into ( ) ) {
425+ if let Value :: Json ( serde_json:: Value :: Object ( api_map) ) = < Self as Alp > :: describe ( self ) . get ( "api" . into ( ) ) {
426426 for ( api_name, node) in api_map { collect_routes ( & node, & api_name, & mut dynamic_calls) ; }
427427 }
428428 for token in [ "ticker/24hr" , "ticker" , "ticker/price" , "bookticker" , "tickers" ] {
429429 for ( api_name, method_name, path_name) in & dynamic_calls {
430430 if method_name. as_str ( ) != "GET" || path_name. contains ( '{' ) { continue ; }
431431 let p = path_name. to_lowercase ( ) ;
432432 if p == token || p. contains ( token) {
433- let rv = self . request ( path_name. clone ( ) . into ( ) , api_name. clone ( ) . into ( ) , method_name. clone ( ) . into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
433+ let rv = < Self as Alp > :: request ( self , path_name. clone ( ) . into ( ) , api_name. clone ( ) . into ( ) , method_name. clone ( ) . into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
434434 if !rv. is_undefined ( ) { return rv; }
435435 }
436436 }
437437 }
438438 let candidates = vec ! [ ( "public" , "GET" , "ticker/24hr" ) , ( "public" , "GET" , "ticker" ) , ( "public" , "GET" , "ticker/price" ) ] ;
439439 for ( api_name, method_name, path_name) in candidates {
440- let rv = self . request ( path_name. into ( ) , api_name. into ( ) , method_name. into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
440+ let rv = < Self as Alp > :: request ( self , path_name. into ( ) , api_name. into ( ) , method_name. into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
441441 if !rv. is_undefined ( ) { return rv; }
442442 }
443443 Value :: Undefined
@@ -497,22 +497,22 @@ pub trait Alp : Exchange {
497497 request. set ( "symbol" . into ( ) , symbol. clone ( ) ) ;
498498 if limit. is_nonnullish ( ) { request. set ( "limit" . into ( ) , limit. clone ( ) ) ; }
499499 let mut dynamic_calls: Vec < ( String , String , String ) > = vec ! [ ] ;
500- if let Value :: Json ( serde_json:: Value :: Object ( api_map) ) = self . describe ( ) . get ( "api" . into ( ) ) {
500+ if let Value :: Json ( serde_json:: Value :: Object ( api_map) ) = < Self as Alp > :: describe ( self ) . get ( "api" . into ( ) ) {
501501 for ( api_name, node) in api_map { collect_routes ( & node, & api_name, & mut dynamic_calls) ; }
502502 }
503503 for token in [ "depth" , "orderbook" , "order_book" ] {
504504 for ( api_name, method_name, path_name) in & dynamic_calls {
505505 if method_name. as_str ( ) != "GET" || path_name. contains ( '{' ) { continue ; }
506506 let p = path_name. to_lowercase ( ) ;
507507 if p == token || p. contains ( token) {
508- let rv = self . request ( path_name. clone ( ) . into ( ) , api_name. clone ( ) . into ( ) , method_name. clone ( ) . into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
508+ let rv = < Self as Alp > :: request ( self , path_name. clone ( ) . into ( ) , api_name. clone ( ) . into ( ) , method_name. clone ( ) . into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
509509 if !rv. is_undefined ( ) { return rv; }
510510 }
511511 }
512512 }
513513 let candidates = vec ! [ ( "public" , "GET" , "depth" ) , ( "public" , "GET" , "orderbook" ) , ( "public" , "GET" , "order_book" ) ] ;
514514 for ( api_name, method_name, path_name) in candidates {
515- let rv = self . request ( path_name. into ( ) , api_name. into ( ) , method_name. into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
515+ let rv = < Self as Alp > :: request ( self , path_name. into ( ) , api_name. into ( ) , method_name. into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
516516 if !rv. is_undefined ( ) { return rv; }
517517 }
518518 Value :: Undefined
@@ -578,7 +578,7 @@ pub trait Alp : Exchange {
578578 if limit. is_nonnullish ( ) { request. set ( "limit" . into ( ) , limit. clone ( ) ) ; }
579579 let candidates = vec ! [ ( "public" , "GET" , "trades" ) , ( "public" , "GET" , "recent_trades" ) , ( "public" , "GET" , "aggTrades" ) ] ;
580580 for ( api_name, method_name, path_name) in candidates {
581- let rv = self . request ( path_name. into ( ) , api_name. into ( ) , method_name. into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
581+ let rv = < Self as Alp > :: request ( self , path_name. into ( ) , api_name. into ( ) , method_name. into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
582582 if !rv. is_undefined ( ) { return rv; }
583583 }
584584 Value :: Undefined
@@ -672,7 +672,7 @@ pub trait Alp : Exchange {
672672 "amount" : self . safe_number( transaction. clone( ) , Value :: from( "amount" ) , Value :: Undefined ) ,
673673 "txid" : Value :: Undefined ,
674674 "type" : Value :: Undefined ,
675- "status" : self . parse_transaction_status( status_id. clone( ) ) ,
675+ "status" : < Self as Alp > :: parse_transaction_status( self , status_id. clone( ) ) ,
676676 "comment" : Value :: Undefined ,
677677 "internal" : Value :: Undefined ,
678678 "fee" : Value :: Undefined ,
@@ -719,22 +719,22 @@ pub trait Alp : Exchange {
719719 if since. is_nonnullish ( ) { request. set ( "since" . into ( ) , since. clone ( ) ) ; request. set ( "startTime" . into ( ) , since. clone ( ) ) ; }
720720 if limit. is_nonnullish ( ) { request. set ( "limit" . into ( ) , limit. clone ( ) ) ; }
721721 let mut dynamic_calls: Vec < ( String , String , String ) > = vec ! [ ] ;
722- if let Value :: Json ( serde_json:: Value :: Object ( api_map) ) = self . describe ( ) . get ( "api" . into ( ) ) {
722+ if let Value :: Json ( serde_json:: Value :: Object ( api_map) ) = < Self as Alp > :: describe ( self ) . get ( "api" . into ( ) ) {
723723 for ( api_name, node) in api_map { collect_routes ( & node, & api_name, & mut dynamic_calls) ; }
724724 }
725725 for token in [ "klines" , "candles" , "ohlcv" ] {
726726 for ( api_name, method_name, path_name) in & dynamic_calls {
727727 if method_name. as_str ( ) != "GET" || path_name. contains ( '{' ) { continue ; }
728728 let p = path_name. to_lowercase ( ) ;
729729 if p == token || p. contains ( token) {
730- let rv = self . request ( path_name. clone ( ) . into ( ) , api_name. clone ( ) . into ( ) , method_name. clone ( ) . into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
730+ let rv = < Self as Alp > :: request ( self , path_name. clone ( ) . into ( ) , api_name. clone ( ) . into ( ) , method_name. clone ( ) . into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
731731 if !rv. is_undefined ( ) { return rv; }
732732 }
733733 }
734734 }
735735 let candidates = vec ! [ ( "public" , "GET" , "klines" ) , ( "public" , "GET" , "candles" ) , ( "public" , "GET" , "ohlcv" ) ] ;
736736 for ( api_name, method_name, path_name) in candidates {
737- let rv = self . request ( path_name. into ( ) , api_name. into ( ) , method_name. into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
737+ let rv = < Self as Alp > :: request ( self , path_name. into ( ) , api_name. into ( ) , method_name. into ( ) , request. clone ( ) , Value :: Undefined , Value :: Undefined , Value :: Undefined ) . await ;
738738 if !rv. is_undefined ( ) { return rv; }
739739 }
740740 Value :: Undefined
@@ -763,7 +763,7 @@ pub trait Alp : Exchange {
763763 params = params. or_default ( Value :: new_object ( ) ) ;
764764 self . load_markets ( Value :: Undefined , Value :: Undefined ) . await ;
765765 let mut response: Value = self . dispatch ( "privateGetWallets" . into ( ) , params. clone ( ) , Value :: Undefined ) . await ;
766- return self . parse_balance ( response. clone ( ) ) ;
766+ return < Self as Alp > :: parse_balance ( self , response. clone ( ) ) ;
767767 }
768768
769769 fn parse_order_status ( & self , mut status : Value ) -> Value {
@@ -818,7 +818,7 @@ pub trait Alp : Exchange {
818818 let mut remaining: Value = self . safe_string ( order. clone ( ) , Value :: from ( "amount" ) ) ;
819819 let mut filled: Value = self . safe_string ( order. clone ( ) , Value :: from ( "amount_filled" ) ) ;
820820 let mut amount: Value = self . safe_string ( order. clone ( ) , Value :: from ( "amount_original" ) ) ;
821- let mut status: Value = self . parse_order_status ( self . safe_string ( order. clone ( ) , Value :: from ( "status" ) ) ) ;
821+ let mut status: Value = < Self as Alp > :: parse_order_status ( self , self . safe_string ( order. clone ( ) , Value :: from ( "status" ) ) ) ;
822822 let mut id: Value = self . safe_string_n ( order. clone ( ) , Value :: Json ( serde_json:: Value :: Array ( vec ! [ Value :: from( "oid" ) . into( ) , Value :: from( "id" ) . into( ) , Value :: from( "order" ) . into( ) ] ) ) ) ;
823823 let mut trades: Value = self . safe_value ( order. clone ( ) , Value :: from ( "trades" ) ) ;
824824 let mut side: Value = self . safe_string_2 ( order. clone ( ) , Value :: from ( "my_side" ) , Value :: from ( "type" ) ) ;
@@ -864,7 +864,7 @@ pub trait Alp : Exchange {
864864 if !response. get ( Value :: from ( "success" ) ) . is_truthy ( ) {
865865 panic ! ( r###"InvalidOrder::new(self.get("id".into()) + Value::from(" ") + self.json(response.clone()))"### ) ;
866866 } ;
867- let mut order: Value = self . parse_order ( response. clone ( ) , market. clone ( ) ) ;
867+ let mut order: Value = < Self as Alp > :: parse_order ( self , response. clone ( ) , market. clone ( ) ) ;
868868 let mut order_amount: Value = order. get ( Value :: from ( "amount" ) ) . to_string ( ) ;
869869 amount = if Precise :: string_gt ( order_amount. clone ( ) , Value :: from ( "0" ) ) { order. get ( Value :: from ( "amount" ) ) } else { amount. clone ( ) } ;
870870 order. set ( "amount" . into ( ) , self . parse_number ( amount. clone ( ) , Value :: Undefined ) ) ;
@@ -882,7 +882,7 @@ pub trait Alp : Exchange {
882882 // "order": 63568
883883 // }
884884 //
885- return self . parse_order ( response. clone ( ) , Value :: Undefined ) ;
885+ return < Self as Alp > :: parse_order ( self , response. clone ( ) , Value :: Undefined ) ;
886886 }
887887
888888 async fn fetch_order ( & mut self , mut id : Value , mut symbol : Value , mut params : Value ) -> Value {
@@ -892,7 +892,7 @@ pub trait Alp : Exchange {
892892 "id" : id
893893 } ) ) ) . unwrap ( ) ) ;
894894 let mut order: Value = self . private_get_order_id ( extend_2 ( request. clone ( ) , params. clone ( ) ) ) . await ;
895- return self . parse_order ( order. clone ( ) , Value :: Undefined ) ;
895+ return < Self as Alp > :: parse_order ( self , order. clone ( ) , Value :: Undefined ) ;
896896 }
897897
898898 async fn fetch_orders ( & mut self , mut symbol : Value , mut since : Value , mut limit : Value , mut params : Value ) -> Value {
@@ -916,15 +916,15 @@ pub trait Alp : Exchange {
916916 let mut request: Value = Value :: Json ( normalize ( & Value :: Json ( json ! ( {
917917 "status" : "1"
918918 } ) ) ) . unwrap ( ) ) ;
919- return self . fetch_orders ( symbol. clone ( ) , since. clone ( ) , limit. clone ( ) , extend_2 ( request. clone ( ) , params. clone ( ) ) ) . await ;
919+ return < Self as Alp > :: fetch_orders ( self , symbol. clone ( ) , since. clone ( ) , limit. clone ( ) , extend_2 ( request. clone ( ) , params. clone ( ) ) ) . await ;
920920 }
921921
922922 async fn fetch_closed_orders ( & mut self , mut symbol : Value , mut since : Value , mut limit : Value , mut params : Value ) -> Value {
923923 params = params. or_default ( Value :: new_object ( ) ) ;
924924 let mut request: Value = Value :: Json ( normalize ( & Value :: Json ( json ! ( {
925925 "status" : "3"
926926 } ) ) ) . unwrap ( ) ) ;
927- return self . fetch_orders ( symbol. clone ( ) , since. clone ( ) , limit. clone ( ) , extend_2 ( request. clone ( ) , params. clone ( ) ) ) . await ;
927+ return < Self as Alp > :: fetch_orders ( self , symbol. clone ( ) , since. clone ( ) , limit. clone ( ) , extend_2 ( request. clone ( ) , params. clone ( ) ) ) . await ;
928928 }
929929
930930 async fn fetch_my_trades ( & mut self , mut symbol : Value , mut since : Value , mut limit : Value , mut params : Value ) -> Value {
@@ -975,7 +975,7 @@ pub trait Alp : Exchange {
975975 } ;
976976 headers. set ( "X-KEY" . into ( ) , self . get ( "apiKey" . into ( ) ) ) ;
977977 headers. set ( "X-SIGN" . into ( ) , self . hmac ( self . encode ( payload. clone ( ) ) , self . encode ( self . get ( "secret" . into ( ) ) ) , sha256. clone ( ) ) ) ;
978- headers. set ( "X-NONCE" . into ( ) , self . nonce ( ) . to_string ( ) ) ;
978+ headers. set ( "X-NONCE" . into ( ) , < Self as Alp > :: nonce ( self ) . to_string ( ) ) ;
979979 } ;
980980 return Value :: Json ( normalize ( & Value :: Json ( json ! ( {
981981 "url" : url,
0 commit comments