securionpay 0.3.0 → 1.0.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8efb02864e14b2e430e5183a7122952de8fd2ffb
4
- data.tar.gz: 3111073d727ff437b163740a2daa6d9543e187cc
2
+ SHA256:
3
+ metadata.gz: 9b95512e478342f2458ccf71e6bde4439f90d1d5930831d261ab239cd30c9c43
4
+ data.tar.gz: dc91f41e4c309ef05e2823f777981a1f6eef085ff5ad595cb91fe0bd94159874
5
5
  SHA512:
6
- metadata.gz: 3bad028498a41308150ee66c0283d6e9c3cd187376d0582662c457218bdc79635101156c541816421d6d21819d32bae016f402635c7fc380bac7933b5db4ba96
7
- data.tar.gz: b440a4ac8ac93c7a67373cf80188a661c57a40f4aa64b4ac0a524f6d44dacd657f1b32bd896de2e7fcf02d69d701a35dcea2e22ded30c7a12cfa538ef44b7b85
6
+ metadata.gz: e23dd58edb84394e0d00a6bbf2001167a6aee5a7b2020c43adf2059f0184a57164cec75b67005d27498b8a2c5f08e23c9edbf9896a94f5b616616751de58b819
7
+ data.tar.gz: 89aff8b416b289c5711eec238de4acb5553afb6cf82a3ae365597f6892d7098065800c1fdac0232e7fe5ee77f74e8c4e567863fd2136bbd37e5a75b0ef8f27dc
data/bin/console CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  #!/usr/bin/env ruby
2
4
 
3
5
  require "bundler/setup"
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ # Blacklist can be used to block unwanted charges.
5
+ class Blacklist
6
+ extend TransactionBase
7
+
8
+ def self.create(params)
9
+ communicator.post("#{Configuration.api_url}/blacklist", json: params)
10
+ end
11
+
12
+ def self.retrieve(blacklist_rule_id)
13
+ communicator.get("#{Configuration.api_url}/blacklist/#{blacklist_rule_id}")
14
+ end
15
+
16
+ def self.delete(blacklist_rule_id)
17
+ communicator.delete("#{Configuration.api_url}/blacklist/#{blacklist_rule_id}")
18
+ end
19
+
20
+ def self.list(params = nil)
21
+ communicator.get("#{Configuration.api_url}/blacklist", query: params)
22
+ end
23
+ end
24
+ end
@@ -1,45 +1,27 @@
1
- require 'securionpay/communicator'
2
- require 'securionpay/builders/path_builder'
1
+ # frozen_string_literal: true
3
2
 
4
3
  module SecurionPay
5
4
  class Cards
6
- class << self
7
- attr_accessor :communicator, :path_builder
8
- end
9
-
10
- @communicator = Communicator
11
- @path_builder = Builders::PathBuilder
5
+ extend TransactionBase
12
6
 
13
7
  def self.create(customer_id, params)
14
- communicator.post(
15
- path_builder.build_card_path(customer_id),
16
- params
17
- )
8
+ communicator.post("#{Configuration.api_url}/customers/#{customer_id}/cards", json: params)
18
9
  end
19
10
 
20
11
  def self.retrieve(customer_id, card_id)
21
- communicator.get(
22
- path_builder.build_card_path(customer_id, card_id)
23
- )
12
+ communicator.get("#{Configuration.api_url}/customers/#{customer_id}/cards/#{card_id}")
24
13
  end
25
14
 
26
15
  def self.update(customer_id, card_id, params)
27
- communicator.post(
28
- path_builder.build_card_path(customer_id, card_id),
29
- params
30
- )
16
+ communicator.post("#{Configuration.api_url}/customers/#{customer_id}/cards/#{card_id}", json: params)
31
17
  end
32
-
18
+
33
19
  def self.delete(customer_id, card_id)
34
- communicator.delete(
35
- path_builder.build_card_path(customer_id, card_id)
36
- )
20
+ communicator.delete("#{Configuration.api_url}/customers/#{customer_id}/cards/#{card_id}")
37
21
  end
