cryptomate_api 0.1.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 665269594527cdc382621877f03ce9945b856cd13564bda1602db1025fda8691
4
- data.tar.gz: fe1fc8c40784ff932c02416be565846f6045dc8d3f06bd92185765fc2d4561aa
3
+ metadata.gz: '029b00c3b8c7a2e7659083238fa82c181269d650f9e4bb2615b60afa0b8e3e47'
4
+ data.tar.gz: 34cca9b36b988938110cd54b8e2637741f64194f69e55cbfd3bcf9c8dbbfac29
5
5
  SHA512:
6
- metadata.gz: 1b8d78e0075c9cb87a036aba6153cc5d5ef4f93e65e71346d749221a465b25808a400dd0fb874cf96435c54be05eaadba81006b3addef6fb9347674a8e515baf
7
- data.tar.gz: dc44a554406da97883282b4bd583d343a9c6cd7732d78dd78dad1e9ac8db942d934f4b1cc91646888cb7f987461a9e6410eba03ee3fe0da01bdfe3d1b7ee060a
6
+ metadata.gz: 859353f5ada4b053995c8752acb8641bb701267344373f584dcbb14bca8f626bf70d775fc2f894a63e7cb4b60a55df10fc1d5292910694bed6ebf994aa8a2545
7
+ data.tar.gz: effa9092de8200bbf583292928116729c2a9883966103e3c75de9fe0e105cfb9592194a5a430702ebbb4e0ba2a2b90bbdbb75a59acf617b0d22cfd08cc876673
data/.rubocop.yml CHANGED
@@ -1,13 +1,19 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.6
2
+ NewCops: enable
3
+ TargetRubyVersion: 3.1
3
4
 
4
- Style/StringLiterals:
5
- Enabled: true
6
- EnforcedStyle: double_quotes
5
+ Style/Documentation:
6
+ Enabled: false
7
7
 
8
- Style/StringLiteralsInInterpolation:
9
- Enabled: true
10
- EnforcedStyle: double_quotes
8
+ Naming/VariableNumber:
9
+ EnforcedStyle: snake_case
11
10
 
12
11
  Layout/LineLength:
13
12
  Max: 120
13
+ AllowedPatterns: ['(\A|\s)#'] # ignore comments
14
+
15
+ Lint/AmbiguousBlockAssociation:
16
+ Enabled: false
17
+
18
+ Naming/AccessorMethodName:
19
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -3,3 +3,10 @@
3
3
  ## [0.1.0] - 2023-11-04
4
4
 
5
5
  - Initial release
