1
0
mirror of https://github.com/aclindsa/ofxgo.git synced 2024-10-30 05:20:05 -04:00
ofxgo/common.go

57 lines
1.6 KiB
Go

package ofxgo
import (
"errors"
"github.com/aclindsa/go/src/encoding/xml"
)
// Represents a top-level OFX message set (i.e. BANKMSGSRSV1)
type Message interface {
Name() string // The name of the OFX element this set represents
Valid() (bool, error) // Called before a Message is marshaled and after
// it's unmarshaled to ensure the request or response is valid
}
type Status struct {
XMLName xml.Name `xml:"STATUS"`
Code Int `xml:"CODE"`
Severity String `xml:"SEVERITY"`
Message String `xml:"MESSAGE,omitempty"`
}
func (s *Status) Valid() (bool, error) {
switch s.Severity {
case "INFO", "WARN", "ERROR":
return true, nil
default:
return false, errors.New("Invalid STATUS>SEVERITY")
}
}
type BankAcct struct {
XMLName xml.Name // BANKACCTTO or BANKACCTFROM
BankId String `xml:"BANKID"`
BranchId String `xml:"BRANCHID,omitempty"` // Unused in USA
AcctId String `xml:"ACCTID"`
AcctType String `xml:"ACCTTYPE"` // One of CHECKING, SAVINGS, MONEYMRKT, CREDITLINE, CD
AcctKey String `xml:"ACCTKEY,omitempty"` // Unused in USA
}
type CCAcct struct {
XMLName xml.Name // CCACCTTO or CCACCTFROM
AcctId String `xml:"ACCTID"`
AcctKey String `xml:"ACCTKEY,omitempty"` // Unused in USA
}
type InvAcct struct {
XMLName xml.Name // INVACCTTO or INVACCTFROM
BrokerId String `xml:"BROKERID"`
AcctId String `xml:"ACCTID"`
}
type Currency struct {
XMLName xml.Name // CURRENCY or ORIGCURRENCY
CurRate Amount `xml:"CURRATE"` // Ratio of <CURDEF> currency to <CURSYM> currency
CurSym String `xml:"CURSYM"` // ISO-4217 3-character currency identifier
}