aboutsummaryrefslogtreecommitdiff
path: root/account.go
diff options
context:
space:
mode:
authorStefan Majewsky <majewsky@gmx.net>2018-02-05 21:30:33 +0100
committerStefan Majewsky <majewsky@gmx.net>2018-02-05 21:44:35 +0100
commit3a24741929cd12ffee5e54d0e9a9afb83c5069b3 (patch)
tree6a91b159d25814e873fcfae08cd40cba9b1dcc14 /account.go
parent7de32502590995ee8d7cc8b681b0f723ca35ccb0 (diff)
downloadgo-schwift-3a24741929cd12ffee5e54d0e9a9afb83c5069b3.tar.gz
redesign the header API
I'm quite satisfied with this right now (though this doesn't say anything about how I feel about it tomorrow), but it's ugly that some guts (headers.Base) are exposed in the public API.
Diffstat (limited to 'account.go')
-rw-r--r--account.go23
1 files changed, 13 insertions, 10 deletions
diff --git a/account.go b/account.go
index 8fb4845..4438ce8 100644
--- a/account.go
+++ b/account.go
@@ -96,10 +96,11 @@ func (a *Account) Headers() (AccountHeaders, error) {
return AccountHeaders{}, err
}
- var headers AccountHeaders
- err = parseHeaders(resp.Header, &headers)
+ headers := NewAccountHeaders()
+ headers.FromHTTP(resp.Header)
+ err = headers.Validate()
if err != nil {
- return AccountHeaders{}, err
+ return headers, err
}
a.headers = &headers
return *a.headers, nil
@@ -111,14 +112,15 @@ func (a *Account) Invalidate() {
a.headers = nil
}
-//Update updates the account using a POST request. To set arbitrary request
-//headers (and to add URL parameters), pass a non-nil *RequestOptions.
+//Update updates the account using a POST request. To add URL parameters, pass
+//a non-nil *RequestOptions.
//
//A successful POST request implies Invalidate() since it may change metadata.
func (a *Account) Update(headers AccountHeaders, opts *RequestOptions) error {
_, err := Request{
Method: "POST",
- Options: compileHeaders(&headers, opts),
+ Headers: headers.ToHTTP(),
+ Options: opts,
ExpectStatusCodes: []int{204},
}.Do(a.client)
if err == nil {
@@ -127,8 +129,8 @@ func (a *Account) Update(headers AccountHeaders, opts *RequestOptions) error {
return err
}
-//Create creates the account using a PUT request. To set arbitrary request
-//headers (and to add URL parameters), pass a non-nil *RequestOptions.
+//Create creates the account using a PUT request. To add URL parameters, pass
+//a non-nil *RequestOptions.
//
//Note that this operation is only available to reseller admins, not to regular
//users.
@@ -136,8 +138,9 @@ func (a *Account) Update(headers AccountHeaders, opts *RequestOptions) error {
//A successful PUT request implies Invalidate() since it may change metadata.
func (a *Account) Create(headers AccountHeaders, opts *RequestOptions) error {
_, err := Request{
- Method: "POST",
- Options: compileHeaders(&headers, opts),
+ Method: "PUT",
+ Headers: headers.ToHTTP(),
+ Options: opts,
ExpectStatusCodes: []int{201, 202},
}.Do(a.client)
if err == nil {