From 7e1f90f27d876db67158ca4787420ec30c18f86b Mon Sep 17 00:00:00 2001 From: clsr Date: Fri, 1 Sep 2017 16:11:42 +0200 Subject: 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. --- request.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'request.go') diff --git a/request.go b/request.go index 0fb27a2..44bae56 100644 --- a/request.go +++ b/request.go @@ -219,6 +219,26 @@ func (r *Request) SetSelect(selector, query string) error { return setSelect(&r.Message, "select", selector, query) } +// Length gets the length request parameter (or 0 if not set or invalid). +func (r *Request) Length() int64 { + n, err := getInt(&r.Message, "length", 0) + if err != nil { + return 0 + } + return n +} + +// SetLength sets the length request parameter to n. +// +// If n is negative or zero, the parameter is unset. +func (r *Request) SetLength(n int64) { + if n <= 0 { + r.SetParam("length", "") + } else { + setInt(&r.Message, "length", n) + } +} + // Validate validates the request header intent and parameter value format // (length, name, type, if_modified, select) func (r *Request) Validate() error { -- cgit