Is this Bittrex client available somewhere to play with?

Regards!

Esteban A. Maringolo

2017-12-13 3:59 GMT-03:00 Ben Coman <b...@openinworld.com>:

>
> With...
>   Object subclass: #BittrexResponse
> instanceVariableNames: 'success message result'
> classVariableNames: ''
> package: 'Bittrex'
>
>   Object subclass: #BittrexMarketSummary
> instanceVariableNames: 'MarketName High Low Volume Last
>                 BaseVolume TimeStamp Bid Ask OpenBuyOrders
>                 OpenSellOrders PrevDay Created DisplayMarketName'
> classVariableNames: ''
> package: 'Bittrex'
>
> this code works great when the response holds good data...
>   ZnClient new
> url: 'https://bittrex.com/api/v1.1/public/getmarketSummary?market=BTC-LTC
> ';
> enforceHttpSuccess: true;
> accept: ZnMimeType applicationJson;
> contentReader: [ :entity | |reader|
> reader := (NeoJSONReader on: entity readStream).
> reader for: BittrexResponse do: [:m|
> m mapInstVar: #success.
> m mapInstVar: #message.
> (m mapInstVar: #result) valueSchema: #ResultArray].
> reader for: #ResultArray customDo: [ :mapping |
>                        mapping listOfElementSchema: BittrexMarketSummary ].
> reader mapInstVarsFor: BittrexMarketSummary.
>       reader nextAs: BittrexResponse ];
>    get.
>
> i.e. a raw response looking like this....
> (ZnClient new
> url: 'https://bittrex.com/api/v1.1/public/getmarketsummary?market=BTC-LTC
> <https://bittrex.com/api/v1.1/public/getticker?market=BTC-LTC>';
> get) inspect.
> ==> "'{""success"":true,""message"":"",""result"":[{""
> MarketName"":""BTC-LTC"",""High"":0.01982450,""Low"":0.
> 01285257,""Volume"":1436429.81313360,""Last"":0.01842000,"
> "BaseVolume"":24841.17217724,""TimeStamp"":""2017-12-13T05:
> 56:25.937"",""Bid"":0.01840001,""Ask"":0.01842000,""
> OpenBuyOrders"":10140,""OpenSellOrders"":6306,""PrevDay"":0.01439800,""
> Created"":""2014-02-13T00:00:00""}]}'"
>
>
> But for bad response looking like this...
> (ZnClient new
> url: 'https://bittrex.com/api/v1.1/public/getmarketsummary?market=INVALID
> ';
> get) inspect.
> ==> {"success":false,"message":"INVALID_MARKET","result":null}
>
> the JSON handling code fails deep in the call stack with an error
>      "NeoJSONParseError: [ expected"
> which is not so friendly for users of the Bittrex library.
>
> What are the different/recommended approaches with Zinc
> for catching JSON errors such that I can pass "message"
> as a higher level Error up the stack to the Bittrex user.
>
>  cheers -ben
>

Reply via email to