Closed leonacostaok closed 9 years ago
Hola Leon https://github.com/laderuner/fermat/tree/master/DMP/plugin/world/fermat-dmp-plugin-world-crypto-index-bitdubai/src/main/java/com/bitdubai/fermat_dmp_plugin/layer/world/crypto_index/developer/bitdubai/version_1/structure Ahi Va un avance de como estoy resolviendo la issues. Estoy definiendo una clase para cada servicio de API ya que obviamente los mismo difieren mucho entre ellos y además algunas dan un servicio mas completo que otras. También está el código para Deserializar los JSON pero no esta probado. No se como lo ven ustedes cualquier sugerencia o corrección obviamente siempre bienvenida.
@laderuner Ok, ahí vi, ¿Pudiste probar que las API's devuelvan la información que necesitamos? Es importante que se pueda conseguir la cotización de una moneda para un momento específico (ejemplo ayer a las 14 hs). La mayoría de las API's que revisamos proveían esa información.
Por otro lado, para la organización del código, no pongas todas las clases en el paquete structure.
Create otro package que se llame "providers".
Hace que todas las clases implementen una interfaz interna del plugin que se llame por ejemplo MarketRateProvider (y ubicarla en el package interfaces del plugin).
A esta interfaz agregale un método que sea:
double getHistoricalExchangeRate(CryptoCurrency c, FiatCurrency f , long time)
Que te permita en cada implementación recibir el historical exchange rate..
Como cada provider funciona de forma diferente, la implementación en cada una de las clases va a ser diferente.. Pero el método debiera devolver siempre ese valor, o una excepción.
Fijate que capaz para algunos providers vas a tener que generar algún enum específico por el tema de la nomenclatura de las monedas... Si llega a ser así capaz te conviene armar dentro del package providers un package por provider y así mantener un mejor orden.
Para el cálculo de la mejor cotización, en el pluginroot, que debería poseer el método:
ExchangeRate getHistoricalExchangeRate(CryptoCurrency c, FiatCurrency f , long time)
Podrías ir cargando una lista con todas las cotizaciones de los proveedores, y después hacer un análisis sobre la misma antes de arrojar el resultado.
Para todas las excepciones internas del plugin hacete un package "exceptions" también.
Cualquier cosa avísame.
@lnacosta No he podido verificar si las API devuelven los datos pedidos, no logro correr los test para verificarlo así que en esa parte te voy a pedir ayuda. En los demos que ofrece las API funciona a igual que los JSON así que solo queda ver de que el código devuelva la info consultada. Creo que de todas las API esta https://bter.com/api devuelve por hora, de todas forma tendría que verificarlo. Voy organizar el código me lo indicas. Gracias por todo
@laderuner no hay problema.. Hace las modificaciones que se plantearon, y avísame cuando te parezca hacer una call.
@lnacosta ok gracias
Interfaces
Estructura de Clases
Implementación