treezor_connect 0.7.0 → 0.9.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 +4 -4
- data/lib/treezor_connect/api_operations/create.rb +3 -3
- data/lib/treezor_connect/api_operations/delete.rb +14 -0
- data/lib/treezor_connect/api_operations/fetch.rb +3 -3
- data/lib/treezor_connect/api_operations/list.rb +3 -3
- data/lib/treezor_connect/api_operations/request.rb +13 -2
- data/lib/treezor_connect/api_operations/update.rb +14 -0
- data/lib/treezor_connect/api_resource.rb +85 -6
- data/lib/treezor_connect/client.rb +30 -27
- data/lib/treezor_connect/resources/beneficiary.rb +18 -0
- data/lib/treezor_connect/resources/oauth/token.rb +30 -0
- data/lib/treezor_connect/resources/sca/external_operation.rb +17 -0
- data/lib/treezor_connect/resources/sca/passcode.rb +13 -0
- data/lib/treezor_connect/resources/sca/wallet.rb +23 -0
- data/lib/treezor_connect/resources.rb +5 -0
- data/lib/treezor_connect/treezor_response.rb +1 -1
- data/lib/treezor_connect.rb +3 -1
- metadata +11 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 9514742754e640586396259bf46db4ef3a714a99cc3c55dd0281690f8cd852a8
         | 
| 4 | 
            +
              data.tar.gz: d46865ec68613a926a59d7a224ad9d4fa45acb89f8a07073621ea808cbc1be84
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: cd946dd81fda3ccf0ba5cd61010c2fe2ccbe1aa6e4d1d38b762676112c31a00a0e9b9c551d389ceec68a425a8e736f1deabadedb9349d0a1792b45cf3969c0be
         | 
| 7 | 
            +
              data.tar.gz: 965dcbeceeac83b34f50fa6762fc0c62d406e600ca7a25476a48044782ccefb591925feff9475c95745e31bdcb38ec00533ae7384d0ad22e7d170b2bb0a0c1dc
         | 
| @@ -3,9 +3,9 @@ | |
| 3 3 | 
             
            module TreezorConnect
         | 
| 4 4 | 
             
              module ApiOperations
         | 
| 5 5 | 
             
                module Create
         | 
| 6 | 
            -
                  def create(params = {})
         | 
| 7 | 
            -
                    treezor_response = request(:post, resource_url, body: params)
         | 
| 8 | 
            -
                    data =  | 
| 6 | 
            +
                  def create(params = {}, access_token = nil)
         | 
| 7 | 
            +
                    treezor_response = request(:post, resource_url, params: { body: params }, access_token:)
         | 
| 8 | 
            +
                    data = extract_response_data(treezor_response, extract_all_objects: false)
         | 
| 9 9 | 
             
                    Util.convert_to_treezor_object(data, { object_class: self::OBJECT_NAME })
         | 
| 10 10 | 
             
                  end
         | 
| 11 11 | 
             
                end
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module TreezorConnect
         | 
| 4 | 
            +
              module ApiOperations
         | 
| 5 | 
            +
                module Delete
         | 
| 6 | 
            +
                  def delete(id, params = {}, access_token = nil)
         | 
| 7 | 
            +
                    url = [resource_url, id].join('/')
         | 
| 8 | 
            +
                    treezor_response = request(:delete, url, params: { body: params }, access_token:)
         | 
| 9 | 
            +
                    data = extract_response_data(treezor_response, extract_all_objects: false)
         | 
| 10 | 
            +
                    Util.convert_to_treezor_object(data, { object_class: self::OBJECT_NAME })
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
| @@ -3,10 +3,10 @@ | |
| 3 3 | 
             
            module TreezorConnect
         | 
| 4 4 | 
             
              module ApiOperations
         | 
| 5 5 | 
             
                module Fetch
         | 
| 6 | 
            -
                  def fetch(id)
         | 
| 6 | 
            +
                  def fetch(id, access_token = nil)
         | 
| 7 7 | 
             
                    url = [resource_url, id].join('/')
         | 
| 8 | 
            -
                    treezor_response = request(:get, url)
         | 
| 9 | 
            -
                    data = treezor_response | 
| 8 | 
            +
                    treezor_response = request(:get, url, access_token:)
         | 
| 9 | 
            +
                    data = extract_response_data(treezor_response, extract_all_objects: false)
         | 
| 10 10 | 
             
                    Util.convert_to_treezor_object(data, { object_class: self::OBJECT_NAME })
         | 
