elements-pay 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.
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Elements
4
+ class ClientToken < APIResource
5
+ OBJECT_NAME = 'client_token'
6
+
7
+ api_method :create,
8
+ method: :post,
9
+ path: '/api/v1/authentication/client_token',
10
+ parser: ->(json) { json[:client_token] }
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Elements
4
+ class Customer < APIResource
5
+ OBJECT_NAME = 'customer'
6
+
7
+ api_method :delete, method: :delete, path: '/api/v1/customers/{external_customer_id}'
8
+ end
9
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Elements
4
+ class Dispute < APIResource
5
+ OBJECT_NAME = 'dispute'
6
+
7
+ api_method :retrieve, method: :get, path: '/api/v1/disputes/{id}'
8
+ api_method :list, method: :get, path: '/api/v1/disputes'
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Elements
4
+ class PaymentMethod < APIResource
5
+ OBJECT_NAME = 'customer_payment_method'
6
+
7
+ api_method :retrieve, method: :get, path: '/api/v1/payment_methods/{id}'
8
+ api_method :create, method: :post, path: '/api/v1/payment_methods'
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Elements
4
+ class PaymentMethodGateway < APIResource
5
+ OBJECT_NAME = 'customer_payment_method_gateway_reference'
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Elements
4
+ class Refund < APIResource
5
+ OBJECT_NAME = 'refund'
6
+
7
+ api_method :create, method: :post, path: '/api/v1/refunds'
8
+ api_method :retrieve, method: :get, path: '/api/v1/refunds/{id}'
9
+ api_method :list, method: :get, path: '/api/v1/refunds'
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Elements
4
+ class Token < APIResource
5
+ OBJECT_NAME = 'token'
6
+
7
+ api_method :retrieve, method: :get, path: '/api/v1/tokens/retrieve'
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ Dir[File.join(__dir__, 'resources', '*.rb')].sort.each { |f| require f }
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Elements
4
+ module Util
5
+ def self.symbolize_names(object)
6
+ case object
7
+ when Hash
8
+ new_hash = {}
9
+ object.each do |key, value|
10
+ key = (begin
11
+ key.to_sym
12
+ rescue StandardError
13
+ key
14
+ end) || key
15
+ new_hash[key] = symbolize_names(value)
16
+ end
17
+ new_hash
18
+ when Array
19
+ object.map { |value| symbolize_names(value) }
20
+ else
21
+ object
22
+ end
23
+ end
24
+
25
+ def self.convert_to_elements_object(data)
26
+ case data
27
+ when Hash
28
+ data = symbolize_names(data)
29
+ klass = object_classes.fetch(data[:type], ElementsObject)
30
+ id = data.delete(:id)
31
+ attributes = {}
32
+ data.each do |key, value|
33
+ attributes[key] = convert_to_elements_object(value)
34
+ end
35
+ klass.new(id, attributes)
36
+ when Array
37
+ data.map { |i| convert_to_elements_object(i) }
38
+ else
39
+ data
40
+ end
41
+ end
42
+
43
+ def self.object_classes
44
+ @object_classes ||= Elements::ObjectTypes.object_names_to_classes
45
+ end
46
+
47
+ def self.monotonic_time
48
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Elements
4
+ VERSION = '1.0.0'
5
+ end
data/lib/elements.rb ADDED
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'cgi'
4
+ require 'securerandom'
5
+ require 'uri'
6
+ require 'json'
7
+ require 'logger'
8
+
9
+ require 'addressable'
10
+ require 'rest-client'
11
+
12
+ require 'elements/version'
13
+ require 'elements/elements_object'
14
+ require 'elements/errors'
15
+ require 'elements/logging'
16
+ require 'elements/object_types'
17
+ require 'elements/util'
18
+ require 'elements/resources'
19
+ require 'elements/elements_client'
20
+ require 'elements/elements_configuration'
21
+ require 'elements/elements_response'
22
+
23
+ module Elements
24
+ def self.configure
25
+ yield(config)
26
+ end
27
+
28
+ def self.config
29
+ @config ||= Elements::ElementsConfiguration.new
30
+ end
31
+ end
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: elements-pay
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Elements
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-04-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: addressable
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.5'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rest-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 2.0.1
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '2.0'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 2.0.1
47
+ description: Ruby bindings for the Elements API
48
+ email: help@elements.io
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - ".rspec"
54
+ - ".ruby-gemset"
55
+ - ".ruby-version"
56
+ - Gemfile
57
+ - README.md
58
+ - Rakefile
59
+ - bin/elements-console
60
+ - elements-pay.gemspec
61
+ - lib/elements.rb
62
+ - lib/elements/certs/cacert.pem
63
+ - lib/elements/elements_client.rb
64
+ - lib/elements/elements_configuration.rb
65
+ - lib/elements/elements_object.rb
66
+ - lib/elements/elements_response.rb
67
+ - lib/elements/errors.rb
68
+ - lib/elements/logging.rb
69
+ - lib/elements/object_types.rb
70
+ - lib/elements/resources.rb
71
+ - lib/elements/resources/api_resource.rb
72
+ - lib/elements/resources/charge.rb
73
+ - lib/elements/resources/checkout_session.rb
74
+ - lib/elements/resources/client_token.rb
75
+ - lib/elements/resources/customer.rb
76
+ - lib/elements/resources/dispute.rb
77
+ - lib/elements/resources/payment_method.rb
78
+ - lib/elements/resources/payment_method_gateway.rb
79
+ - lib/elements/resources/refund.rb
80
+ - lib/elements/resources/token.rb
81
+ - lib/elements/util.rb
82
+ - lib/elements/version.rb
83
+ homepage: https://elements.io
84
+ licenses:
85
+ - MIT
86
+ metadata:
87
+ github_repo: git@github.com:elementspay/elements-ruby-sdk.git
88
+ bug_tracker_uri: https://github.com/elementspay/elements-ruby-sdk/issues
89
+ source_code_uri: https://github.com/elementspay/elements-ruby-sdk
90
+ post_install_message:
91
+ rdoc_options: []
92
+ require_paths:
93
+ - lib
94
+ required_ruby_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ requirements: []
105
+ rubygems_version: 3.1.4
106
+ signing_key:
107
+ specification_version: 4
108
+ summary: The Elements Ruby SDK
109
+ test_files: []