Add since=$ID/$timestamp parsing logic
This commit is contained in:
parent
b7871b80ab
commit
0a77c5296b
5 changed files with 138 additions and 7 deletions
|
@ -1,8 +1,10 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"heckel.io/ntfy/util"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -92,11 +94,31 @@ func validMessageID(s string) bool {
|
|||
return util.ValidRandomString(s, messageIDLength)
|
||||
}
|
||||
|
||||
func validUnixTimestamp(s string) bool {
|
||||
_, err := toUnixTimestamp(s)
|
||||
return err == nil
|
||||
}
|
||||
|
||||
func toUnixTimestamp(s string) (int64, error) {
|
||||
u, err := strconv.ParseInt(s, 10, 64)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if u < 1000000000 || u > 3000000000 { // I know. It's practical. So relax ...
|
||||
return 0, errors.New("invalid unix date")
|
||||
}
|
||||
return u, nil
|
||||
}
|
||||
|
||||
type sinceMarker struct {
|
||||
time time.Time
|
||||
id string
|
||||
}
|
||||
|
||||
func newSince(id string, timestamp int64) sinceMarker {
|
||||
return sinceMarker{time.Unix(timestamp, 0), id}
|
||||
}
|
||||
|
||||
func newSinceTime(timestamp int64) sinceMarker {
|
||||
return sinceMarker{time.Unix(timestamp, 0), ""}
|
||||
}
|
||||
|
@ -117,6 +139,10 @@ func (t sinceMarker) IsID() bool {
|
|||
return t.id != ""
|
||||
}
|
||||
|
||||
func (t sinceMarker) IsTime() bool {
|
||||
return t.time.Unix() > 0
|
||||
}
|
||||
|
||||
func (t sinceMarker) Time() time.Time {
|
||||
return t.time
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue