synapse_pay 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.travis.yml +16 -0
  4. data/Gemfile +8 -0
  5. data/LICENSE +21 -0
  6. data/README.md +54 -0
  7. data/Rakefile +8 -0
  8. data/VERSION +1 -0
  9. data/bin/synapse_pay-console +7 -0
  10. data/gemfiles/default-with-activesupport.gemfile +10 -0
  11. data/gemfiles/json.gemfile +12 -0
  12. data/gemfiles/yajl.gemfile +12 -0
  13. data/lib/synapse_pay.rb +78 -0
  14. data/lib/synapse_pay/apibits/api_client.rb +29 -0
  15. data/lib/synapse_pay/apibits/api_endpoint.rb +9 -0
  16. data/lib/synapse_pay/apibits/api_list.rb +88 -0
  17. data/lib/synapse_pay/apibits/api_method.rb +97 -0
  18. data/lib/synapse_pay/apibits/api_object.rb +52 -0
  19. data/lib/synapse_pay/apibits/api_resource.rb +127 -0
  20. data/lib/synapse_pay/apibits/headers_builder.rb +47 -0
  21. data/lib/synapse_pay/apibits/params_builder.rb +30 -0
  22. data/lib/synapse_pay/apibits/path_builder.rb +38 -0
  23. data/lib/synapse_pay/apibits/requester.rb +104 -0
  24. data/lib/synapse_pay/apibits/util.rb +51 -0
  25. data/lib/synapse_pay/client.rb +89 -0
  26. data/lib/synapse_pay/endpoints/bank_endpoint.rb +47 -0
  27. data/lib/synapse_pay/endpoints/bank_mfa_device_endpoint.rb +5 -0
  28. data/lib/synapse_pay/endpoints/bank_mfa_questions_endpoint.rb +5 -0
  29. data/lib/synapse_pay/endpoints/bank_status_endpoint.rb +11 -0
  30. data/lib/synapse_pay/endpoints/card_endpoint.rb +26 -0
  31. data/lib/synapse_pay/endpoints/deposit_endpoint.rb +23 -0
  32. data/lib/synapse_pay/endpoints/mass_pay_endpoint.rb +26 -0
  33. data/lib/synapse_pay/endpoints/order_endpoint.rb +44 -0
  34. data/lib/synapse_pay/endpoints/user_endpoint.rb +26 -0
  35. data/lib/synapse_pay/endpoints/wire_endpoint.rb +29 -0
  36. data/lib/synapse_pay/endpoints/withdrawal_endpoint.rb +17 -0
  37. data/lib/synapse_pay/errors/api_connection_error.rb +4 -0
  38. data/lib/synapse_pay/errors/api_error.rb +32 -0
  39. data/lib/synapse_pay/errors/authentication_error.rb +4 -0
  40. data/lib/synapse_pay/errors/synapse_pay_error.rb +13 -0
  41. data/lib/synapse_pay/nested_list.rb +32 -0
  42. data/lib/synapse_pay/resources/bank.rb +46 -0
  43. data/lib/synapse_pay/resources/bank_mfa_device.rb +32 -0
  44. data/lib/synapse_pay/resources/bank_mfa_questions.rb +28 -0
  45. data/lib/synapse_pay/resources/bank_status.rb +21 -0
  46. data/lib/synapse_pay/resources/card.rb +32 -0
  47. data/lib/synapse_pay/resources/deposit.rb +25 -0
  48. data/lib/synapse_pay/resources/mass_pay.rb +38 -0
  49. data/lib/synapse_pay/resources/order.rb +63 -0
  50. data/lib/synapse_pay/resources/user.rb +80 -0
  51. data/lib/synapse_pay/resources/wire.rb +31 -0
  52. data/lib/synapse_pay/resources/withdrawal.rb +29 -0
  53. data/lib/synapse_pay/version.rb +3 -0
  54. data/synapse_pay.gemspec +29 -0
  55. data/test/synapse_pay/api_list_test.rb +23 -0
  56. data/test/synapse_pay/api_method_test.rb +89 -0
  57. data/test/synapse_pay/headers_builder_test.rb +39 -0
  58. data/test/synapse_pay/params_builder_test.rb +57 -0
  59. data/test/synapse_pay/path_builder_test.rb +50 -0
  60. data/test/synapse_pay/requester_test.rb +86 -0
  61. data/test/synapse_pay/util_test.rb +51 -0
  62. data/test/test_data.rb +72 -0
  63. data/test/test_helper.rb +41 -0
  64. metadata +220 -0
