Covered account detail response
This commit is contained in:
parent
c6eb542a2c
commit
e2479704f2
51
client.go
51
client.go
@ -46,38 +46,41 @@ func (c *AllyApi) Initialize() {
|
||||
|
||||
func (c *AllyApi) get(path string) (resp *http.Response, err error) {
|
||||
resp, err = c.Client.Get(fmt.Sprintf("%s\\%s", endpoint, path))
|
||||
return
|
||||
return resp, err
|
||||
}
|
||||
|
||||
//GetAndMarshal call GET on the path, and marshal the resopnse to interface
|
||||
// type
|
||||
func (c *AllyApi) getAndRead(path string) []byte {
|
||||
resp, err := c.get(path)
|
||||
if err != nil {
|
||||
log.Fatal("Could not make request")
|
||||
}
|
||||
|
||||
defer resp.Body.Close()
|
||||
raw, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
log.Fatal("Could not read body!")
|
||||
return nil
|
||||
}
|
||||
return raw
|
||||
}
|
||||
|
||||
/* The /accounts endpoint of Ally */
|
||||
func (c *AllyApi) Accounts() []AccountSummary {
|
||||
b, err := c.get("accounts")
|
||||
if err != nil {
|
||||
}
|
||||
|
||||
defer b.Body.Close()
|
||||
raw, err := ioutil.ReadAll(b.Body)
|
||||
fmt.Printf("%s\n", raw)
|
||||
if err != nil {
|
||||
}
|
||||
|
||||
var resp AccountResponse
|
||||
err = xml.Unmarshal(raw, &resp)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
_ = xml.Unmarshal(c.getAndRead("accounts"), &resp)
|
||||
return resp.Accounts.Accountsummary
|
||||
}
|
||||
|
||||
func (c *AllyApi) AccountBalances() (balances []AccountBalance) {
|
||||
b, err := c.get("accounts/balances")
|
||||
if err != nil {
|
||||
log.Fatal("Could not get account balances")
|
||||
return
|
||||
}
|
||||
defer b.Body.Close()
|
||||
|
||||
var resp AccountBalanceResponse
|
||||
|
||||
_ = xml.Unmarshal(c.getAndRead("accounts/balances"), &resp)
|
||||
return resp.AccountBalances
|
||||
}
|
||||
|
||||
func (c *AllyApi) AccountDetail(accountId int) AccountDetailResponse {
|
||||
var resp AccountDetailResponse
|
||||
_ = xml.Unmarshal(c.getAndRead(fmt.Sprintf("accounts/%d", accountId)), &resp)
|
||||
return resp
|
||||
}
|
||||
|
9
main.go
9
main.go
@ -1,11 +1,16 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Load our environment variables
|
||||
var api AllyApi
|
||||
api.Initialize()
|
||||
|
||||
fmt.Printf("%s\n", api.Accounts()[0].Accountholdings.Displaydata.Totalsecurities)
|
||||
acctId, _ := strconv.Atoi(api.Accounts()[0].Account)
|
||||
|
||||
fmt.Printf("AccountDetail: %s\n", api.AccountDetail(acctId).AccountHoldings.Holding[0].Displaydata.Change)
|
||||
}
|
||||
|
30
types.go
30
types.go
@ -4,12 +4,8 @@ import (
|
||||
"encoding/xml"
|
||||
)
|
||||
|
||||
type AccountSummary struct {
|
||||
XMLName xml.Name `xml:"accountsummary"`
|
||||
Text string `xml:",chardata"`
|
||||
Account string `xml:"account"`
|
||||
Accountbalance struct {
|
||||
Text string `xml:",chardata"`
|
||||
type Accountbalance struct {
|
||||
XMLName xml.Name `xml:"accountbalance"`
|
||||
Account string `xml:"account"`
|
||||
Accountvalue float64 `xml:"accountvalue"`
|
||||
Buyingpower struct {
|
||||
@ -47,9 +43,10 @@ type AccountSummary struct {
|
||||
Stocks float64 `xml:"stocks"`
|
||||
Total float64 `xml:"total"`
|
||||
} `xml:"securities"`
|
||||
} `xml:"accountbalance"`
|
||||
Accountholdings struct {
|
||||
Text string `xml:",chardata"`
|
||||
}
|
||||
|
||||
type Accountholdings struct {
|
||||
XMLName xml.Name `xml:"accountholdings"`
|
||||
Displaydata struct {
|
||||
Text string `xml:",chardata"`
|
||||
Totalsecurities string `xml:"totalsecurities"`
|
||||
@ -93,7 +90,14 @@ type AccountSummary struct {
|
||||
Underlying string `xml:"underlying"`
|
||||
} `xml:"holding"`
|
||||
Totalsecurities float64 `xml:"totalsecurities"`
|
||||
} `xml:"accountholdings"`
|
||||
}
|
||||
|
||||
type AccountSummary struct {
|
||||
XMLName xml.Name `xml:"accountsummary"`
|
||||
Text string `xml:",chardata"`
|
||||
Account string `xml:"account"`
|
||||
Accountbalance Accountbalance `xml:"accountbalance"`
|
||||
Accountholdings Accountholdings `xml:"accountholdings"`
|
||||
}
|
||||
|
||||
type AccountResponse struct {
|
||||
@ -118,3 +122,9 @@ type AccountBalanceResponse struct {
|
||||
AccountBalances []AccountBalance `xml:"accountbalance"`
|
||||
TotalBalance float64 `xml:"totalbalance>accountvalue"`
|
||||
}
|
||||
|
||||
type AccountDetailResponse struct {
|
||||
XMLName xml.Name `xml:"response"`
|
||||
AccountBalance Accountbalance `xml:"accountbalance"`
|
||||
AccountHoldings Accountholdings `xml:"accountholdings"`
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user