balanced 0.8.2 → 1.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (359) hide show
  1. checksums.yaml +4 -4
  2. data/.rbenv-version +1 -1
  3. data/.ruby-version +1 -1
  4. data/Gemfile +7 -3
  5. data/README.md +2 -10
  6. data/Rakefile +4 -18
  7. data/balanced.gemspec +8 -10
  8. data/lib/balanced.rb +28 -28
  9. data/lib/balanced/client.rb +15 -6
  10. data/lib/balanced/error.rb +21 -12
  11. data/lib/balanced/pager.rb +66 -25
  12. data/lib/balanced/resources.rb +18 -17
  13. data/lib/balanced/resources/api_key.rb +4 -0
  14. data/lib/balanced/resources/bank_account.rb +26 -75
  15. data/lib/balanced/resources/callback.rb +2 -0
  16. data/lib/balanced/resources/card.rb +15 -65
  17. data/lib/balanced/resources/card_hold.rb +38 -0
  18. data/lib/balanced/resources/credit.rb +6 -50
  19. data/lib/balanced/resources/customer.rb +33 -71
  20. data/lib/balanced/resources/debit.rb +6 -14
  21. data/lib/balanced/resources/event.rb +6 -0
  22. data/lib/balanced/resources/funding_instrument.rb +11 -0
  23. data/lib/balanced/resources/hypermedia.rb +28 -0
  24. data/lib/balanced/resources/marketplace.rb +5 -203
  25. data/lib/balanced/resources/order.rb +71 -0
  26. data/lib/balanced/resources/refund.rb +2 -7
  27. data/lib/balanced/resources/resource.rb +169 -106
  28. data/lib/balanced/resources/reversal.rb +2 -8
  29. data/lib/balanced/resources/transfer.rb +11 -0
  30. data/lib/balanced/response/balanced_exception_middleware.rb +2 -2
  31. data/lib/balanced/utils.rb +47 -14
  32. data/lib/balanced/version.rb +1 -1
  33. data/scenario.cache +526 -380
  34. data/scenarios/api_key_create/definition.rb +1 -0
  35. data/scenarios/api_key_create/request.rb +2 -0
  36. data/scenarios/api_key_create/ruby.mako +21 -0
  37. data/scenarios/api_key_delete/definition.rb +1 -0
  38. data/scenarios/api_key_delete/request.rb +3 -0
  39. data/scenarios/api_key_delete/ruby.mako +12 -0
  40. data/scenarios/api_key_list/definition.rb +1 -0
  41. data/scenarios/api_key_list/request.rb +2 -0
  42. data/scenarios/api_key_list/ruby.mako +28 -0
  43. data/scenarios/api_key_show/definition.rb +1 -0
  44. data/scenarios/api_key_show/request.rb +2 -0
  45. data/scenarios/api_key_show/ruby.mako +18 -0
  46. data/scenarios/{customer_add_bank_account → bank_account_associate_to_customer}/definition.rb +0 -0
  47. data/scenarios/bank_account_associate_to_customer/request.rb +3 -0
  48. data/scenarios/bank_account_associate_to_customer/ruby.mako +49 -0
  49. data/scenarios/bank_account_create/definition.rb +1 -1
  50. data/scenarios/bank_account_create/request.rb +1 -1
  51. data/scenarios/bank_account_create/ruby.mako +44 -7
  52. data/scenarios/{credit_create_existing_bank_account → bank_account_credit}/definition.rb +0 -0
  53. data/scenarios/bank_account_credit/request.rb +3 -0
  54. data/scenarios/bank_account_credit/ruby.mako +42 -0
  55. data/scenarios/bank_account_debit/definition.rb +1 -0
  56. data/scenarios/bank_account_debit/request.rb +5 -0
  57. data/scenarios/bank_account_debit/ruby.mako +50 -0
  58. data/scenarios/bank_account_delete/request.rb +1 -1
  59. data/scenarios/bank_account_delete/ruby.mako +5 -3
  60. data/scenarios/bank_account_list/ruby.mako +76 -2
  61. data/scenarios/bank_account_show/definition.rb +1 -1
  62. data/scenarios/bank_account_show/request.rb +1 -1
  63. data/scenarios/bank_account_show/ruby.mako +41 -5
  64. data/scenarios/bank_account_update/definition.rb +1 -0
  65. data/scenarios/bank_account_update/request.rb +6 -0
  66. data/scenarios/bank_account_update/ruby.mako +56 -0
  67. data/scenarios/bank_account_verification_create/request.rb +1 -1
  68. data/scenarios/bank_account_verification_create/ruby.mako +20 -3
  69. data/scenarios/bank_account_verification_show/definition.rb +1 -1
  70. data/scenarios/bank_account_verification_show/request.rb +1 -1
  71. data/scenarios/bank_account_verification_show/ruby.mako +21 -4
  72. data/scenarios/bank_account_verification_update/definition.rb +1 -1
  73. data/scenarios/bank_account_verification_update/request.rb +5 -5
  74. data/scenarios/bank_account_verification_update/ruby.mako +24 -8
  75. data/scenarios/callback_create/definition.rb +1 -1
  76. data/scenarios/callback_create/request.rb +2 -2
  77. data/scenarios/callback_create/ruby.mako +22 -0
  78. data/scenarios/callback_delete/definition.rb +1 -1
  79. data/scenarios/callback_delete/request.rb +2 -2
  80. data/scenarios/callback_delete/ruby.mako +12 -0
  81. data/scenarios/callback_list/definition.rb +1 -1
  82. data/scenarios/callback_list/request.rb +1 -2
  83. data/scenarios/callback_list/ruby.mako +20 -0
  84. data/scenarios/callback_show/definition.rb +1 -1
  85. data/scenarios/callback_show/request.rb +1 -1
  86. data/scenarios/callback_show/ruby.mako +20 -0
  87. data/scenarios/{customer_add_card → card_associate_to_customer}/definition.rb +0 -0
  88. data/scenarios/card_associate_to_customer/request.rb +3 -0
  89. data/scenarios/card_associate_to_customer/ruby.mako +49 -0
  90. data/scenarios/card_create/request.rb +1 -2
  91. data/scenarios/card_create/ruby.mako +44 -7
  92. data/scenarios/card_debit/definition.rb +1 -0
  93. data/scenarios/card_debit/request.rb +5 -0
  94. data/scenarios/card_debit/ruby.mako +49 -0
  95. data/scenarios/card_delete/request.rb +1 -1
  96. data/scenarios/card_delete/ruby.mako +5 -3
  97. data/scenarios/card_hold_capture/definition.rb +1 -0
  98. data/scenarios/card_hold_capture/request.rb +5 -0
  99. data/scenarios/card_hold_capture/ruby.mako +49 -0
  100. data/scenarios/card_hold_create/definition.rb +1 -0
  101. data/scenarios/card_hold_create/request.rb +5 -0
  102. data/scenarios/card_hold_create/ruby.mako +38 -0
  103. data/scenarios/card_hold_list/definition.rb +1 -0
  104. data/scenarios/card_hold_list/request.rb +2 -0
  105. data/scenarios/card_hold_list/ruby.mako +60 -0
  106. data/scenarios/card_hold_show/definition.rb +1 -0
  107. data/scenarios/card_hold_show/request.rb +2 -0
  108. data/scenarios/card_hold_show/ruby.mako +36 -0
  109. data/scenarios/card_hold_update/definition.rb +1 -0
  110. data/scenarios/card_hold_update/request.rb +7 -0
  111. data/scenarios/card_hold_update/ruby.mako +42 -0
  112. data/scenarios/card_hold_void/definition.rb +1 -0
  113. data/scenarios/card_hold_void/request.rb +3 -0
  114. data/scenarios/card_hold_void/ruby.mako +36 -0
  115. data/scenarios/card_list/definition.rb +1 -1
  116. data/scenarios/card_list/request.rb +1 -1
  117. data/scenarios/card_list/ruby.mako +78 -5
  118. data/scenarios/card_show/definition.rb +1 -1
  119. data/scenarios/card_show/request.rb +1 -1
  120. data/scenarios/card_show/ruby.mako +42 -4
  121. data/scenarios/card_update/definition.rb +1 -1
  122. data/scenarios/card_update/request.rb +1 -1
  123. data/scenarios/card_update/ruby.mako +45 -4
  124. data/scenarios/credit_list/request.rb +1 -3
  125. data/scenarios/credit_list/ruby.mako +34 -4
  126. data/scenarios/{credit_bank_account_list → credit_list_bank_account}/definition.rb +0 -0
  127. data/scenarios/credit_list_bank_account/request.rb +3 -0
  128. data/scenarios/credit_list_bank_account/ruby.mako +13 -0
  129. data/scenarios/credit_show/definition.rb +1 -1
  130. data/scenarios/credit_show/request.rb +1 -3
  131. data/scenarios/credit_show/ruby.mako +35 -5
  132. data/scenarios/{credit_create_new_bank_account → credit_update}/definition.rb +0 -0
  133. data/scenarios/credit_update/request.rb +7 -0
  134. data/scenarios/credit_update/ruby.mako +48 -0
  135. data/scenarios/customer_create/request.rb +4 -1
  136. data/scenarios/customer_create/ruby.mako +60 -3
  137. data/scenarios/customer_delete/request.rb +1 -1
  138. data/scenarios/customer_delete/ruby.mako +4 -2
  139. data/scenarios/customer_list/definition.rb +1 -0
  140. data/scenarios/customer_list/request.rb +2 -0
  141. data/scenarios/customer_list/ruby.mako +105 -0
  142. data/scenarios/customer_show/definition.rb +1 -0
  143. data/scenarios/customer_show/request.rb +2 -0
  144. data/scenarios/customer_show/ruby.mako +58 -0
  145. data/scenarios/customer_update/definition.rb +1 -0
  146. data/scenarios/customer_update/request.rb +7 -0
  147. data/scenarios/customer_update/ruby.mako +64 -0
  148. data/scenarios/debit_list/request.rb +1 -3
  149. data/scenarios/debit_list/ruby.mako +70 -4
  150. data/scenarios/debit_show/definition.rb +1 -1
  151. data/scenarios/debit_show/request.rb +1 -1
  152. data/scenarios/debit_show/ruby.mako +39 -4
  153. data/scenarios/debit_update/definition.rb +1 -1
  154. data/scenarios/debit_update/request.rb +1 -1
  155. data/scenarios/debit_update/ruby.mako +39 -4
  156. data/scenarios/event_list/definition.rb +1 -1
  157. data/scenarios/event_list/request.rb +1 -2
  158. data/scenarios/event_list/ruby.mako +54 -5
  159. data/scenarios/event_show/definition.rb +1 -1
  160. data/scenarios/event_show/request.rb +1 -1
  161. data/scenarios/event_show/ruby.mako +54 -4
  162. data/scenarios/helpers.rb +29 -2
  163. data/scenarios/order_create/definition.rb +1 -0
  164. data/scenarios/order_create/request.rb +5 -0
  165. data/scenarios/order_create/ruby.mako +46 -0
  166. data/scenarios/order_list/definition.rb +1 -0
  167. data/scenarios/order_list/request.rb +2 -0
  168. data/scenarios/order_list/ruby.mako +42 -0
  169. data/scenarios/order_show/definition.rb +1 -0
  170. data/scenarios/order_show/request.rb +2 -0
  171. data/scenarios/order_show/ruby.mako +44 -0
  172. data/scenarios/order_update/definition.rb +1 -0
  173. data/scenarios/order_update/request.rb +7 -0
  174. data/scenarios/order_update/ruby.mako +50 -0
  175. data/scenarios/refund_create/definition.rb +1 -1
  176. data/scenarios/refund_create/request.rb +2 -1
  177. data/scenarios/refund_create/ruby.mako +33 -5
  178. data/scenarios/refund_list/request.rb +1 -3
  179. data/scenarios/refund_list/ruby.mako +30 -4
  180. data/scenarios/refund_show/definition.rb +1 -1
  181. data/scenarios/refund_show/request.rb +1 -1
  182. data/scenarios/refund_show/ruby.mako +32 -4
  183. data/scenarios/refund_update/definition.rb +1 -1
  184. data/scenarios/refund_update/request.rb +1 -1
  185. data/scenarios/refund_update/ruby.mako +32 -4
  186. data/scenarios/render_mako.rb +59 -4
  187. data/scenarios/reversal_create/definition.rb +1 -0
  188. data/scenarios/reversal_create/request.rb +9 -0
  189. data/scenarios/reversal_create/ruby.mako +45 -0
  190. data/scenarios/reversal_list/definition.rb +1 -0
  191. data/scenarios/reversal_list/request.rb +2 -0
  192. data/scenarios/reversal_list/ruby.mako +36 -0
  193. data/scenarios/reversal_show/definition.rb +1 -0
  194. data/scenarios/reversal_show/request.rb +2 -0
  195. data/scenarios/reversal_show/ruby.mako +37 -0
  196. data/scenarios/reversal_update/definition.rb +1 -0
  197. data/scenarios/reversal_update/request.rb +7 -0
  198. data/scenarios/reversal_update/ruby.mako +44 -0
  199. data/spec/balanced/error_spec.rb +7 -7
  200. data/spec/balanced/pager_spec.rb +10 -10
  201. data/spec/balanced/resources/api_key_spec.rb +6 -35
  202. data/spec/balanced/resources/bank_account_spec.rb +123 -218
  203. data/spec/balanced/resources/callback_spec.rb +12 -13
  204. data/spec/balanced/resources/card_hold_spec.rb +103 -0
  205. data/spec/balanced/resources/card_spec.rb +101 -27
  206. data/spec/balanced/resources/credit_spec.rb +69 -35
  207. data/spec/balanced/resources/customer_spec.rb +91 -271
  208. data/spec/balanced/resources/debit_spec.rb +95 -0
  209. data/spec/balanced/resources/marketplace_spec.rb +17 -170
  210. data/spec/balanced/resources/order_spec.rb +364 -0
  211. data/spec/balanced/resources/resource_spec.rb +25 -32
  212. data/spec/balanced_spec.rb +18 -36
  213. data/spec/client_spec.rb +7 -7
  214. data/spec/spec_helper.rb +19 -18
  215. data/spec/utils_spec.rb +5 -5
  216. metadata +123 -165
  217. data/examples/bank_account_debits.rb +0 -57
  218. data/examples/customers.rb +0 -114
  219. data/examples/events_and_callbacks.rb +0 -81
  220. data/examples/examples.rb +0 -162
  221. data/examples/exception_handling.rb +0 -44
  222. data/lib/balanced/resources/account.rb +0 -179
  223. data/lib/balanced/resources/hold.rb +0 -61
  224. data/lib/balanced/resources/invoice.rb +0 -11
  225. data/lib/balanced/resources/merchant.rb +0 -21
  226. data/lib/balanced/resources/transaction.rb +0 -17
  227. data/scenarios/account_add_card/definition.rb +0 -1
  228. data/scenarios/account_add_card/request.rb +0 -3
  229. data/scenarios/account_add_card/ruby.mako +0 -11
  230. data/scenarios/account_capture_hold/definition.rb +0 -1
  231. data/scenarios/account_capture_hold/request.rb +0 -3
  232. data/scenarios/account_capture_hold/ruby.mako +0 -11
  233. data/scenarios/account_create/definition.rb +0 -1
  234. data/scenarios/account_create/request.rb +0 -2
  235. data/scenarios/account_create/ruby.mako +0 -10
  236. data/scenarios/account_create_buyer/definition.rb +0 -1
  237. data/scenarios/account_create_buyer/request.rb +0 -5
  238. data/scenarios/account_create_buyer/ruby.mako +0 -13
  239. data/scenarios/account_create_debit/definition.rb +0 -1
  240. data/scenarios/account_create_debit/request.rb +0 -3
  241. data/scenarios/account_create_debit/ruby.mako +0 -11
  242. data/scenarios/account_create_hold/definition.rb +0 -1
  243. data/scenarios/account_create_hold/request.rb +0 -3
  244. data/scenarios/account_create_hold/ruby.mako +0 -11
  245. data/scenarios/account_create_merchant/definition.rb +0 -1
  246. data/scenarios/account_create_merchant/request.rb +0 -3
  247. data/scenarios/account_create_merchant/ruby.mako +0 -11
  248. data/scenarios/account_underwrite_business/definition.rb +0 -1
  249. data/scenarios/account_underwrite_business/request.rb +0 -17
  250. data/scenarios/account_underwrite_business/ruby.mako +0 -37
  251. data/scenarios/account_underwrite_person/definition.rb +0 -1
  252. data/scenarios/account_underwrite_person/request.rb +0 -18
  253. data/scenarios/account_underwrite_person/ruby.mako +0 -31
  254. data/scenarios/bank_account_find_and_credit/definition.rb +0 -1
  255. data/scenarios/bank_account_find_and_credit/request.rb +0 -5
  256. data/scenarios/bank_account_find_and_credit/ruby.mako +0 -13
  257. data/scenarios/bank_account_find_and_delete/definition.rb +0 -1
  258. data/scenarios/bank_account_find_and_delete/request.rb +0 -3
  259. data/scenarios/bank_account_find_and_delete/ruby.mako +0 -10
  260. data/scenarios/bank_account_invalid_routing_number/definition.rb +0 -1
  261. data/scenarios/bank_account_invalid_routing_number/request.rb +0 -11
  262. data/scenarios/bank_account_invalid_routing_number/ruby.mako +0 -16
  263. data/scenarios/card_invalidate/definition.rb +0 -1
  264. data/scenarios/card_invalidate/request.rb +0 -3
  265. data/scenarios/card_invalidate/ruby.mako +0 -10
  266. data/scenarios/credit_account_list/definition.rb +0 -1
  267. data/scenarios/credit_account_list/request.rb +0 -3
  268. data/scenarios/credit_account_list/ruby.mako +0 -10
  269. data/scenarios/credit_account_merchant_create/definition.rb +0 -1
  270. data/scenarios/credit_account_merchant_create/request.rb +0 -5
  271. data/scenarios/credit_account_merchant_create/ruby.mako +0 -12
  272. data/scenarios/credit_bank_account_list/request.rb +0 -5
  273. data/scenarios/credit_bank_account_list/ruby.mako +0 -12
  274. data/scenarios/credit_create_existing_bank_account/request.rb +0 -5
  275. data/scenarios/credit_create_existing_bank_account/ruby.mako +0 -12
  276. data/scenarios/credit_create_new_bank_account/request.rb +0 -10
  277. data/scenarios/credit_create_new_bank_account/ruby.mako +0 -21
  278. data/scenarios/credit_customer_list/definition.rb +0 -1
  279. data/scenarios/credit_customer_list/request.rb +0 -4
  280. data/scenarios/credit_customer_list/ruby.mako +0 -12
  281. data/scenarios/credit_failed_state/definition.rb +0 -1
  282. data/scenarios/credit_failed_state/request.rb +0 -10
  283. data/scenarios/credit_failed_state/ruby.mako +0 -18
  284. data/scenarios/credit_paid_state/definition.rb +0 -1
  285. data/scenarios/credit_paid_state/request.rb +0 -11
  286. data/scenarios/credit_paid_state/ruby.mako +0 -19
  287. data/scenarios/credit_pending_state/definition.rb +0 -1
  288. data/scenarios/credit_pending_state/request.rb +0 -9
  289. data/scenarios/credit_pending_state/ruby.mako +0 -17
  290. data/scenarios/customer_add_bank_account/request.rb +0 -3
  291. data/scenarios/customer_add_bank_account/ruby.mako +0 -11
  292. data/scenarios/customer_add_card/request.rb +0 -3
  293. data/scenarios/customer_add_card/ruby.mako +0 -11
  294. data/scenarios/customer_capture_hold/definition.rb +0 -1
  295. data/scenarios/customer_capture_hold/request.rb +0 -3
  296. data/scenarios/customer_capture_hold/ruby.mako +0 -0
  297. data/scenarios/customer_create_debit/definition.rb +0 -1
  298. data/scenarios/customer_create_debit/request.rb +0 -3
  299. data/scenarios/customer_create_debit/ruby.mako +0 -11
  300. data/scenarios/customer_create_hold/definition.rb +0 -1
  301. data/scenarios/customer_create_hold/request.rb +0 -3
  302. data/scenarios/customer_create_hold/ruby.mako +0 -11
  303. data/scenarios/customer_credit/definition.rb +0 -1
  304. data/scenarios/customer_credit/request.rb +0 -2
  305. data/scenarios/customer_credit/ruby.mako +0 -8
  306. data/scenarios/debit_account_list/definition.rb +0 -1
  307. data/scenarios/debit_account_list/request.rb +0 -3
  308. data/scenarios/debit_account_list/ruby.mako +0 -10
  309. data/scenarios/debit_create/definition.rb +0 -1
  310. data/scenarios/debit_create/request.rb +0 -5
  311. data/scenarios/debit_create/ruby.mako +0 -15
  312. data/scenarios/debit_customer_list/definition.rb +0 -1
  313. data/scenarios/debit_customer_list/request.rb +0 -4
  314. data/scenarios/debit_customer_list/ruby.mako +0 -12
  315. data/scenarios/debit_refund/definition.rb +0 -1
  316. data/scenarios/debit_refund/request.rb +0 -3
  317. data/scenarios/debit_refund/ruby.mako +0 -10
  318. data/scenarios/delete.rb +0 -7
  319. data/scenarios/event_replay/definition.rb +0 -0
  320. data/scenarios/event_replay/request.rb +0 -1
  321. data/scenarios/event_replay/ruby.mako +0 -0
  322. data/scenarios/execute.rb +0 -27
  323. data/scenarios/hold_account_list/definition.rb +0 -1
  324. data/scenarios/hold_account_list/request.rb +0 -3
  325. data/scenarios/hold_account_list/ruby.mako +0 -10
  326. data/scenarios/hold_capture/definition.rb +0 -1
  327. data/scenarios/hold_capture/request.rb +0 -5
  328. data/scenarios/hold_capture/ruby.mako +0 -15
  329. data/scenarios/hold_create/definition.rb +0 -1
  330. data/scenarios/hold_create/request.rb +0 -5
  331. data/scenarios/hold_create/ruby.mako +0 -14
  332. data/scenarios/hold_customer_list/definition.rb +0 -1
  333. data/scenarios/hold_customer_list/request.rb +0 -3
  334. data/scenarios/hold_customer_list/ruby.mako +0 -11
  335. data/scenarios/hold_list/definition.rb +0 -1
  336. data/scenarios/hold_list/request.rb +0 -4
  337. data/scenarios/hold_list/ruby.mako +0 -11
  338. data/scenarios/hold_show/definition.rb +0 -1
  339. data/scenarios/hold_show/request.rb +0 -2
  340. data/scenarios/hold_show/ruby.mako +0 -10
  341. data/scenarios/hold_update/definition.rb +0 -1
  342. data/scenarios/hold_update/request.rb +0 -7
  343. data/scenarios/hold_update/ruby.mako +0 -16
  344. data/scenarios/hold_void/definition.rb +0 -1
  345. data/scenarios/hold_void/request.rb +0 -3
  346. data/scenarios/hold_void/ruby.mako +0 -10
  347. data/scenarios/refund_account_list/definition.rb +0 -1
  348. data/scenarios/refund_account_list/request.rb +0 -3
  349. data/scenarios/refund_account_list/ruby.mako +0 -10
  350. data/scenarios/refund_customer_list/definition.rb +0 -1
  351. data/scenarios/refund_customer_list/request.rb +0 -3
  352. data/scenarios/refund_customer_list/ruby.mako +0 -11
  353. data/scenarios/render.rb +0 -32
  354. data/scenarios/render_one.rb +0 -32
  355. data/spec/balanced/resources/account_spec.rb +0 -636
  356. data/spec/balanced/resources/hold_spec.rb +0 -48
  357. data/spec/balanced/resources/merchant_spec.rb +0 -6
  358. data/spec/scenarios_spec.rb +0 -39
  359. data/upload_docs.rb +0 -40
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7e6ae6caeed95c470b53d19fc6129e52f7e6cbc7
4
- data.tar.gz: 7582cfec0cbd38c8f3004ce3b4b8f4023494a351
3
+ metadata.gz: 66a60458d86bd0fe40aeb014e233fddeca12d627
4
+ data.tar.gz: 486418ed6ee7bac939ec7dcb6a036bebb3ef861c
5
5
  SHA512:
