PageRenderTime 53ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/DeepBitView/trunk/grails-app/services/deepbitview/MtgoxService.groovy

http://deepbitview.googlecode.com/
Groovy | 144 lines | 77 code | 29 blank | 38 comment | 17 complexity | 1519629a112423766a95b92e6658428e MD5 | raw file
  1. package deepbitview
  2. /**
  3. * this is a service to access and trade with the mtgox online trading system.
  4. */
  5. class MtgoxService {
  6. static transactional = true
  7. /**
  8. * returns the current account balnce
  9. * @return
  10. */
  11. def getCurrentBalance() {
  12. if (MtGoxAccessHandler.isConfigured()) {
  13. def values = executeQuery([name: MtGoxAccessHandler.getUserName(), pass: MtGoxAccessHandler.getPassword()], "/code/getFunds.php")
  14. def result = [usd: values.usds, coins: values.btcs]
  15. log.info("fetching current balance: ${values}")
  16. if (result.usd == null | result.coins == false) {
  17. return false
  18. }
  19. return result
  20. }
  21. else {
  22. return false
  23. }
  24. }
  25. /**
  26. *
  27. * places as buy order with the system
  28. * @param amount
  29. * @param amount
  30. * @return
  31. */
  32. def placeBuyOrder(double amountOfCoins, double priceToBuyAt) {
  33. if (MtGoxAccessHandler.isConfigured()) {
  34. def values = executeQuery([name: MtGoxAccessHandler.getUserName(), pass: MtGoxAccessHandler.getPassword(), amount: amountOfCoins, price: priceToBuyAt], "/code/buyBTC.php")
  35. log.info("place buy order: ${values}")
  36. return values.oid
  37. }
  38. else {
  39. return false
  40. }
  41. }
  42. /**
  43. * places a sell order
  44. * @param amountOfCoins
  45. * @param priceToSellAt
  46. * @return
  47. */
  48. def placeSellOrder(double amountOfCoins, double priceToSellAt) {
  49. if (MtGoxAccessHandler.isConfigured()) {
  50. def values = executeQuery([name: MtGoxAccessHandler.getUserName(), pass: MtGoxAccessHandler.getPassword(), amount: amountOfCoins, price: priceToSellAt], "/code/sellBTC.php")
  51. log.info("place sell order: ${values}")
  52. return values.oid
  53. }
  54. else {
  55. return false
  56. }
  57. }
  58. /**
  59. * cancles an order
  60. * @return
  61. */
  62. def cancelBuyOrder(String oid) {
  63. if (MtGoxAccessHandler.isConfigured()) {
  64. def values = executeQuery([name: MtGoxAccessHandler.getUserName(), pass: MtGoxAccessHandler.getPassword(), oid: oid, type: 2], "/code/cancelOrder.php")
  65. log.info("trying to cancel buyorder: ${values}")
  66. return values
  67. }
  68. else {
  69. return false
  70. }
  71. }
  72. /**
  73. * cancels an order
  74. * @return
  75. */
  76. def cancelSellOrder() {
  77. if (MtGoxAccessHandler.isConfigured()) {
  78. def values = executeQuery([name: MtGoxAccessHandler.getUserName(), pass: MtGoxAccessHandler.getPassword(), oid: oid, type: 2], "/code/cancelOrder.php")
  79. log.info("trying to cancel sell order: ${values}")
  80. if (values.error) {
  81. return false
  82. }
  83. return values
  84. }
  85. else {
  86. return false
  87. }
  88. }
  89. /**
  90. * lists all the open orders
  91. * @return
  92. */
  93. def listOpenOrders() {
  94. if (MtGoxAccessHandler.isConfigured()) {
  95. def values = executeQuery([name: MtGoxAccessHandler.getUserName(), pass: MtGoxAccessHandler.getPassword()], "/code/getOrders.php")
  96. log.info("received orders: ${values}")
  97. if (values.error) {
  98. return false
  99. }
  100. return values.orders
  101. }
  102. else {
  103. return false
  104. }
  105. }
  106. /**
  107. * executes a query
  108. * @param parameter
  109. * @param url
  110. * @return
  111. */
  112. private executeQuery(Map parameter, String path) {
  113. return JSONQueryUtil.executeQuery("https://mtgox.com/",parameter,path)
  114. }
  115. }