| 11 11 | 
             
                  end
         | 
| 12 12 | 
             
                end
         | 
| @@ -3,9 +3,9 @@ | |
| 3 3 | 
             
            module TreezorConnect
         | 
| 4 4 | 
             
              module ApiOperations
         | 
| 5 5 | 
             
                module List
         | 
| 6 | 
            -
                  def list(filters = {})
         | 
| 7 | 
            -
                    treezor_response = request(:get, resource_url, { query: filters })
         | 
| 8 | 
            -
                    data = treezor_response | 
| 6 | 
            +
                  def list(filters = {}, access_token = nil)
         | 
| 7 | 
            +
                    treezor_response = request(:get, resource_url, params: { query: filters }, access_token:)
         | 
| 8 | 
            +
                    data = extract_response_data(treezor_response)
         | 
| 9 9 | 
             
                    Util.convert_to_treezor_object(data, { object_class: self::OBJECT_NAME })
         | 
| 10 10 | 
             
                  end
         | 
| 11 11 | 
             
                end
         | 
| @@ -4,9 +4,9 @@ module TreezorConnect | |
| 4 4 | 
             
              module ApiOperations
         | 
| 5 5 | 
             
                module Request
         | 
| 6 6 | 
             
                  module ClassMethods
         | 
| 7 | 
            -
                    def request(method, url, params  | 
| 7 | 
            +
                    def request(method, url, params: {}, headers: {}, access_token: nil)
         | 
| 8 8 | 
             
                      params = Util.normalize_params(params)
         | 
| 9 | 
            -
                      client = TreezorConnect::Client. | 
| 9 | 
            +
                      client = TreezorConnect::Client.new(access_token)
         | 
| 10 10 | 
             
                      response = client.execute_request(
         | 
| 11 11 | 
             
                        method, url,
         | 
| 12 12 | 
             
                        headers:,
         | 
| @@ -14,6 +14,17 @@ module TreezorConnect | |
| 14 14 | 
             
                      )
         | 
| 15 15 | 
             
                      TreezorResponse.from_http_response(response)
         | 
| 16 16 | 
             
                    end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    def extract_response_data(response, extract_all_objects: true)
         | 
| 19 | 
            +
                      if defined?(self::OBJECT_KEY) && response.data.key?(self::OBJECT_KEY)
         | 
| 20 | 
            +
                        objects = response.data.fetch(self::OBJECT_KEY)
         | 
| 21 | 
            +
                        return objects if extract_all_objects
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                        return objects[0]
         | 
| 24 | 
            +
                      end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                      response.data
         | 
| 27 | 
            +
                    end
         | 
| 17 28 | 
             
                  end
         | 
| 18 29 |  | 
| 19 30 | 
             
                  def self.included(base)
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module TreezorConnect
         | 
| 4 | 
            +
              module ApiOperations
         | 
| 5 | 
            +
                module Update
         | 
| 6 | 
            +
                  def update(id, params = {}, access_token = nil)
         | 
| 7 | 
            +
                    url = [resource_url, id].join('/')
         | 
| 8 | 
            +
                    treezor_response = request(:put, url, params: { body: params }, access_token:)
         | 
| 9 | 
            +
                    data = extract_response_data(treezor_response, extract_all_objects: false)
         | 
| 10 | 
            +
                    Util.convert_to_treezor_object(data, { object_class: self::OBJECT_NAME })
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
| @@ -1,11 +1,90 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
               | 
| 3 | 
            +
            module TreezorConnect
         | 
| 4 | 
            +
              class ApiResource
         | 
| 5 | 
            +
                include TreezorConnect::ApiOperations::Request
         | 
| 5 6 |  | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 7 | 
            +
                class << self
         | 
| 8 | 
            +
                  def resource_url
         | 
| 9 | 
            +
                    raise NotImplementedError,
         | 
| 10 | 
            +
                          'APIResource is an abstract class. You should perform actions ' \
         | 
| 11 | 
            +
                          'on its subclasses (Payin, Payout, Transfer ...)'
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  def custom_action(http_method, *actions, ignores_id: false)
         | 
| 15 | 
            +
                    actions.each do |action|
         | 
| 16 | 
            +
                      case http_method
         | 
| 17 | 
            +
                      when :post
         | 
| 18 | 
            +
                        define_method_with_params(http_method, action)
         | 
| 19 | 
            +
                      when :put, :patch
         | 
| 20 | 
            +
                        define_put_path_methods(http_method, action, ignores_id)
         | 
| 21 | 
            +
                      else
         | 
| 22 | 
            +
                        raise ArgumentError, "Unsupported HTTP method: #{http_method}"
         | 
| 23 | 
            +
                      end
         | 
| 24 | 
            +
                    end
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  private
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  def define_method_with_params(http_method, action)
         | 
| 30 | 
            +
                    define_singleton_method(action) do |params = {}, access_token = nil|
         | 
| 31 | 
            +
                      url = build_url(action)
         | 
| 32 | 
            +
                      response = request(http_method, url, params: { body: params }, access_token:)
         | 
| 33 | 
            +
                      process_response(response)
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  def define_put_path_methods(http_method, action, ignores_id)
         | 
| 38 | 
            +
                    if ignores_id
         | 
| 39 | 
            +
                      define_method_without_id_and_params(http_method, action)
         | 
| 40 | 
            +
                    else
         | 
| 41 | 
            +
                      define_method_with_id_and_params(http_method, action)
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  def define_method_with_id_and_params(http_method, action)
         | 
| 46 | 
            +
                    define_singleton_method(action) do |id, params = {}, access_token = nil|
         | 
| 47 | 
            +
                      url = build_url(action, id)
         | 
| 48 | 
            +
                      response = request(http_method, url, params: { body: params }, access_token:)
         | 
| 49 | 
            +
                      process_response(response)
         | 
| 50 | 
            +
                    end
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  def define_method_without_id_and_params(http_method, action)
         | 
| 54 | 
            +
                    define_singleton_method(action) do |params = {}, access_token = nil|
         | 
| 55 | 
            +
                      url = build_url(action)
         | 
| 56 | 
            +
                      response = request(http_method, url, params: { body: params }, access_token:)
         | 
| 57 | 
            +
                      process_response(response)
         | 
| 58 | 
            +
                    end
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                  def build_url(action, id = nil)
         | 
| 62 | 
            +
                    parts = [resource_url]
         | 
| 63 | 
            +
                    parts << id if id
         | 
| 64 | 
            +
                    parts << camelize(action.to_s)
         | 
| 65 | 
            +
                    parts.join('/')
         | 
| 66 | 
            +
                  end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                  def process_response(response)
         | 
| 69 | 
            +
                    return if response.data.nil?
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                    data = if defined?(self::OBJECT_KEY) && response.data.key?(self::OBJECT_KEY)
         | 
| 72 | 
            +
                             response.data.fetch(self::OBJECT_KEY)[0]
         | 
| 73 | 
            +
                           else
         | 
| 74 | 
            +
                             response.data
         | 
| 75 | 
            +
                           end
         | 
| 76 | 
            +
                    Util.convert_to_treezor_object(data, { object_class: self::OBJECT_NAME })
         | 
| 77 | 
            +
                  end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                  def camelize(string, capitalize_first_letter: false)
         | 
| 80 | 
            +
                    string
         | 
| 81 | 
            +
                      .to_s
         | 
| 82 | 
            +
                      .split('_')
         | 
| 83 | 
            +
                      .map.with_index do |word, index|
         | 
| 84 | 
            +
                        capitalize_first_letter || index.positive? ? word.capitalize : word
         | 
| 85 | 
            +
                      end
         | 
| 86 | 
            +
                      .join
         | 
| 87 | 
            +
                  end
         | 
| 88 | 
            +
                end
         | 
| 10 89 | 
             
              end
         | 
| 11 90 | 
             
            end
         | 
| @@ -2,56 +2,59 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module TreezorConnect
         | 
| 4 4 | 
             
              class Client
         | 
| 5 | 
            -
                 | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
                  self.conn = conn || self.class.default_conn
         | 
| 9 | 
            -
                  self.oauth_client ||= OAuth2::Client.new(
         | 
| 10 | 
            -
                    TreezorConnect.client_id,
         | 
| 11 | 
            -
                    TreezorConnect.client_secret,
         | 
| 12 | 
            -
                    site: TreezorConnect.api_base_url
         | 
| 13 | 
            -
                  )
         | 
| 14 | 
            -
                end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                def self.active_client
         | 
| 17 | 
            -
                  Thread.current[:treezor_connect_client] ||= default_client
         | 
| 18 | 
            -
                end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                def self.default_client
         | 
| 21 | 
            -
                  Thread.current[:treezor_connect_client_default_client] ||=
         | 
| 22 | 
            -
                    TreezorConnect::Client.new(default_conn)
         | 
| 23 | 
            -
                end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                def self.default_conn
         | 
| 26 | 
            -
                  Thread.current[:treezor_connect_client_default_conn] ||= build_default_conn
         | 
| 5 | 
            +
                def initialize(access_token)
         | 
| 6 | 
            +
                  @conn = build_default_conn
         | 
| 7 | 
            +
                  @access_token = access_token.nil? ? default_access_token : access_token
         | 
| 27 8 | 
             
                end
         | 
| 28 9 |  | 
| 29 10 | 
             
                def execute_request(method, path, headers: {}, params: {})
         | 
| 30 11 | 
             
                  headers['Authorization'] = "Bearer #{access_token}"
         | 
| 31 12 | 
             
                  response = conn.public_send(method, path, params: params[:query], form: params[:form], json: params[:body],
         | 
| 32 13 | 
             
                                                            headers:)
         | 
| 33 | 
            -
                  http_body = JSON.parse(response.to_s)
         | 
| 34 14 | 
             
                  http_status = response.status
         | 
| 35 | 
            -
                  raise_api_error(http_status:, http_body:) unless http_status.success?
         | 
| 15 | 
            +
                  raise_api_error(http_status:, http_body: JSON.parse(response.to_s)) unless http_status.success?
         | 
| 36 16 |  | 
| 37 17 | 
             
                  response
         | 
| 38 18 | 
             
                end
         | 
| 39 19 |  | 
| 40 | 
            -
                 | 
| 20 | 
            +
                private
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                attr_reader :conn, :access_token
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def build_default_conn
         | 
| 41 25 | 
             
                  http = HTTP.persistent(TreezorConnect.api_base_url)
         | 
| 42 26 | 
             
                  return http.use(logging: { logger: Logger.new($stdout) }) unless ENV['ENABLE_HTTP_LOGGING'].nil?
         | 
| 43 27 |  | 
| 44 28 | 
             
                  http
         | 
| 45 29 | 
             
                end
         | 
| 46 30 |  | 
| 47 | 
            -
                 | 
| 31 | 
            +
                def oauth_client
         | 
| 32 | 
            +
                  @oauth_client ||= OAuth2::Client.new(
         | 
| 33 | 
            +
                    TreezorConnect.client_id,
         | 
| 34 | 
            +
                    TreezorConnect.client_secret,
         | 
| 35 | 
            +
                    site: TreezorConnect.api_base_url
         | 
| 36 | 
            +
                  )
         | 
| 37 | 
            +
                end
         | 
| 48 38 |  | 
| 49 | 
            -
                def  | 
| 39 | 
            +
                def fetch_access_token
         | 
| 50 40 | 
             
                  oauth_client.client_credentials.get_token.token
         | 
| 51 41 | 
             
                end
         | 
| 52 42 |  | 
| 53 43 | 
             
                def raise_api_error(http_status:, http_body:)
         | 
| 54 44 | 
             
                  raise ApiError, "API request failed: #{http_body.inspect} (HTTP response code was #{http_status})"
         | 
| 55 45 | 
             
                end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                def token_expired?(token)
         | 
| 48 | 
            +
                  OAuth2::AccessToken.new(conn, token).expired?
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                def default_access_token
         | 
| 52 | 
            +
                  access_token = Thread.current[:treezor_default_access_token]
         | 
| 53 | 
            +
                  if access_token.nil? || token_expired?(access_token)
         | 
| 54 | 
            +
                    Thread.current[:treezor_default_access_token] = fetch_access_token
         | 
| 55 | 
            +
                  else
         | 
| 56 | 
            +
                    access_token
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
                end
         | 
| 56 59 | 
             
              end
         | 
| 57 60 | 
             
            end
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module TreezorConnect
         | 
| 4 | 
            +
              class Beneficiary < ApiResource
         | 
| 5 | 
            +
                extend TreezorConnect::ApiOperations::Fetch
         | 
| 6 | 
            +
                extend TreezorConnect::ApiOperations::List
         | 
| 7 | 
            +
                extend TreezorConnect::ApiOperations::Create
         | 
| 8 | 
            +
                extend TreezorConnect::ApiOperations::Update
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                OBJECT_NAME = 'beneficiary'
         | 
| 11 | 
            +
                OBJECT_KEY = 'beneficiaries'
         | 
| 12 | 
            +
                OBJECT_PRIMARY_KEY = 'id'
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                def self.resource_url
         | 
| 15 | 
            +
                  '/v1/beneficiaries'
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
            end
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module TreezorConnect
         | 
| 4 | 
            +
              module Oauth
         | 
| 5 | 
            +
                class Token
         | 
| 6 | 
            +
                  class << self
         | 
| 7 | 
            +
                    def create(params = {})
         | 
| 8 | 
            +
                      oauth_client.client_credentials.get_token({
         | 
| 9 | 
            +
                                                                  grant_type: 'delegated_end_user',
         | 
| 10 | 
            +
                                                                  client_id: TreezorConnect.client_id,
         | 
| 11 | 
            +
                                                                  client_secret: TreezorConnect.client_secret,
         | 
| 12 | 
            +
                                                                  username: params[:username],
         | 
| 13 | 
            +
                                                                  password: params[:password],
         | 
| 14 | 
            +
                                                                  sca: params[:sca]
         | 
| 15 | 
            +
                                                                }).token
         | 
| 16 | 
            +
                    end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    private
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    def oauth_client
         | 
| 21 | 
            +
                      OAuth2::Client.new(
         | 
| 22 | 
            +
                        TreezorConnect.client_id,
         | 
| 23 | 
            +
                        TreezorConnect.client_secret,
         | 
| 24 | 
            +
                        site: TreezorConnect.api_base_url
         | 
| 25 | 
            +
                      )
         | 
| 26 | 
            +
                    end
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
            end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module TreezorConnect
         | 
| 4 | 
            +
              module Sca
         | 
| 5 | 
            +
                class ExternalOperation < ApiResource
         | 
| 6 | 
            +
                  extend TreezorConnect::ApiOperations::Create
         | 
| 7 | 
            +
                  extend TreezorConnect::ApiOperations::Update
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  OBJECT_NAME = 'sca/external_operation'
         | 
| 10 | 
            +
                  OBJECT_PRIMARY_KEY = 'externalOperationId'
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  def self.resource_url
         | 
| 13 | 
            +
                    '/core-connect/sca/externalOperations'
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module TreezorConnect
         | 
| 4 | 
            +
              module Sca
         | 
| 5 | 
            +
                class Wallet < ApiResource
         | 
| 6 | 
            +
                  extend TreezorConnect::ApiOperations::Fetch
         | 
| 7 | 
            +
                  extend TreezorConnect::ApiOperations::List
         | 
| 8 | 
            +
                  extend TreezorConnect::ApiOperations::Create
         | 
| 9 | 
            +
                  extend TreezorConnect::ApiOperations::Delete
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  custom_action :put, :lock, :unlock
         | 
| 12 | 
            +
                  custom_action :post, :swap
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  OBJECT_NAME = 'sca/wallet'
         | 
| 15 | 
            +
                  OBJECT_KEY = 'scaWallets'
         | 
| 16 | 
            +
                  OBJECT_PRIMARY_KEY = 'id'
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  def self.resource_url
         | 
| 19 | 
            +
                    '/core-connect/sca/scawallets'
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| @@ -1,5 +1,10 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            +
            require 'treezor_connect/resources/beneficiary'
         | 
| 3 4 | 
             
            require 'treezor_connect/resources/payin'
         | 
| 5 | 
            +
            require 'treezor_connect/resources/oauth/token'
         | 
| 6 | 
            +
            require 'treezor_connect/resources/sca/external_operation'
         | 
| 7 | 
            +
            require 'treezor_connect/resources/sca/passcode'
         | 
| 8 | 
            +
            require 'treezor_connect/resources/sca/wallet'
         | 
| 4 9 | 
             
            require 'treezor_connect/resources/sct_inst/payin'
         | 
| 5 10 | 
             
            require 'treezor_connect/resources/sct_inst/recall'
         | 
| @@ -6,7 +6,7 @@ module TreezorConnect | |
| 6 6 |  | 
| 7 7 | 
             
                def self.from_http_response(http_resp)
         | 
| 8 8 | 
             
                  resp = TreezorResponse.new
         | 
| 9 | 
            -
                  resp.data = JSON.parse(http_resp.body)
         | 
| 9 | 
            +
                  resp.data = JSON.parse(http_resp.body) if http_resp.body.to_s != ''
         | 
| 10 10 | 
             
                  resp.http_body = http_resp.body
         | 
| 11 11 | 
             
                  resp.http_headers = http_resp.headers
         | 
| 12 12 | 
             
                  resp.http_status = http_resp.status
         | 
    
        data/lib/treezor_connect.rb
    CHANGED
    
    | @@ -20,6 +20,8 @@ require 'treezor_connect/api_operations/fetch' | |
| 20 20 | 
             
            require 'treezor_connect/api_operations/list'
         | 
| 21 21 | 
             
            require 'treezor_connect/api_operations/create'
         | 
| 22 22 | 
             
            require 'treezor_connect/api_operations/request'
         | 
| 23 | 
            +
            require 'treezor_connect/api_operations/update'
         | 
| 24 | 
            +
            require 'treezor_connect/api_operations/delete'
         | 
| 23 25 |  | 
| 24 26 | 
             
            # API resources
         | 
| 25 27 | 
             
            require 'treezor_connect/api_resource'
         | 
| @@ -27,7 +29,7 @@ require 'treezor_connect/resources' | |
| 27 29 |  | 
| 28 30 | 
             
            module TreezorConnect
         | 
| 29 31 | 
             
              class << self
         | 
| 30 | 
            -
                attr_accessor :api_base_url, : | 
| 32 | 
            +
                attr_accessor :api_base_url, :client_id, :client_secret
         | 
| 31 33 | 
             
              end
         | 
| 32 34 |  | 
| 33 35 | 
             
              def self.configure
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,15 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: treezor_connect
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.9.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - stefakins
         | 
| 8 | 
            +
            - jbauzone
         | 
| 8 9 | 
             
            autorequire:
         | 
| 9 10 | 
             
            bindir: bin
         | 
| 10 11 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 12 | 
            +
            date: 2024-10-24 00:00:00.000000000 Z
         | 
| 12 13 | 
             
            dependencies: []
         | 
| 13 14 | 
             
            description: A gem for making HTTP calls to Treezor Connect.
         | 
| 14 15 | 
             
            email: stefan.atkinson69@gmail.com
         | 
| @@ -18,14 +19,21 @@ extra_rdoc_files: [] | |
| 18 19 | 
             
            files:
         | 
| 19 20 | 
             
            - lib/treezor_connect.rb
         | 
| 20 21 | 
             
            - lib/treezor_connect/api_operations/create.rb
         | 
| 22 | 
            +
            - lib/treezor_connect/api_operations/delete.rb
         | 
| 21 23 | 
             
            - lib/treezor_connect/api_operations/fetch.rb
         | 
| 22 24 | 
             
            - lib/treezor_connect/api_operations/list.rb
         | 
| 23 25 | 
             
            - lib/treezor_connect/api_operations/request.rb
         | 
| 26 | 
            +
            - lib/treezor_connect/api_operations/update.rb
         | 
| 24 27 | 
             
            - lib/treezor_connect/api_resource.rb
         | 
| 25 28 | 
             
            - lib/treezor_connect/client.rb
         | 
| 26 29 | 
             
            - lib/treezor_connect/errors.rb
         | 
| 27 30 | 
             
            - lib/treezor_connect/resources.rb
         | 
| 31 | 
            +
            - lib/treezor_connect/resources/beneficiary.rb
         | 
| 32 | 
            +
            - lib/treezor_connect/resources/oauth/token.rb
         | 
| 28 33 | 
             
            - lib/treezor_connect/resources/payin.rb
         | 
| 34 | 
            +
            - lib/treezor_connect/resources/sca/external_operation.rb
         | 
| 35 | 
            +
            - lib/treezor_connect/resources/sca/passcode.rb
         | 
| 36 | 
            +
            - lib/treezor_connect/resources/sca/wallet.rb
         | 
| 29 37 | 
             
            - lib/treezor_connect/resources/sct_inst/payin.rb
         | 
| 30 38 | 
             
            - lib/treezor_connect/resources/sct_inst/recall.rb
         | 
| 31 39 | 
             
            - lib/treezor_connect/treezor_object.rb
         | 
| @@ -51,7 +59,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 51 59 | 
             
                - !ruby/object:Gem::Version
         | 
| 52 60 | 
             
                  version: '0'
         | 
| 53 61 | 
             
            requirements: []
         | 
| 54 | 
            -
            rubygems_version: 3.4. | 
| 62 | 
            +
            rubygems_version: 3.4.19
         | 
| 55 63 | 
             
            signing_key:
         | 
| 56 64 | 
             
            specification_version: 4
         | 
| 57 65 | 
             
            summary: A gem for making HTTP calls to Treezor Connect.
         |