Sha256: 582f53fb90b1682aecd9d3c9aba8d86e6d22fca6bf97d470949ba7343283a05b

Contents?: true

Size: 1.27 KB

Versions: 2

Compression:

Stored size: 1.27 KB

Contents

# typed: strict
# frozen_string_literal: true

require_relative "crypto/crypto_base"
require_relative "crypto/crypto"

module LunchMoney
  # https://lunchmoney.dev/#crypto
  class CryptoCalls < ApiCall
    sig { returns(T.any(T::Array[LunchMoney::Crypto], LunchMoney::Errors)) }
    def crypto
      response = get("crypto")

      api_errors = errors(response)
      return api_errors if api_errors.present?

      response.body[:crypto].map do |crypto|
        LunchMoney::Crypto.new(**crypto)
      end
    end

    sig do
      params(
        crypto_id: Integer,
        name: T.nilable(String),
        display_name: T.nilable(String),
        institution_name: T.nilable(String),
        balance: T.nilable(String),
        currency: T.nilable(String),
      ).returns(T.any(LunchMoney::CryptoBase, LunchMoney::Errors))
    end
    def update_crypto(crypto_id, name: nil, display_name: nil, institution_name: nil, balance: nil, currency: nil)
      params = clean_params({
        name:,
        display_name:,
        institution_name:,
        balance:,
        currency:,
      })

      response = put("crypto/manual/#{crypto_id}", params)

      api_errors = errors(response)
      return api_errors if api_errors.present?

      LunchMoney::CryptoBase.new(**response.body)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lunchmoney-1.0.0 lib/lunchmoney/crypto/crypto_calls.rb
lunchmoney-0.10.0 lib/lunchmoney/crypto/crypto_calls.rb