summaryrefslogtreecommitdiffstats
path: root/response.go
diff options
context:
space:
mode:
authorclsr <clsr@clsr.net>2017-09-01 16:11:42 +0200
committerclsr <clsr@clsr.net>2017-09-01 16:11:42 +0200
commit7e1f90f27d876db67158ca4787420ec30c18f86b (patch)
tree4526e5924c926af4814968a49c2dd7875fdf0dd0 /response.go
parentee431f1e85a8ee7d3c6e069c8858c671da1c2acd (diff)
downloadcnp-go-7e1f90f27d876db67158ca4787420ec30c18f86b.tar.gz
cnp-go-7e1f90f27d876db67158ca4787420ec30c18f86b.zip
Distinguish between response length=0 and no length parameter
Response.Length returns -1 when the parameter is not present and 0 when it's set to 0. Response.SetLength will only unset the parameter when given -1.
Diffstat (limited to 'response.go')
-rw-r--r--response.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/response.go b/response.go
index 3ecb961..4c3f753 100644
--- a/response.go
+++ b/response.go
@@ -224,6 +224,26 @@ func (r *Response) SetSelect(selector, query string) error {
return setSelect(&r.Message, "select", selector, query)
}
+// Length gets the length response parameter (or -1 if it's not set or invalid).
+func (r *Response) Length() int64 {
+ n, err := getInt(&r.Message, "length", -1)
+ if err != nil {
+ return -1
+ }
+ return n
+}
+
+// SetLength sets the length response parameter to n.
+//
+// If negative, the parameter is unset.
+func (r *Response) SetLength(n int64) {
+ if n < 0 {
+ r.SetParam("length", "")
+ } else {
+ setInt(&r.Message, "length", n)
+ }
+}
+
// Validate validates the response intent and header parameter value format
// (length, name, type, time, modified, location, reason, select)
func (r *Response) Validate() error {