38
22
 
39
- def self.list(customer_id)
40
- communicator.get(
41
- path_builder.build_card_path(customer_id)
42
- )
23
+ def self.list(customer_id, params = nil)
24
+ communicator.get("#{Configuration.api_url}/customers/#{customer_id}/cards", query: params)
43
25
  end
44
26
  end
45
27
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Charges
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/charges", json: params)
9
+ end
10
+
11
+ def self.retrieve(charge_id)
12
+ communicator.get("#{Configuration.api_url}/charges/#{charge_id}")
13
+ end
14
+
15
+ def self.update(charge_id, params)
16
+ communicator.post("#{Configuration.api_url}/charges/#{charge_id}", json: params)
17
+ end
18
+
19
+ def self.list(params = nil)
20
+ communicator.get("#{Configuration.api_url}/charges", query: params)
21
+ end
22
+
23
+ def self.capture(charge_id)
24
+ communicator.post("#{Configuration.api_url}/charges/#{charge_id}/capture")
25
+ end
26
+
27
+ def self.refund(charge_id, params = nil)
28
+ communicator.post("#{Configuration.api_url}/charges/#{charge_id}/refund", json: params)
29
+ end
30
+ end
31
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'httparty'
2
4
 
3
5
  module SecurionPay
@@ -8,44 +10,50 @@ module SecurionPay
8
10
 
9
11
  @web_consumer = HTTParty
10
12
 
11
- def self.get(path)
12
- web_consumer.get(
13
- url(path),
14
- request_body
15
- )
13
+ def self.get(url, query: nil)
14
+ response = web_consumer.get(url, request(query: query))
15
+ handle_response(response)
16
+ response
16
17
  end
17
18
 
18
- def self.post(path, body)
19
- web_consumer.post(
20
- url(path),
21
- request_body(body)
22
- )
19
+ def self.post(url, json: nil, body: nil)
20
+ response = web_consumer.post(url, request(json: json, body: body))
21
+ handle_response(response)
22
+ response
23
23
  end
24
24
 
25
- def self.delete(path)
26
- web_consumer.delete(
27
- url(path),
28
- request_body
29
- )
25
+ def self.delete(url)
26
+ response = web_consumer.delete(url, request)
27
+ handle_response(response)
28
+ response
30
29
  end
31
30
 
32
- def self.url(path)
33
- "#{Configuration.service_url}/#{path}"
34
- end
31
+ def self.request(json: nil, query: nil, body: nil)
32
+ headers = {
33
+ "User-Agent" => "SecurionPay-Ruby/#{SecurionPay::VERSION} (Ruby/#{RUBY_VERSION})",
34
+ "Accept" => "application/json",
35
+ }
36
+ if json
37
+ raise ArgumentError("Cannot specify both body and json") if body
38
+
39
+ body = json.to_json
40
+ headers["Content-Type"] = "application/json"
41
+ end
35
42
 
36
- def self.request_body(body = nil)
37
43
  {
38
44
  body: body,
39
- basic_auth: basic_auth
45
+ query: query,
46
+ headers: headers,
47
+ basic_auth: {
48
+ username: Configuration.secret_key
49
+ }
40
50
  }
41
51
  end
42
52
 
43
- def self.basic_auth
44
- {
45
- username: Configuration.private_key
46
- }
53
+ def self.handle_response(response)
54
+ raise SecurionPayException, response if (400..599).cover?(response.code)
47
55
  end
48
56
 
49
- private_class_method :url, :request_body, :basic_auth
57
+ private_class_method :request, :handle_response
50
58
  end
51
59
  end
@@ -1,9 +1,29 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SecurionPay
2
4
  class Configuration
3
5
  class << self
4
- attr_accessor :service_url, :private_key
6
+ attr_accessor :secret_key
7
+ attr_reader :api_url, :uploads_url
5
8
  end
6
9
 
