shadowspore / t38c

Tile38 Client package
MIT License
83 stars 33 forks source link

TTL errors when trying to unmarshal because tile38 returns a float not an int #58

Open lugomateo opened 1 year ago

lugomateo commented 1 year ago

After setting an object's expiration, calling TTL on the object causes an error: json: cannot unmarshal number 0.174668 into Go struct field .ttl of type int

Calling TTL directly on the tile38-cli, looks like tile38 returns a float (instead of an int) {"ok":true,"ttl":0.174668,"elapsed":"7.359µs"}

should be a super quick fix, something like this:

func (ks *Keys) TTL(key, objectID string) (float64, error) {
    var resp struct {
        TTL float64 `json:"ttl"`
    }

    err := ks.client.jExecute(&resp, "TTL", key, objectID)
    if err != nil {
        return -1, err
    }

    return resp.TTL, nil
}