cashless2ecash

cashless2ecash: pay with cards for digital cash (experimental)
Log | Files | Refs | README

model.go (1978B)


      1 package main
      2 
      3 import (
      4 	"fmt"
      5 )
      6 
      7 // https://docs.taler.net/core/api-common.html#hash-codes
      8 type WithdrawalIdentifier string
      9 
     10 // https://docs.taler.net/core/api-common.html#cryptographic-primitives
     11 type EddsaPublicKey string
     12 
     13 // https://docs.taler.net/core/api-common.html#hash-codes
     14 type HashCode string
     15 
     16 // https://docs.taler.net/core/api-common.html#hash-codes
     17 type ShortHashCode string
     18 
     19 // https://docs.taler.net/core/api-common.html#timestamps
     20 type Timestamp struct {
     21 	Ts int `json:"t_s"`
     22 }
     23 
     24 // https://docs.taler.net/core/api-common.html#wadid
     25 type WadId [6]uint32
     26 
     27 // according to https://docs.taler.net/core/api-bank-integration.html#tsref-type-BankWithdrawalOperationStatus
     28 type WithdrawalOperationStatus string
     29 
     30 const (
     31 	PENDING   WithdrawalOperationStatus = "pending"
     32 	SELECTED  WithdrawalOperationStatus = "selected"
     33 	ABORTED   WithdrawalOperationStatus = "aborted"
     34 	CONFIRMED WithdrawalOperationStatus = "confirmed"
     35 )
     36 
     37 func ToWithdrawalOpStatus(s string) (WithdrawalOperationStatus, error) {
     38 	switch s {
     39 	case string(PENDING):
     40 		return PENDING, nil
     41 	case string(SELECTED):
     42 		return SELECTED, nil
     43 	case string(ABORTED):
     44 		return ABORTED, nil
     45 	case string(CONFIRMED):
     46 		return CONFIRMED, nil
     47 	default:
     48 		return "", fmt.Errorf("unknown withdrawal operation status '%s'", s)
     49 	}
     50 }
     51 
     52 type C2ECWithdrawRegistration struct {
     53 	ReservePubKey EddsaPublicKey `json:"reserve_pub_key"`
     54 }
     55 
     56 type C2ECWithdrawalStatus struct {
     57 	Status        WithdrawalOperationStatus `json:"status"`
     58 	Amount        string                    `json:"amount"`
     59 	CardFees      string                    `json:"card_fees"`
     60 	SenderWire    string                    `json:"sender_wire"`
     61 	WireTypes     []string                  `json:"wire_types"`
     62 	ReservePubKey EddsaPublicKey            `json:"selected_reserve_pub"`
     63 	Aborted       bool                      `json:"aborted"`
     64 	SelectionDone bool                      `json:"selection_done"`
     65 	TransferDone  bool                      `json:"transfer_done"`
     66 }