7
- @service_url = 'https://api.securionpay.com'.freeze
10
+ @api_url = 'https://api.securionpay.com'
11
+ @uploads_url = 'https://uploads.securionpay.com'
12
+
13
+ def self.api_url=(api_url)
14
+ @api_url = if api_url.nil?
15
+ 'https://api.securionpay.com'
16
+ else
17
+ api_url.gsub(%r{/$}, "")
18
+ end
19
+ end
20
+
21
+ def self.uploads_url=(uploads_url)
22
+ @uploads_url = if uploads_url.nil?
23
+ 'https://uploads.securionpay.com'
24
+ else
25
+ uploads_url.gsub(%r{/$}, "")
26
+ end
27
+ end
8
28
  end
9
29
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Credits
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/credits", json: params)
9
+ end
10
+
11
+ def self.retrieve(credit_id)
12
+ communicator.get("#{Configuration.api_url}/credits/#{credit_id}")
13
+ end
14
+
15
+ def self.update(credit_id, params)
16
+ communicator.post("#{Configuration.api_url}/credits/#{credit_id}", json: params)
17
+ end
18
+
19
+ def self.list(params = nil)
20
+ communicator.get("#{Configuration.api_url}/credits", query: params)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class CrossSaleOffers
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/cross-sale-offers", json: params)
9
+ end
10
+
11
+ def self.retrieve(cross_sale_offer_id)
12
+ communicator.get("#{Configuration.api_url}/cross-sale-offers/#{cross_sale_offer_id}")
13
+ end
14
+
15
+ def self.update(cross_sale_offer_id, params)
16
+ communicator.post("#{Configuration.api_url}/cross-sale-offers/#{cross_sale_offer_id}", json: params)
17
+ end
18
+
19
+ def self.delete(cross_sale_offer_id)
20
+ communicator.delete("#{Configuration.api_url}/cross-sale-offers/#{cross_sale_offer_id}")
21
+ end
22
+
23
+ def self.list(params = nil)
24
+ communicator.get("#{Configuration.api_url}/cross-sale-offers", query: params)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Customers
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/customers", json: params)
9
+ end
10
+
11
+ def self.retrieve(customer_id)
12
+ communicator.get("#{Configuration.api_url}/customers/#{customer_id}")
13
+ end
14
+
15
+ def self.update(customer_id, params)
16
+ communicator.post("#{Configuration.api_url}/customers/#{customer_id}", json: params)
17
+ end
18
+
19
+ def self.delete(customer_id)
20
+ communicator.delete("#{Configuration.api_url}/customers/#{customer_id}")
21
+ end
22
+
23
+ def self.list(params = nil)
24
+ communicator.get("#{Configuration.api_url}/customers", query: params)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Disputes
5
+ extend TransactionBase
6
+
7
+ def self.retrieve(dispute_id)
8
+ communicator.get("#{Configuration.api_url}/disputes/#{dispute_id}")
9
+ end
10
+
11
+ def self.update(dispute_id, params)
12
+ communicator.post("#{Configuration.api_url}/disputes/#{dispute_id}", json: params)
13
+ end
14
+
15
+ def self.close(dispute_id)
16
+ communicator.post("#{Configuration.api_url}/disputes/#{dispute_id}/close")
17
+ end
18
+
19
+ def self.list(params = nil)
20
+ communicator.get("#{Configuration.api_url}/disputes", query: params)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Events
5
+ extend TransactionBase
6
+
7
+ def self.retrieve(event_id)
8
+ communicator.get("#{Configuration.api_url}/events/#{event_id}")
9
+ end
10
+
11
+ def self.list(params = nil)
12
+ communicator.get("#{Configuration.api_url}/events", query: params)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class FileUploads
5
+ extend TransactionBase
6
+
7
+ def self.upload(file, params)
8
+ body = { file: file }.merge(params)
9
+ communicator.post("#{Configuration.uploads_url}/files", body: body)
10
+ end
11
+
12
+ def self.list(params = nil)
13
+ communicator.get("#{Configuration.uploads_url}/files", query: params)
14
+ end
15
+
16
+ def self.retrieve(file_upload_id)
17
+ communicator.get("#{Configuration.uploads_url}/files/#{file_upload_id}")
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class FraudWarnings
5
+ extend TransactionBase
6
+
7
+ def self.retrieve(fraud_warning_id)
8
+ communicator.get("#{Configuration.api_url}/fraud-warnings/#{fraud_warning_id}")
9
+ end
10
+
11
+ def self.list(params = nil)
12
+ communicator.get("#{Configuration.api_url}/fraud-warnings", query: params)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Plans
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/plans", json: params)
9
+ end
10
+
11
+ def self.retrieve(plan_id)
12
+ communicator.get("#{Configuration.api_url}/plans/#{plan_id}")
13
+ end
14
+
15
+ def self.update(plan_id, params)
16
+ communicator.post("#{Configuration.api_url}/plans/#{plan_id}", json: params)
17
+ end
18
+
19
+ def self.delete(plan_id)
20
+ communicator.delete("#{Configuration.api_url}/plans/#{plan_id}")
21
+ end
22
+
23
+ def self.list(params = nil)
24
+ communicator.get("#{Configuration.api_url}/plans", query: params)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class SecurionPayException < StandardError
5
+ attr_reader :response
6
+
7
+ def initialize(response)
8
+ super(response)
9
+ @response = response
10
+ end
11
+
12
+ def [](key)
13
+ response[key]
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Subscriptions
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/subscriptions", json: params)
9
+ end
10
+
11
+ def self.retrieve(subscription_id)
12
+ communicator.get("#{Configuration.api_url}/subscriptions/#{subscription_id}")
13
+ end
14
+
15
+ def self.update(subscription_id, params)
16
+ communicator.post("#{Configuration.api_url}/subscriptions/#{subscription_id}", json: params)
17
+ end
18
+
19
+ def self.cancel(subscription_id)
20
+ communicator.delete("#{Configuration.api_url}/subscriptions/#{subscription_id}")
21
+ end
22
+
23
+ def self.list(params = nil)
24
+ communicator.get("#{Configuration.api_url}/subscriptions", query: params)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ class Tokens
5
+ extend TransactionBase
6
+
7
+ def self.create(params)
8
+ communicator.post("#{Configuration.api_url}/tokens", json: params)
9
+ end
10
+
11
+ def self.retrieve(token_id)
12
+ communicator.get("#{Configuration.api_url}/tokens/#{token_id}")
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SecurionPay
4
+ module TransactionBase
5
+ def communicator
6
+ @communicator ||= Communicator
7
+ end
8
+
9
+ def communicator=(value)
10
+ @communicator = value
11
+ end
12
+ end
13
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module SecurionPay
2
- VERSION = '0.3.0'.freeze
4
+ VERSION = '1.0.0'
3
5
  end
data/lib/securionpay.rb CHANGED
@@ -1,7 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'securionpay/transaction_base'
4
+ require 'securionpay/version'
5
+ require 'securionpay/securion_pay_exception'
6
+
7
+ require 'securionpay/blacklist'
1
8
  require 'securionpay/cards'
9
+ require 'securionpay/charges'
2
10
  require 'securionpay/communicator'
3
11
  require 'securionpay/configuration'
4
- require 'securionpay/version'
12
+ require 'securionpay/credits'
13
+ require 'securionpay/cross_sale_offers'
14
+ require 'securionpay/customers'
15
+ require 'securionpay/disputes'
16
+ require 'securionpay/events'
17
+ require 'securionpay/file_uploads'
18
+ require 'securionpay/fraud_warnings'
19
+ require 'securionpay/plans'
20
+ require 'securionpay/subscriptions'
21
+ require 'securionpay/tokens'
22
+
5
23
  #
6
24
  # SecurionPay start point
7
25
  module SecurionPay