Skip to content

Commit 9b1b556

Browse files
committed
review record expiration code
1 parent 6f8e757 commit 9b1b556

File tree

6 files changed

+17
-55
lines changed

6 files changed

+17
-55
lines changed

src/expiration_api.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,8 @@ func (e mainEnv) expStart(w http.ResponseWriter, r *http.Request, ps httprouter.
149149
utils.ReturnError(w, r, "failed to decode request body", 405, err, event)
150150
return
151151
}
152-
expirationStr := utils.GetStringValue(postData["expiration"])
153-
expiration := utils.SetExpiration(e.conf.Policy.MaxUserRetentionPeriod, expirationStr)
154-
endtime, _ := utils.ParseExpiration(expiration)
152+
endtime := utils.SetExpiration(e.conf.Policy.MaxUserRetentionPeriod, postData["expiration"])
153+
// fmt.Printf("Set exp time: %d\n", endtime)
155154
status := utils.GetStringValue(postData["status"])
156155
if len(status) == 0 {
157156
status = "wait"

src/sessions_api.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ func (e mainEnv) sessionCreate(w http.ResponseWriter, r *http.Request, ps httpro
3838
utils.ReturnError(w, r, "empty body", 405, nil, event)
3939
return
4040
}
41-
expirationStr := utils.GetStringValue(postData["expiration"])
42-
expiration := utils.SetExpiration(e.conf.Policy.MaxSessionRetentionPeriod, expirationStr)
43-
log.Printf("Record expiration: %s", expiration)
41+
expiration := utils.SetExpiration(e.conf.Policy.MaxSessionRetentionPeriod, postData["expiration"])
42+
// now := int32(time.Now().Unix())
43+
// log.Printf("Record expiration: %d now %d", expiration, now)
4444
userToken := utils.GetStringValue(postData["token"])
4545
userLogin := utils.GetStringValue(postData["login"])
4646
userEmail := utils.GetStringValue(postData["email"])
@@ -123,7 +123,7 @@ func (e mainEnv) sessionNewOld(w http.ResponseWriter, r *http.Request, ps httpro
123123
}
124124
expirationStr := utils.GetStringValue(postData["expiration"])
125125
expiration := utils.SetExpiration(e.conf.Policy.MaxSessionRetentionPeriod, expirationStr)
126-
log.Printf("Record expiration: %s", expiration)
126+
log.Printf("Record expiration: %d", expiration)
127127
jsonData, err := json.Marshal(postData)
128128
if err != nil {
129129
utils.ReturnError(w, r, "internal error", 405, err, event)

src/sessions_db.go

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,7 @@ type sessionEvent struct {
1616
Data string `json:"data"`
1717
}
1818

19-
func (dbobj dbcon) createSessionRecord(sessionUUID string, userTOKEN string, expiration string, data []byte) (string, error) {
20-
var endtime int32
21-
var err error
22-
now := int32(time.Now().Unix())
23-
if len(expiration) > 0 {
24-
endtime, err = utils.ParseExpiration(expiration)
25-
if err != nil {
26-
return "", err
27-
}
28-
//log.Printf("expiration set to: %d, now: %d", endtime, now)
29-
}
19+
func (dbobj dbcon) createSessionRecord(sessionUUID string, userTOKEN string, endtime int32, data []byte) (string, error) {
3020
recordKey, err := utils.GenerateRecordKey()
3121
if err != nil {
3222
return "", err
@@ -36,6 +26,7 @@ func (dbobj dbcon) createSessionRecord(sessionUUID string, userTOKEN string, exp
3626
return "", err
3727
}
3828
encodedStr := base64.StdEncoding.EncodeToString(encoded)
29+
now := int32(time.Now().Unix())
3930
bdoc := bson.M{}
4031
bdoc["token"] = userTOKEN
4132
bdoc["session"] = sessionUUID
@@ -65,7 +56,7 @@ func (dbobj dbcon) getSession(sessionUUID string) (int32, []byte, string, error)
6556
}
6657
// check expiration
6758
now := int32(time.Now().Unix())
68-
//log.Printf("getSession checking now: %d exp %d", now, record["endtime"].(int32))
59+
// fmt.Printf("getSession checking now: %d exp %d\n", now, record["endtime"].(int32))
6960
if now > record["endtime"].(int32) {
7061
return 0, nil, "", errors.New("session expired")
7162
}

src/sharedrecords_api.go

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"fmt"
66
"log"
77
"net/http"
8-
"reflect"
98
"strings"
109

1110
"github.com/julienschmidt/httprouter"
@@ -33,26 +32,13 @@ func (e mainEnv) sharedRecordCreate(w http.ResponseWriter, r *http.Request, ps h
3332
session := utils.GetStringValue(postData["session"])
3433
partner := utils.GetStringValue(postData["partner"])
3534
appName := utils.GetStringValue(postData["app"])
36-
expiration := e.conf.Policy.MaxShareableRecordRetentionPeriod
37-
3835
if len(appName) > 0 {
3936
appName = strings.ToLower(appName)
4037
if utils.CheckValidApp(appName) == false {
4138
utils.ReturnError(w, r, "unknown app name", 405, nil, event)
4239
}
4340
}
44-
if value, ok := postData["expiration"]; ok {
45-
if reflect.TypeOf(value) == reflect.TypeOf("string") {
46-
expiration = utils.SetExpiration(e.conf.Policy.MaxShareableRecordRetentionPeriod, value.(string))
47-
} else {
48-
utils.ReturnError(w, r, "failed to parse expiration field", 405, err, event)
49-
return
50-
}
51-
}
52-
if len(expiration) == 0 {
53-
// using default expiration time for record
54-
expiration = "1m"
55-
}
41+
expiration := utils.SetExpiration(e.conf.Policy.MaxShareableRecordRetentionPeriod, postData["expiration"])
5642
recordUUID, err := e.db.saveSharedRecord(userTOKEN, fields, expiration, session, appName, partner, e.conf)
5743
if err != nil {
5844
utils.ReturnError(w, r, err.Error(), 405, err, event)

src/sharedrecords_db.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package main
22

33
import (
44
"errors"
5-
"log"
65
"strings"
76
"time"
87

@@ -12,25 +11,16 @@ import (
1211
"go.mongodb.org/mongo-driver/bson"
1312
)
1413

15-
func (dbobj dbcon) saveSharedRecord(userTOKEN string, fields string, expiration string, session string, appName string, partner string, conf Config) (string, error) {
14+
func (dbobj dbcon) saveSharedRecord(userTOKEN string, fields string, endtime int32, session string, appName string, partner string, conf Config) (string, error) {
1615
if utils.CheckValidUUID(userTOKEN) == false {
1716
return "", errors.New("bad uuid")
1817
}
19-
if len(expiration) == 0 {
20-
return "", errors.New("failed to parse expiration")
21-
}
2218
if len(appName) > 0 {
2319
apps, _ := dbobj.listAllApps(conf)
2420
if strings.Contains(string(apps), appName) == false {
2521
return "", errors.New("app not found")
2622
}
2723
}
28-
29-
log.Printf("Expiration is : %s\n", expiration)
30-
start, err := utils.ParseExpiration(expiration)
31-
if err != nil {
32-
return "", err
33-
}
3424
recordUUID, err := uuid.GenerateUUID()
3525
if err != nil {
3626
return "", err
@@ -40,7 +30,7 @@ func (dbobj dbcon) saveSharedRecord(userTOKEN string, fields string, expiration
4030
bdoc["token"] = userTOKEN
4131
bdoc["record"] = recordUUID
4232
bdoc["when"] = now
43-
bdoc["endtime"] = start
33+
bdoc["endtime"] = endtime
4434
if len(fields) > 0 {
4535
bdoc["fields"] = fields
4636
}

src/utils/utils.go

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,6 @@ func GetExpirationNum(val interface{}) int32 {
170170
case string:
171171
expiration := val.(string)
172172
match := regexExpiration.FindStringSubmatch(expiration)
173-
log.Printf("match: %v", match)
174173
// expiration format: 10d, 10h, 10m, 10s
175174
if len(match) == 2 {
176175
num = Atoi(match[1])
@@ -314,23 +313,20 @@ func Atoi(s string) int32 {
314313
return int32(n)
315314
}
316315

317-
func SetExpiration(maxExpiration string, userExpiration string) string {
318-
if len(userExpiration) == 0 {
319-
return maxExpiration
320-
}
316+
func SetExpiration(maxExpiration interface{}, userExpiration interface{}) int32 {
321317
userExpirationNum, _ := ParseExpiration(userExpiration)
322318
maxExpirationNum, _ := ParseExpiration(maxExpiration)
323319
if maxExpirationNum == 0 {
324320
maxExpiration = "6m"
325321
maxExpirationNum, _ = ParseExpiration(maxExpiration)
326322
}
327323
if userExpirationNum == 0 {
328-
return maxExpiration
324+
return maxExpirationNum
329325
}
330326
if userExpirationNum > maxExpirationNum {
331-
return maxExpiration
327+
return maxExpirationNum
332328
}
333-
return userExpiration
329+
return userExpirationNum
334330
}
335331

336332
func ParseExpiration0(expiration string) (int32, error) {
@@ -357,7 +353,7 @@ func ParseExpiration0(expiration string) (int32, error) {
357353
}
358354

359355
func ParseExpiration(expiration interface{}) (int32, error) {
360-
now := int32(time.Now().Unix()) + 10
356+
now := int32(time.Now().Unix())
361357
result := GetExpirationNum(expiration)
362358
if result == 0 {
363359
return 0, nil

0 commit comments

Comments
 (0)