From 2793442e21f19fc3f764e1f848b83d96076dcfb0 Mon Sep 17 00:00:00 2001 From: Rasmus Dahlberg Date: Thu, 22 Oct 2020 15:08:47 +0200 Subject: added parameter parsing for get-entries --- type.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'type.go') diff --git a/type.go b/type.go index 031ae8d..dcb2a9a 100644 --- a/type.go +++ b/type.go @@ -2,8 +2,10 @@ package stfe import ( "fmt" + "strconv" "encoding/base64" + "net/http" "github.com/google/certificate-transparency-go/tls" ) @@ -98,3 +100,32 @@ type AddEntryRequest struct { Signature string `json:"signature"` Certificate string `json:"certificate"` } + +// GetEntriesRequest is a collection of get-entry input parameters +type GetEntriesRequest struct { + Start int64 + End int64 +} + +func (r *GetEntriesRequest) Unpack(httpRequest *http.Request) error { + var err error + + r.Start, err = strconv.ParseInt(httpRequest.FormValue("start"), 10, 64) + if err != nil { + return fmt.Errorf("bad start parameter: %v", err) + } + r.End, err = strconv.ParseInt(httpRequest.FormValue("end"), 10, 64) + if err != nil { + return fmt.Errorf("bad end parameter: %v", err) + } + + if r.Start < 0 { + return fmt.Errorf("bad parameters: start(%v) must have a non-negative value", r.Start) + } + if r.Start > r.End { + return fmt.Errorf("bad parameters: start(%v) must be larger than end(%v)", r.Start, r.End) + } + // TODO: check that range is not larger than the max range. Yes -> truncate + // TODO: check that end is not past the most recent STH. Yes -> truncate + return nil +} -- cgit v1.2.3