@@ -0,0 +1,89 @@
1
+ module SynapsePay
2
+ class Client < APIClient
3
+ attr_reader :oauth_consumer_key,
4
+ :refresh_token,
5
+ :expires_in,
6
+ :username,
7
+ :user_id,
8
+ :json
9
+
10
+
11
+ def initialize(oauth_consumer_key=nil, refresh_token=nil)
12
+ self.refresh_from({
13
+ :oauth_consumer_key => oauth_consumer_key,
14
+ :refresh_token => refresh_token
15
+ })
16
+ end
17
+
18
+ def refresh_from(json)
19
+ @json = Util.symbolize_keys(json)
20
+
21
+ @oauth_consumer_key = @json[:oauth_consumer_key]
22
+ @refresh_token = @json[:refresh_token]
23
+ @expires_in = @json[:expires_in]
24
+ @username = @json[:username]
25
+ @user_id = @json[:user_id]
26
+
27
+ super({}, { :oauth_consumer_key => oauth_consumer_key })
28
+ end
29
+
30
+ def self.login(username, password)
31
+ method = APIMethod.new(
32
+ :post,
33
+ "/user/login",
34
+ { :username => username, :password => password }, {}, self)
35
+ self.new.refresh_from(method.execute)
36
+ end
37
+
38
+
39
+ def self.refresh_access(refresh_token)
40
+ c = Client.new(nil, refresh_token)
41
+ c.refresh_access
42
+ end
43
+
44
+ def refresh_access(refresh_token=nil)
45
+ method = APIMethod.new(
46
+ :post,
47
+ "/user/refresh",
48
+ { :refresh_token => refresh_token || @refresh_token }, {}, self)
49
+ self.refresh_from(method.execute)
50
+ end
51
+
52
+ def user
53
+ @user ||= UserEndpoint.new(self)
54
+ end
55
+
56
+ def banks
57
+ @banks ||= BankEndpoint.new(self)
58
+ end
59
+
60
+ def orders
61
+ @orders ||= OrderEndpoint.new(self)
62
+ end
63
+
64
+ def deposits
65
+ @deposits ||= DepositEndpoint.new(self)
66
+ end
67
+
68
+ def withdrawals
69
+ @withdrawals ||= WithdrawalEndpoint.new(self)
70
+ end
71
+
72
+ def cards
73
+ @cards ||= CardEndpoint.new(self)
74
+ end
75
+
76
+ def mass_pays
77
+ @mass_pays ||= MassPayEndpoint.new(self)
78
+ end
79
+
80
+ def bank_statuses
81
+ @bank_statuses ||= BankStatusEndpoint.new(self)
82
+ end
83
+
84
+ def wires
85
+ @wires ||= WireEndpoint.new(self)
86
+ end
87
+
88
+ end
89
+ end
@@ -0,0 +1,47 @@
1
+ module SynapsePay
2
+ class BankEndpoint < APIEndpoint
3
+
4
+ def add(params={}, headers={})
5
+ method = APIMethod.new(:post, "/bank/add", params, headers, self)
6
+ json = @client.execute(method)
7
+ Bank.new(json[:bank], method, @client)
8
+ end
9
+
10
+ def all(params={}, headers={})
11
+ method = APIMethod.new(:post, "/bank/show", params, headers, self)
12
+ json = @client.execute(method)
13
+ APIList.new(:Bank, json[:banks], method, @client)
14
+ end
15
+
16
+ def link(params={}, headers={})
17
+ method = APIMethod.new(:post, "/bank/login", params, headers, self)
18
+ json = @client.execute(method)
19
+ if(json[:is_mfa] && json[:response][:type] == "questions")
20
+ BankMfaQuestions.new(json[:response], method, @client)
21
+ elsif(json[:is_mfa] && json[:response][:type] == "device")
22
+ BankMfaDevice.new(json[:response], method, @client)
23
+ else
24
+ APIList.new(:Bank, json[:banks], method, @client)
25
+ end
26
+ end
27
+
28
+ def remove(bank_id, params={}, headers={})
29
+ params = ParamsBuilder.merge({
30
+ :bank_id => bank_id,
31
+ }, params)
32
+ method = APIMethod.new(:post, "/bank/delete", params, headers, self)
33
+ json = @client.execute(method)
34
+ json
35
+ end
36
+
37
+ def retrieve(id, params={}, headers={})
38
+ params = ParamsBuilder.merge({
39
+ :id => id,
40
+ }, params)
41
+ method = APIMethod.new(:post, "/bank/refresh", params, headers, self)
42
+ json = @client.execute(method)
43
+ APIList.new(:Bank, json[:banks], method, @client)
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,5 @@
1
+ module SynapsePay
2
+ class BankMfaDeviceEndpoint < APIEndpoint
3
+
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module SynapsePay
2
+ class BankMfaQuestionsEndpoint < APIEndpoint
3
+
4
+ end
5
+ end
@@ -0,0 +1,11 @@
1
+ module SynapsePay
2
+ class BankStatusEndpoint < APIEndpoint
3
+
4
+ def all(params={}, headers={})
5
+ method = APIMethod.new(:post, "/bankstatus/show", params, headers, self)
6
+ json = @client.execute(method)
7
+ APIList.new(:BankStatus, json[:banks], method, @client)
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ module SynapsePay
2
+ class CardEndpoint < APIEndpoint
3
+
4
+ def all(params={}, headers={})
5
+ method = APIMethod.new(:post, "/card/show", params, headers, self)
6
+ json = @client.execute(method)
7
+ APIList.new(:Card, json[:cards], method, @client)
8
+ end
9
+
10
+ def create(params={}, headers={})
11
+ method = APIMethod.new(:post, "/card/add", params, headers, self)
12
+ json = @client.execute(method)
13
+ Card.new(json[:card], method, @client)
14
+ end
15
+
16
+ def update(id, params={}, headers={})
17
+ params = ParamsBuilder.merge({
18
+ :id => id,
19
+ }, params)
20
+ method = APIMethod.new(:post, "/card/edit", params, headers, self)
21
+ json = @client.execute(method)
22
+ Card.new(json[:card], method, @client)
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,23 @@
1
+ module SynapsePay
2
+ class DepositEndpoint < APIEndpoint
3
+
4
+ def all(params={}, headers={})
5
+ method = APIMethod.new(:post, "/deposit/show", params, headers, self)
6
+ json = @client.execute(method)
7
+ APIList.new(:Deposit, json[:deposits], method, @client)
8
+ end
9
+
10
+ def create(params={}, headers={})
11
+ method = APIMethod.new(:post, "/deposit/add", params, headers, self)
12
+ json = @client.execute(method)
13
+ Deposit.new(json[:deposit], method, @client)
14
+ end
15
+
16
+ def micro(params={}, headers={})
17
+ method = APIMethod.new(:post, "/deposit/micro", params, headers, self)
18
+ json = @client.execute(method)
19
+ APIList.new(:Deposit, json[:deposits], method, @client)
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,26 @@
1
+ module SynapsePay
2
+ class MassPayEndpoint < APIEndpoint
3
+
4
+ def all(params={}, headers={})
5
+ method = APIMethod.new(:post, "/masspay/show", params, headers, self)
6
+ json = @client.execute(method)
7
+ APIList.new(:MassPay, json[:mass_pays], method, @client)
8
+ end
9
+
10
+ def cancel(id, params={}, headers={})
11
+ params = ParamsBuilder.merge({
12
+ :id => id,
13
+ }, params)
14
+ method = APIMethod.new(:post, "/masspay/cancel", params, headers, self)
15
+ json = @client.execute(method)
16
+ APIList.new(:MassPay, json[:mass_pays], method, @client)
17
+ end
18
+
19
+ def create(params={}, headers={})
20
+ method = APIMethod.new(:post, "/masspay/add", params, headers, self)
21
+ json = @client.execute(method)
22
+ APIList.new(:MassPay, json[:mass_pays], method, @client)
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,44 @@
1
+ module SynapsePay
2
+ class OrderEndpoint < APIEndpoint
3
+
4
+ def create(params={}, headers={})
5
+ method = APIMethod.new(:post, "/order/add", params, headers, self)
6
+ json = @client.execute(method)
7
+ Order.new(json[:order], method, @client)
8
+ end
9
+
10
+ def poll(order_id, params={}, headers={})
11
+ params = ParamsBuilder.merge({
12
+ :order_id => order_id,
13
+ }, params)
14
+ method = APIMethod.new(:post, "/order/poll", params, headers, self)
15
+ json = @client.execute(method)
16
+ Order.new(json[:order], method, @client)
17
+ end
18
+
19
+ def recent(params={}, headers={})
20
+ method = APIMethod.new(:post, "/order/recent", params, headers, self)
21
+ json = @client.execute(method)
22
+ APIList.new(:Order, json[:orders], method, @client)
23
+ end
24
+
25
+ def update(order_id, params={}, headers={})
26
+ params = ParamsBuilder.merge({
27
+ :order_id => order_id,
28
+ }, params)
29
+ method = APIMethod.new(:post, "/order/update", params, headers, self)
30
+ json = @client.execute(method)
31
+ Order.new(json[:order], method, @client)
32
+ end
33
+
34
+ def void(order_id, params={}, headers={})
35
+ params = ParamsBuilder.merge({
36
+ :order_id => order_id,
37
+ }, params)
38
+ method = APIMethod.new(:post, "/order/void", params, headers, self)
39
+ json = @client.execute(method)
40
+ Order.new(json[:order], method, @client)
41
+ end
42
+
43
+ end
44
+ end
@@ -0,0 +1,26 @@
1
+ module SynapsePay
2
+ class UserEndpoint < APIEndpoint
3
+
4
+ def retrieve(params={}, headers={})
5
+ method = APIMethod.new(:post, "/user/show", params, headers, self)
6
+ json = @client.execute(method)
7
+ User.new(json[:user], method, @client)
8
+ end
9
+
10
+ def search(query, params={}, headers={})
11
+ params = ParamsBuilder.merge({
12
+ :query => query,
13
+ }, params)
14
+ method = APIMethod.new(:post, "/user/customers", params, headers, self)
15
+ json = @client.execute(method)
16
+ APIList.new(:User, json[:customers], method, @client)
17
+ end
18
+
19
+ def update(params={}, headers={})
20
+ method = APIMethod.new(:post, "/user/edit", params, headers, self)
21
+ json = @client.execute(method)
22
+ User.new(json[:user], method, @client)
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,29 @@
1
+ module SynapsePay
2
+ class WireEndpoint < APIEndpoint
3
+
4
+ def all_incoming(params={}, headers={})
5
+ method = APIMethod.new(:post, "/wirein/show", params, headers, self)
6
+ json = @client.execute(method)
7
+ APIList.new(:Wire, json[:wires], method, @client)
8
+ end
9
+
10
+ def all_outgoing(params={}, headers={})
11
+ method = APIMethod.new(:post, "/wireout/show", params, headers, self)
12
+ json = @client.execute(method)
13
+ APIList.new(:Wire, json[:wires], method, @client)
14
+ end
15
+
16
+ def create_incoming(params={}, headers={})
17
+ method = APIMethod.new(:post, "/wirein/add", params, headers, self)
18
+ json = @client.execute(method)
19
+ Wire.new(json[:wire], method, @client)
20
+ end
21
+
22
+ def create_outgoing(params={}, headers={})
23
+ method = APIMethod.new(:post, "/wireout/add", params, headers, self)
24
+ json = @client.execute(method)
25
+ Wire.new(json[:wire], method, @client)
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,17 @@
1
+ module SynapsePay
2
+ class WithdrawalEndpoint < APIEndpoint
3
+
4
+ def all(params={}, headers={})
5
+ method = APIMethod.new(:post, "/withdraw/show", params, headers, self)
6
+ json = @client.execute(method)
7
+ APIList.new(:Withdrawal, json[:withdraws], method, @client)
8
+ end
9
+
10
+ def create(params={}, headers={})
11
+ method = APIMethod.new(:post, "/withdraw/add", params, headers, self)
12
+ json = @client.execute(method)
13
+ Withdrawal.new(json[:withdrawal], method, @client)
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,4 @@
1
+ module SynapsePay
2
+ class APIConnectionError < APIError
3
+ end
4
+ end
@@ -0,0 +1,32 @@
1
+ module SynapsePay
2
+ class APIError < SynapsePayError
3
+ attr_reader :api_method
4
+
5
+ def initialize(message=nil, api_method=nil)
6
+ @message = message
7
+ @api_method = api_method
8
+ end
9
+
10
+ def code
11
+ @api_method.response_code if @api_method
12
+ end
13
+
14
+ def body
15
+ @api_method.response_body if @api_method
16
+ end
17
+
18
+ def json
19
+ begin
20
+ @api_method.response_json if @api_method
21
+ rescue APIError
22
+ nil
23
+ end
24
+ end
25
+
26
+ def to_s
27
+ prefix = code.nil? ? "" : "(Status #{code}) "
28
+ "#{prefix}#{@message}"
29
+ end
30
+ end
31
+ end
32
+
@@ -0,0 +1,4 @@
1
+ module SynapsePay
2
+ class AuthenticationError < APIError
3
+ end
4
+ end
@@ -0,0 +1,13 @@
1
+ module SynapsePay
2
+ class SynapsePayError < StandardError
3
+ attr_reader :message
4
+
5
+ def initialize(message=nil)
6
+ @message = message
7
+ end
8
+
9
+ def to_s
10
+ "#{@message}"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,32 @@
1
+ module SynapsePay
2
+ class RunTestList < APIList
3
+ attr_accessor :parent_id
4
+
5
+ def initialize(json={}, api_method=nil, parent_id=nil)
6
+ refresh_from(json, api_method, parent_id)
7
+ end
8
+
9
+ def refresh_from(json={}, api_method=nil, parent_id=nil)
10
+ @klass = Util.constantize(:Test)
11
+ @parent_id = parent_id || @parent_id
12
+ super(json, api_method)
13
+ end
14
+
15
+ def all(params={}, headers={})
16
+ method = APIMethod.new(:get, "/runs/:parent_id/tests", params, headers, self)
17
+ self.refresh_from(method.execute, method, parent_id)
18
+ end
19
+
20
+ def retrieve(id, params={}, headers={})
21
+ params = ParamsBuilder.merge(params, {
22
+ :id => id,
23
+ })
24
+ method = APIMethod.new(:get, "/runs/:parent_id/tests/:id", params, headers, self)
25
+ Util.constantize(:Test).new(method.execute, method)
26
+ end
27
+
28
+ @api_attributes = {
29
+ :data => { :readonly => true }
30
+ }
31
+ end
32
+ end