6
- metadata.gz: 4c75ab6b88d261cd793c20dddb5ac9f14075d00ba79b6cb0b47173824f742894485b192c1f37db785c5d3f374db80cb895a4a01dcd34fbd584a5be4b2c7daf8f
7
- data.tar.gz: 24720c53dd846507124a89611a4f06c16e3e6e4e94894f412fc1930ca356c5b958be273eff010dfff62c762cfb0c5836a671c491e2adf63ed19ab7f3a71bc94c
6
+ metadata.gz: fb2dbf84c8740fde03b2cacd09b0a8b2b4a39613e7cb60862f78cb8907cad67f9cc1af5a8ec79215fc8c7edae3992c4fd50fbae2c8b243b0ee91034701d76091
7
+ data.tar.gz: a92899108421c79d1353e72c2fa2411f082158116a03ebe24b7fff4b0ea8bb5bd21cc7b1d2dbcc41433d218586f83439fad26f35fba15bbf2f9d8500cf660fb0
data/.rbenv-version CHANGED
@@ -1 +1 @@
1
- 1.9.2-p290
1
+ 1.9.3-p194
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.0.0-p247
1
+ 1.8.7-p370
data/Gemfile CHANGED
@@ -2,17 +2,21 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in balanced.gemspec
4
4
 
