Current section

Files

Jump to
circlex_api lib circlex struct wire_instructions.ex
Raw

lib/circlex/struct/wire_instructions.ex

defmodule Circlex.Struct.WireInstructions do
import Circlex.Struct.Util
alias Circlex.Struct.BeneficiaryBank
defstruct [
:beneficiary,
:beneficiary_bank,
:tracking_ref,
:virtual_account_enabled
]
def deserialize(wire_instructions) do
%__MODULE__{
beneficiary: fetch(wire_instructions, :beneficiary),
beneficiary_bank: BeneficiaryBank.deserialize(fetch(wire_instructions, :beneficiaryBank)),
tracking_ref: fetch(wire_instructions, :trackingRef),
virtual_account_enabled: fetch(wire_instructions, :virtualAccountEnabled)
}
end
# Takes a BankAccount for serializing
def serialize_bank_account(bank_account = %Circlex.Struct.BankAccount{}) do
beneficiary_bank = %{
account_number: bank_account.virtual_account_number,
address: "1 MONEY STREET",
city: "NEW YORK",
country: "US",
currency: "USD",
name: "CRYPTO BANK",
postal_code: "1001",
routing_number: "999999999",
swift_code: "CRYPTO99"
}
%{
beneficiary: %{
address1: "1 MAIN STREET",
address2: "SUITE 1",
name: "CIRCLE INTERNET FINANCIAL INC"
},
beneficiaryBank: BeneficiaryBank.serialize(beneficiary_bank),
trackingRef: bank_account.tracking_ref,
virtualAccountEnabled: true
}
end
end