6
+ - Modules included:
7
+ - [Management](https://cryptomate.me/docs/management)
8
+ - [MPC](https://cryptomate.me/docs/mpc)
9
+
10
+ ## [0.2.0] - 2023-11-30
11
+
12
+ - Added [Payments module](https://cryptomate.me/docs/payments)
data/Gemfile CHANGED
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in cryptomate_api.gemspec
6
6
  gemspec
7
7
 
8
- gem "rake", "~> 13.0"
8
+ gem 'rake', '~> 13.0'
9
9
 
10
- gem "rspec", "~> 3.0"
10
+ gem 'rspec', '~> 3.0'
11
11
 
12
- gem "rubocop", "~> 1.21"
12
+ gem 'rubocop', '~> 1.21'
data/Gemfile.lock ADDED
@@ -0,0 +1,67 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ cryptomate_api (0.2.2)
5
+ httparty (~> 0.18)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ ast (2.4.2)
11
+ diff-lcs (1.5.0)
12
+ httparty (0.21.0)
13
+ mini_mime (>= 1.0.0)
14
+ multi_xml (>= 0.5.2)
15
+ json (2.6.3)
16
+ language_server-protocol (3.17.0.3)
17
+ mini_mime (1.1.5)
18
+ multi_xml (0.6.0)
19
+ parallel (1.23.0)
20
+ parser (3.2.2.4)
21
+ ast (~> 2.4.1)
22
+ racc
23
+ racc (1.7.3)
24
+ rainbow (3.1.1)
25
+ rake (13.1.0)
26
+ regexp_parser (2.8.2)
27
+ rexml (3.2.6)
28
+ rspec (3.12.0)
29
+ rspec-core (~> 3.12.0)
30
+ rspec-expectations (~> 3.12.0)
31
+ rspec-mocks (~> 3.12.0)
32
+ rspec-core (3.12.2)
33
+ rspec-support (~> 3.12.0)
34
+ rspec-expectations (3.12.3)
35
+ diff-lcs (>= 1.2.0, < 2.0)
36
+ rspec-support (~> 3.12.0)
37
+ rspec-mocks (3.12.6)
38
+ diff-lcs (>= 1.2.0, < 2.0)
39
+ rspec-support (~> 3.12.0)
40
+ rspec-support (3.12.1)
41
+ rubocop (1.57.2)
42
+ json (~> 2.3)
43
+ language_server-protocol (>= 3.17.0)
44
+ parallel (~> 1.10)
45
+ parser (>= 3.2.2.4)
46
+ rainbow (>= 2.2.2, < 4.0)
47
+ regexp_parser (>= 1.8, < 3.0)
48
+ rexml (>= 3.2.5, < 4.0)
49
+ rubocop-ast (>= 1.28.1, < 2.0)
50
+ ruby-progressbar (~> 1.7)
51
+ unicode-display_width (>= 2.4.0, < 3.0)
52
+ rubocop-ast (1.30.0)
53
+ parser (>= 3.2.1.0)
54
+ ruby-progressbar (1.13.0)
55
+ unicode-display_width (2.5.0)
56
+
57
+ PLATFORMS
58
+ x86_64-darwin-22
59
+
60
+ DEPENDENCIES
61
+ cryptomate_api!
62
+ rake (~> 13.0)
63
+ rspec (~> 3.0)
64
+ rubocop (~> 1.21)
65
+
66
+ BUNDLED WITH
67
+ 2.4.10
data/Rakefile CHANGED
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
5
 
6
6
  RSpec::Core::RakeTask.new(:spec)
7
7
 
8
- require "rubocop/rake_task"
8
+ require 'rubocop/rake_task'
9
9
 
10
10
  RuboCop::RakeTask.new
11
11
 
@@ -1,31 +1,34 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "lib/cryptomate_api/version"
3
+ require_relative 'lib/cryptomate_api/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "cryptomate_api"
6
+ spec.name = 'cryptomate_api'
7
7
  spec.version = CryptomateApi::VERSION
8
- spec.authors = ["Matias Albarello"]
9
- spec.email = ["matias.albarello@gmail.com"]
10
- spec.licenses = ["MIT"]
8
+ spec.authors = ['Matias Albarello']
9
+ spec.email = ['matias.albarello@gmail.com']
10
+ spec.licenses = ['MIT']
11
11
 
12
- spec.summary = "Ruby client for the CryptoMate API."
13
- spec.description = "Provides a Ruby interface to the CryptoMate API, allowing easy access to cryptocurrency data and transaction operations. Supports retrieving currency details, creating and fetching transactions, and managing user information."
14
- spec.homepage = "https://github.com/matiasalbarello/cryptomate_api"
15
- spec.required_ruby_version = ">= 2.6.0"
12
+ spec.summary = 'Ruby client for the CryptoMate API.'
13
+ spec.description = 'Provides a Ruby interface to the CryptoMate API, allowing easy access to cryptocurrency data and \
14
+ transaction operations. Supports retrieving currency details, creating and fetching transactions, \
15
+ and managing user information.'
16
+ spec.homepage = 'https://github.com/matiasalbarello/cryptomate_api'
17
+ spec.required_ruby_version = '>= 3.1'
16
18
 
17
- spec.metadata["homepage_uri"] = spec.homepage
18
- spec.metadata["source_code_uri"] = spec.homepage
19
- spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/CHANGELOG.md"
19
+ spec.metadata['homepage_uri'] = spec.homepage
20
+ spec.metadata['source_code_uri'] = spec.homepage
21
+ spec.metadata['changelog_uri'] = "#{spec.homepage}/blob/main/CHANGELOG.md"
20
22
 
21
23
  spec.files = Dir.chdir(__dir__) do
22
24
  `git ls-files -z`.split("\x0").reject do |f|
23
25
  (File.expand_path(f) == __FILE__) || f.start_with?(*%w[bin/ test/ spec/ features/ .git .circleci appveyor])
24
26
  end
25
27
  end
26
- spec.bindir = "exe"
28
+ spec.bindir = 'exe'
27
29
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
30
+ spec.require_paths = ['lib']
29
31
 
30
- spec.add_dependency "httparty", "~> 0.18"
32
+ spec.add_dependency 'httparty', '~> 0.18'
33
+ spec.metadata['rubygems_mfa_required'] = 'true'
31
34
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'httparty'
2
4
 
3
5
  module CryptomateApi
@@ -9,7 +11,7 @@ module CryptomateApi
9
11
  CryptomateApi.configuration ||= CryptomateApi::Configuration.new
10
12
  @api_key = CryptomateApi.configuration.api_key
11
13
  self.class.base_uri CryptomateApi.configuration.base_uri
12
- self.class.headers "x-api-key" => "#{@api_key}"
14
+ self.class.headers 'x-api-key' => @api_key
13
15
  end
14
16
  end
15
- end
17
+ end
@@ -16,7 +16,7 @@ module CryptomateApi
16
16
  # }
17
17
  # ]
18
18
  def get_all_blockchains
19
- self.class.get("/management/blockchains/list")
19
+ self.class.get('/management/blockchains/list')
20
20
  end
21
21
  end
22
22
  end
@@ -16,7 +16,7 @@ module CryptomateApi
16
16
  # "webhook_url": "string",
17
17
  # }
18
18
  def get_clients
19
- self.class.get("/management/clients")
19
+ self.class.get('/management/clients')
20
20
  end
21
21
 
22
22
  # Update Webhook-Url
@@ -29,7 +29,7 @@ module CryptomateApi
29
29
  # "webhook_url": "string"
30
30
  # }
31
31
  def update_webhook_url(webhook_url)
32
- self.class.patch("/management/clients/webhook-url", body: { webhook_url: }.to_json)
32
+ self.class.patch('/management/clients/webhook-url', body: { webhook_url: }.to_json)
33
33
  end
34
34
 
35
35
  # Update Client-Information
@@ -44,7 +44,7 @@ module CryptomateApi
44
44
  # "webhook_url": "string"
45
45
  # }
46
46
  def update_client_information(name, email, webhook_url)
47
- self.class.put("/management/clients", body: { name:, email:, webhook_url: }.to_json)
47
+ self.class.put('/management/clients', body: { name:, email:, webhook_url: }.to_json)
48
48
  end
49
49
 
50
50
  # Update Payment Address
@@ -56,7 +56,7 @@ module CryptomateApi
56
56
  # "address": "string",
57
57
  # }
58
58
  def update_payment_address(address, blockchain)
59
- self.class.patch("/management/clients/payment-treasury", body: { address:, blockchain: }.to_json)
59
+ self.class.patch('/management/clients/payment-treasury', body: { address:, blockchain: }.to_json)
60
60
  end
61
61
  end
62
62
  end
@@ -24,7 +24,7 @@ module CryptomateApi
24
24
  # @param [String] blockchain (Id of the blockchain.)
25
25
  # Response: None
26
26
  def set_payment_destination(address, blockchain)
27
- self.class.post("/management/configurations/payments", body: { address:, blockchain: }.to_json)
27
+ self.class.post('/management/configurations/payments', body: { address:, blockchain: }.to_json)
28
28
  end
29
29
 
30
30
  # Delete payment destination
@@ -61,7 +61,7 @@ module CryptomateApi
61
61
  # }
62
62
  # }
63
63
  def create_credential(api_key, operation_id)
64
- self.class.post("/management/credentials", body: { api_key:, operation_id: }.to_json)
64
+ self.class.post('/management/credentials', body: { api_key:, operation_id: }.to_json)
65
65
  end
66
66
 
67
67
  # Modifies a credential by ID.
@@ -16,7 +16,7 @@ module CryptomateApi
16
16
  # }
17
17
  # ]
18
18
  def get_all_keys
19
- self.class.get("/management/keys/list")
19
+ self.class.get('/management/keys/list')
20
20
  end
21
21
 
22
22
  # Get a specific key
@@ -43,7 +43,7 @@ module CryptomateApi
43
43
  # }
44
44
  # ]
45
45
  def create_key(name)
46
- self.class.post("/management/keys/create", body: { name: }.to_json)
46
+ self.class.post('/management/keys/create', body: { name: }.to_json)
47
47
  end
48
48
 
49
49
  # Modify a key
@@ -15,7 +15,7 @@ module CryptomateApi
15
15
  # }
16
16
  # ]
17
17
  def get_all_operations
18
- self.class.get("/management/operations/list")
18
+ self.class.get('/management/operations/list')
19
19
  end
20
20
 
21
21
  # Get a specific operation
@@ -23,7 +23,7 @@ module CryptomateApi
23
23
  # ]
24
24
  # }
25
25
  def get_all_accounts
26
- self.class.get("/mpc/accounts/list")
26
+ self.class.get('/mpc/accounts/list')
27
27
  end
28
28
 
29
29
  # Create an account
@@ -36,7 +36,7 @@ module CryptomateApi
36
36
  # "wallets": []
37
37
  # }
38
38
  def create_account(alias_name)
39
- self.class.post("/mpc/accounts/create", body: { alias: alias_name }.to_json)
39
+ self.class.post('/mpc/accounts/create', body: { alias: alias_name }.to_json)
40
40
  end
41
41
 
42
42
  # Edit account: Modifies the account information.
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CryptomateApi
4
+ # The Payments tool is designed to create payments in specific assets through a secure escrow wallet system.
5
+ # To use this module, you will first need to set up your `payment_address` on the Management API. This address is where you want to receive your funds once the payment is complete.
6
+
7
+ # Once you have set up your `payment_address`, you can use the Payments API to create payments in the following steps:
8
+
9
+ # 1. Create a payment intent: is a representation of a payment that is being processed. To create a payment intent, you will need to specify the following information:
10
+ # a. The amount of the payment
11
+ # b. The address of the asset in which the payment is to be made (Check listed token API from this section)
12
+ # c. The blockchain where your assets exists (Check get blockchain from the Management API)
13
+ # 2. Send the customer the address returned by this service.
14
+
15
+ # Once the customer has completed the payment, you will receive a webhook notification (configurable in Management API).
16
+ # This notification will contain the status of the payment.
17
+ #
18
+ class Payment < Base
19
+ # Creates a new payment request.
20
+ # https://cryptomate.me/docs/payments#create-payments-request
21
+ # @param [String] token_address (Address of the contract from the token to transfer.)
22
+ # @param [double] amount (Amount of the selected asset to be payed.)
23
+ # @param [String] blockchain (Blockchain to create the payment.)
24
+ # Response:
25
+ # {
26
+ # "id": "String",
27
+ # "token_address": "String",
28
+ # "wallet_address": "String",
29
+ # "amount": "Decimal",
30
+ # }
31
+ def create_payments_request(token_address, amount, blockchain)
32
+ self.class.post('/commerce/payments/create', body: { token_address:, amount:, blockchain: }.to_json)
33
+ end
34
+
35
+ # Returns all the pending payments.
36
+ # https://cryptomate.me/docs/payments#pending-payments
37
+ # Response:
38
+ # [
39
+ # {
40
+ # "id": "String",
41
+ # "token_address": "String",
42
+ # "wallet_address": "String",
43
+ # "amount": "Decimal",
44
+ # }
45
+ # ]
46
+ def pending_payments
47
+ self.class.get('/commerce/payments/list')
48
+ end
49
+
50
+ # Retrieves all the listed tokens to create payments. In the response you will see the token name and it's address on the blockchain.
51
+ # https://cryptomate.me/docs/payments#get-listed-tokens
52
+ # @param [String] blockchain (Blockchain to get the listed tokens.)
53
+ # Response:
54
+ # {
55
+ # "Token name 1": "String",
56
+ # "Token name 2": "String",
57
+ # }
58
+ def get_listed_tokens(blockchain)
59
+ self.class.get("/commerce/payments/#{blockchain}/tokens")
60
+ end
61
+ end
62
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CryptomateApi
4
- VERSION = "0.1.4"
4
+ VERSION = '0.2.0'
5
5
  end
@@ -2,8 +2,9 @@
2
2
 
3
3
  require_relative 'cryptomate_api/configuration'
4
4
  require_relative 'cryptomate_api/base'
5
+ require_relative 'cryptomate_api/payment'
5
6
 
6
- Dir[File.join(__dir__, 'cryptomate_api/{management,mpc,nft}/**/*.rb')].sort.each { |file| require file }
7
+ Dir[File.join(__dir__, 'cryptomate_api/{management,mpc}/**/*.rb')].each { |file| require file }
7
8
 
8
9
  module CryptomateApi
9
10
  class Error < StandardError; end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cryptomate_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matias Albarello
@@ -24,9 +24,10 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.18'
27
- description: Provides a Ruby interface to the CryptoMate API, allowing easy access
28
- to cryptocurrency data and transaction operations. Supports retrieving currency
29
- details, creating and fetching transactions, and managing user information.
27
+ description: |-
28
+ Provides a Ruby interface to the CryptoMate API, allowing easy access to cryptocurrency data and \
29
+ transaction operations. Supports retrieving currency details, creating and fetching transactions, \
30
+ and managing user information.
30
31
  email:
31
32
  - matias.albarello@gmail.com
32
33
  executables: []
@@ -38,6 +39,7 @@ files:
38
39
  - CHANGELOG.md
39
40
  - CODE_OF_CONDUCT.md
40
41
  - Gemfile
42
+ - Gemfile.lock
41
43
  - README.md
42
44
  - Rakefile
43
45
  - cryptomate_api.gemspec
@@ -52,6 +54,7 @@ files:
52
54
  - lib/cryptomate_api/management/operation.rb
53
55
  - lib/cryptomate_api/mpc/account.rb
54
56
  - lib/cryptomate_api/mpc/wallet.rb
57
+ - lib/cryptomate_api/payment.rb
55
58
  - lib/cryptomate_api/version.rb
56
59
  - sig/cryptomate_api.rbs
57
60
  homepage: https://github.com/matiasalbarello/cryptomate_api
@@ -61,6 +64,7 @@ metadata:
61
64
  homepage_uri: https://github.com/matiasalbarello/cryptomate_api
62
65
  source_code_uri: https://github.com/matiasalbarello/cryptomate_api
63
66
  changelog_uri: https://github.com/matiasalbarello/cryptomate_api/blob/main/CHANGELOG.md
67
+ rubygems_mfa_required: 'true'
64
68
  post_install_message:
65
69
  rdoc_options: []
66
70
  require_paths:
@@ -69,7 +73,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
69
73
  requirements:
70
74
  - - ">="
71
75
  - !ruby/object:Gem::Version
72
- version: 2.6.0
76
+ version: '3.1'
73
77
  required_rubygems_version: !ruby/object:Gem::Requirement
74
78
  requirements:
75
79
  - - ">="