5
- gemspec
5
+ gem "faraday"
6
+ gem "faraday_middleware"
7
+ gem "addressable"
8
+ gem "json"
6
9
 
7
10
  group :development do
8
11
  gem "yard"
9
12
  gem "guard", '~> 1.6.2'
13
+ gem "listen", "~> 1.3.1" # 2.x requires celluloid, not 1.8.7 friendly
10
14
  gem "guard-rspec", '~> 2.4.1'
11
15
  end
12
16
 
13
17
  group :test do
14
18
  gem 'net-http-persistent'
15
- gem "rspec", '~> 2.13.0'
19
+ gem "rspec", '~> 2.14.1'
16
20
  gem "rake", '~> 10.0.3'
17
21
  gem "vcr", '~> 2.4.0'
18
- end
22
+ end
data/README.md CHANGED
@@ -21,9 +21,9 @@ Or install it yourself as:
21
21
 
22
22
  ## Documentation & Usage
23
23
 
24
- * [Balanced Overview](https://www.balancedpayments.com/docs/overview?language=ruby)
24
+ * [Balanced Overview](https://docs.balancedpayments.com/?language=ruby)
25
25
  * [RDoc](http://rubydoc.info/gems/balanced)
26
- * [Balanced API with Ruby examples](https://www.balancedpayments.com/docs/api?language=ruby)
26
+ * [Balanced API with Ruby examples](https://docs.balancedpayments.com/api?language=ruby)
27
27
  * [Example scripts](https://github.com/balanced/balanced-ruby/tree/master/examples)
28
28
 
29
29
  ## Contributing
@@ -64,14 +64,6 @@ All issues should be documented at
64
64
  [balanced-ruby/issues](https://github.com/balanced/balanced-ruby/issues)
65
65
 
66
66
 
67
- ### Building Documentation
68
-
69
- Documentation is built using YARD - http://rubydoc.info/docs/yard
70
-
71
- export AMAZON_ACCESS_KEY_ID='xxx'
72
- export AMAZON_SECRET_ACCESS_KEY='yyy'
73
- ./upload_docs.rb
74
-
75
67
  ### Scenarios
76
68
 
77
69
  ####Render
data/Rakefile CHANGED
@@ -6,24 +6,10 @@ require "bundler/gem_tasks"
6
6
  require 'rspec'
7
7
 
8
8
  desc "Run spec suite"
9
- RSpec::Core::RakeTask.new(:spec) { |t| }
9
+ RSpec::Core::RakeTask.new(:spec) do |task|
10
+ file_list = FileList['spec/**/*_spec.rb']
11
+ task.pattern = file_list
12
+ end
10
13
 
11
14
  desc "Default the task to run the spec"
12
15
  task :default => [:spec]
13
-
14
- desc "Render template files"
15
- task :render_executables do
16
- ruby File.dirname(__FILE__) + "/scenarios/render.rb"
17
- end
18
-
19
- desc "delete executables"
20
- task :delete_executables do
21
- ruby File.dirname(__FILE__) + "/scenarios/delete.rb"
22
- end
23
-
24
- desc "render one template file"
25
- task :render_one, :name do
26
- name = ENV['NAME']
27
- file = File.dirname(__FILE__) + "/scenarios/render_one.rb"
28
- ruby file, name
29
- end
data/balanced.gemspec CHANGED
@@ -4,17 +4,15 @@ require "base64"
4
4
  require File.expand_path('../lib/balanced/version', __FILE__)
5
5
 
6
6
  Gem::Specification.new do |gem|
7
- gem.authors = ["Mahmoud Abdelkader"]
8
- gem.email = ["bWFobW91ZEBwb3VuZHBheS5jb20="].map { |i| Base64.decode64(i) }
9
- gem.description = %q{Balanced is the payments platform for marketplaces.
10
- Integrate a payments experience just like Amazon for your marketplace.
11
- Forget about dealing with banking systems, compliance, fraud, and security.
12
- }
13
- gem.summary = %q{Sign up on https://balancedpayments.com/}
14
- gem.homepage = "https://balancedpayments.com"
7
+ gem.authors = ["Balanced"]
8
+ gem.email = ["ZGV2QGJhbGFuY2VkcGF5bWVudHMuY29t"].map { |i| Base64.decode64(i) }
9
+ gem.description = %q{Balanced is the payments platform for marketplaces. }
10
+ gem.summary = %q{https://docs.balancedpayments.com/}
11
+ gem.homepage = "https://www.balancedpayments.com"
15
12
 
16
- gem.add_dependency("faraday", '~> 0.8.6')
13
+ gem.add_dependency("faraday", '>= 0.8.6')
17
14
  gem.add_dependency("faraday_middleware", '~> 0.9.0')
15
+ gem.add_dependency("addressable", '~> 2.3.5')
18
16
 
19
17
  gem.files = `git ls-files`.split($\)
20
18
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -22,4 +20,4 @@ Gem::Specification.new do |gem|
22
20
  gem.name = "balanced"
23
21
  gem.require_paths = %w(lib)
24
22
  gem.version = Balanced::VERSION
25
- end
23
+ end
data/lib/balanced.rb CHANGED
@@ -5,7 +5,6 @@ require 'uri'
5
5
  require 'balanced/version' unless defined? Balanced::VERSION
6
6
  require 'balanced/client'
7
7
  require 'balanced/utils'
8
- require 'balanced/resources'
9
8
  require 'balanced/error'
10
9
 
11
10
  module Balanced
@@ -13,16 +12,18 @@ module Balanced
13
12
  @client = nil
14
13
  @config = {
15
14
  :scheme => 'https',
16
-
17
15
  :host => 'api.balancedpayments.com',
18
16
  :port => 443,
19
- :version => '1',
17
+ :version => '1.1',
20
18
  }
21
19
 
20
+ @hypermedia_registry = {}
21
+
22
22
  class << self
23
23
 
24
24
  attr_accessor :client
25
25
  attr_accessor :config
26
+ attr_accessor :hypermedia_registry
26
27
 
27
28
  def configure(api_key=nil, options={})
28
29
  @config = @config.merge(options)
@@ -33,34 +34,29 @@ module Balanced
33
34
  !@client.api_key.nil?
34
35
  end
35
36
 
36
- def split_the_uri uri
37
- URI.parse(uri).path.sub(/\/$/, '').split('/')
37
+ def split_the_href(href)
38
+ URI.parse(href).path.sub(/\/$/, '').split('/')
38
39
  end
39
40
 
40
- def from_uri uri
41
- split_uri = split_the_uri(uri)
42
- # this is such an ugly hack, basically, we're trying to
43
- # see if we have the symbol that matches the capitalized
44
- #
45
- class_name = Balanced::Utils.classify(split_uri[-1])
46
- begin
47
- klass = Balanced.const_get class_name
48
- rescue NameError
49
- class_name = Utils.classify(split_uri[-2])
50
- klass = Balanced.const_get(class_name)
41
+ def from_hypermedia_registry(resource_name)
42
+ cls = Balanced.hypermedia_registry[resource_name]
43
+ if cls.nil?
44
+ raise 'OH SHIT'
51
45
  end
52
- klass
46
+ cls
53
47
  end
54
48
 
55
- def is_collection uri
56
- split_uri = split_the_uri(uri)
57
- class_name = Balanced::Utils.classify(split_uri[-1])
58
- begin
59
- Balanced.const_get class_name
60
- rescue NameError
61
- return false
49
+ def from_href(href)
50
+ split_uri = split_the_href(href)
51
+ split_uri.reverse!.each do |resource|
52
+ cls = Balanced.hypermedia_registry[resource]
53
+ return cls unless cls.nil?
62
54
  end
63
- true
55
+ end
56
+
57
+ def is_collection(href)
58
+ split_uri = split_the_href(href)
59
+ Balanced.hypermedia_registry.has_key?(split_uri.last)
64
60
  end
65
61
 
66
62
  def get(*args, &block)
@@ -75,13 +71,17 @@ module Balanced
75
71
  self.client.put *args
76
72
  end
77
73
 
78
- def delete(*args, &block)
79
- self.client.delete *args
74
+ def unstore(*args, &block)
75
+ self.client.unstore *args
80
76
  end
81
-
77
+ alias_method :delete, :unstore
82
78
  end
83
79
 
84
80
  # configure on import so we don't have to configure for creating
85
81
  # an api key
86
82
  configure
87
83
  end
84
+
85
+ # require all the balanced resources! this is needed at the end because
86
+ # the Balanced module needs to be defined first, as it contains the registry
87
+ require 'balanced/resources'
@@ -1,8 +1,8 @@
1
- require "logger"
2
- require "uri"
3
- require "faraday"
4
- require "faraday_middleware"
5
- require "balanced_exception_middleware"
1
+ require 'logger'
2
+ require 'uri'
3
+ require 'faraday'
4
+ require 'faraday_middleware'
5
+ require 'balanced_exception_middleware'
6
6
 
7
7
 
8
8
  module Balanced
@@ -18,7 +18,8 @@ module Balanced
18
18
  :read_timeout => 60,
19
19
  :logger => nil,
20
20
  :ssl_verify => true,
21
- :faraday_adapter => Faraday.default_adapter
21
+ :faraday_adapter => Faraday.default_adapter,
22
+ :accept_type => 'application/vnd.api+json'
22
23
  }
23
24
 
24
25
  attr_reader :conn
@@ -61,6 +62,8 @@ module Balanced
61
62
  end
62
63
  conn.path_prefix = '/'
63
64
  conn.headers['User-Agent'] = "balanced-ruby/#{Balanced::VERSION}"
65
+ conn.headers['Content-Type'] = "application/json;revision=#{@config[:version]}"
66
+ conn.headers['Accept'] = "#{@config[:accept_type]};revision=#{@config[:version]}"
64
67
  end
65
68
 
66
69
  #def inspect # :nodoc:
@@ -75,6 +78,12 @@ module Balanced
75
78
  :scheme => config[:scheme]})
76
79
  end
77
80
 
81
+ # alias_method doesn't work with method_missing, so we manually
82
+ # delegate
83
+ def unstore(*args, &block)
84
+ delete(*args, &block)
85
+ end
86
+
78
87
  def method_missing(method, *args, &block)
79
88
  if is_http_method? method
80
89
  conn.basic_auth(api_key, '') unless api_key.nil?
@@ -14,25 +14,33 @@ module Balanced
14
14
  def body
15
15
  @body ||= begin
16
16
  return {} unless response[:body]
17
- Utils.hash_with_indifferent_read_access(response[:body])
17
+ Utils.indifferent_read_access(response[:body])
18
18
  end
19
19
  end
20
20
 
21
21
  def error_message
22
22
  set_attrs
23
- extra = body[:additional] ? " -- #{body[:additional]}" : ""
24
- "#{self.class.name}(#{response[:status]})::#{body[:status]}:: "\
25
- "#{response[:method].to_s.upcase} #{response[:url].to_s}: "\
26
- "#{body[:category_code]}: #{body[:description]} #{extra}"
23
+ errors = body.fetch('errors', nil)
24
+ unless errors.nil?
25
+ error = body[:errors][0]
26
+ extra = error[:additional] ? " -- #{error[:additional]}" : ""
27
+ "#{self.class.name}(#{response[:status]})::#{error[:status]}:: "\
28
+ "#{response[:method].to_s.upcase} #{response[:url].to_s}: "\
29
+ "#{error[:category_code]}: #{error[:description]} #{extra}"
30
+ end
27
31
  end
28
32
 
29
33
  private
30
34
  def set_attrs
31
- body.keys.each do |name|
32
- self.class.instance_eval {
33
- define_method(name) { body[name] } # Get.
34
- define_method("#{name}?") { !!body[name] } # Present.
35
- }
35
+ errors = body.fetch('errors', nil)
36
+ unless errors.nil?
37
+ error = errors[0]
38
+ error.keys.each do |name|
39
+ self.class.instance_eval {
40
+ define_method(name) { error[name] } # Get.
41
+ define_method("#{name}?") { !!error[name] } # Present.
42
+ }
43
+ end
36
44
  end
37
45
  end
38
46
  end
@@ -49,7 +57,8 @@ module Balanced
49
57
  end
50
58
  end
51
59
 
52
- # Raised when attempted to create a debit or hold for a card not associated to an account
60
+ # Raised when attempted to create a debit or hold for a card not associated
61
+ # to a customer.
53
62
  class UnassociatedCardError < StandardError
54
63
  # @param [Balanced::Card] card
55
64
  def initialize(card)
@@ -58,7 +67,7 @@ module Balanced
58
67
  end
59
68
 
60
69
  def error_message
61
- "The Balanced::Card with uri=#{@card.attributes['uri']} is not associated to an account"
70
+ "The Balanced::Card with uri=#{@card.attributes['uri']} is not associated to a customer"
62
71
  end
63
72
  end
64
73
 
@@ -7,6 +7,9 @@ module Balanced
7
7
 
8
8
  include Enumerable
9
9
 
10
+ attr_accessor :href
11
+ attr_accessor :options
12
+
10
13
  # A pager for paginating through resource records.
11
14
  #
12
15
  # @param [String] uri the uri of the resource
@@ -14,8 +17,8 @@ module Balanced
14
17
  # @option options [Integer] limit
15
18
  # @option options [Integer] offset
16
19
  # @option options [Integer] per an alias for the :limit option
17
- def initialize uri, options = {}
18
- @uri = uri
20
+ def initialize(href, options = {})
21
+ @href = href
19
22
  @options = options
20
23
  @page = nil
21
24
  @resource_class = nil
@@ -24,34 +27,47 @@ module Balanced
24
27
  def resource_class
25
28
  return @resource_class unless @resource_class.nil?
26
29
  load! unless @page
27
- @resource_class = Balanced.from_uri items.first[:uri]
30
+ @resource_class
28
31
  end
29
32
 
30
33
  def first
31
34
  load! unless @page
32
- items.first.nil? ? nil : resource_class.construct_from_response(items.first)
35
+ if items.first.nil?
36
+ nil
37
+ else
38
+ envelope = {
39
+ :meta => @page[:meta],
40
+ :links => @page[:links],
41
+ @resource_class.collection_name.to_sym => [items.first]
42
+ }
43
+ resource_class.construct_from_response(envelope)
44
+ end
33
45
  end
34
46
 
35
47
  def total
36
48
  load! unless @page
37
- @page[:total]
49
+ @page[:meta][:total]
38
50
  end
39
51
 
40
52
  def limit
41
53
  load! unless @page
42
- @page[:limit]
54
+ @page[:meta][:limit]
43
55
  end
44
56
  alias limit_value limit
45
57
 
46
58
  def offset
47
59
  load! unless @page
48
- @page[:offset]
60
+ @page[:meta][:offset]
49
61
  end
50
62
  alias offset_value offset
51
63
 
52
64
  def items
53
65
  load! unless @page
54
- @page[:items]
66
+ if @resource_class.nil?
67
+ []
68
+ else
69
+ @page[@resource_class.collection_name]
70
+ end
55
71
  end
56
72
 
57
73
  def current_page
@@ -71,19 +87,24 @@ module Balanced
71
87
 
72
88
  load! unless @page
73
89
  loop do
74
- @page[:items].each do |r|
75
- yield resource_class.construct_from_response r
90
+ items.each do |r|
91
+ envelope = {
92
+ :meta => @page[:meta],
93
+ :links => @page[:links],
94
+ @resource_class.collection_name.to_sym => [r]
95
+ }
96
+ yield resource_class.construct_from_response(envelope)
76
97
  end
77
- raise StopIteration if @page[:next_uri].nil?
98
+ raise StopIteration if @page[:meta][:next].nil?
78
99
  self.next
79
100
  end
80
101
  end
81
102
 
82
103
  # @return [nil]
83
- # @see Resource.find_each
104
+ # @see Resource.fetch_each
84
105
  # @yield [record]
85
- def find_each
86
- return enum_for :find_each unless block_given?
106
+ def fetch_each
107
+ return enum_for :fetch_each unless block_given?
87
108
  begin
88
109
  each { |record| yield record }
89
110
  end while self.next
@@ -93,7 +114,7 @@ module Balanced
93
114
  # the next page.
94
115
  def next
95
116
  load! unless @page
96
- next_uri = @page[:next_uri]
117
+ next_uri = @page[:meta][:next]
97
118
  load_from next_uri, nil unless next_uri.nil?
98
119
  end
99
120
 
@@ -101,7 +122,7 @@ module Balanced
101
122
  # the previous page.
102
123
  def prev
103
124
  load! unless @page
104
- prev_uri = @page[:prev_uri]
125
+ prev_uri = @page[:meta][:prev]
105
126
  load_from prev_uri, nil unless prev_uri.nil?
106
127
  end
107
128
 
@@ -109,21 +130,21 @@ module Balanced
109
130
  # the first page.
110
131
  def start
111
132
  load! unless @page
112
- first_page = @page[:first_page]
133
+ first_page = @page[:meta][:first]
113
134
  load_from first_page, nil unless first_page.nil?
114
135
  end
115
136
 
116
137
  # @return [Array, nil] Load (or reload) the pager's collection from the
117
138
  # original, supplied options.
118
139
  def load!
119
- load_from @uri, @options
140
+ load_from @href, @options
120
141
  end
121
142
  alias reload load!
122
143
 
123
144
  # @return [Pager] Duplicates the pager, updating it with the options
124
145
  # supplied. Useful for resource scopes.
125
146
  # @see #initialize
126
- def paginate options = {}
147
+ def paginate(options = {})
127
148
  dup.instance_eval {
128
149
  @page = nil
129
150
  @options.update options and self
@@ -132,23 +153,35 @@ module Balanced
132
153
  alias scoped paginate
133
154
  alias where paginate
134
155
 
135
- def all options = {}
156
+ def all(options = {})
136
157
  paginate(options).to_a
137
158
  end
138
159
 
139
- def find uri
160
+ def fetch(uri)
140
161
  if resource_class.respond_to? :find
141
162
  raise NoMethodError,
142
163
  "#find must be called on #{resource_class} directly"
143
164
  end
144
165
 
145
- resource_class.find uri
166
+ resource_class.fetch uri
167
+ end
168
+
169
+ def create(options={})
170
+ opts = Balanced::Utils.indifferent_read_access options
171
+ opts[:href] = @href
172
+ # if we don't have a media type for the href,
173
+ # let's try to inspect the url to look it up from the
174
+ # registry
175
+ if @resource_class.nil?
176
+ @resource_class = Balanced.from_href(@href)
177
+ end
178
+ @resource_class.new(opts).save
146
179
  end
147
180
 
148
181
 
149
182
  private
150
183
 
151
- def load_from uri, params
184
+ def load_from(uri, params)
152
185
  parsed_uri = URI.parse(uri)
153
186
 
154
187
  params ||= {}
@@ -167,8 +200,16 @@ module Balanced
167
200
  end
168
201
 
169
202
  response = Balanced.get parsed_uri.to_s, params
170
- @page = Balanced::Utils.hash_with_indifferent_read_access response.body
171
- @uri = @page[:uri]
203
+ @page = Balanced::Utils.indifferent_read_access response.body
204
+
205
+ @href = @page[:meta][:href]
206
+ # resource_class?
207
+ hypermedia_key = (@page.keys.map{|k| k.to_sym } - [:meta, :links]).first
208
+ unless hypermedia_key.nil?
209
+ @resource_class = Balanced.from_hypermedia_registry(hypermedia_key.to_s)
210
+ end
211
+
212
+ @page
172
213
  end
173
214
 
174
215
  def adjust_pagination_params(original)