Skip to content

Commit 4adc01d

Browse files
committed
use go-http-utils/headers
1 parent 2cdc18e commit 4adc01d

File tree

3 files changed

+48
-53
lines changed

3 files changed

+48
-53
lines changed

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@ import (
2121
"net/http"
2222

2323
"github.com/go-http-utils/fresh"
24+
"github.com/go-http-utils/headers"
2425
)
2526
```
2627

2728
```go
2829
reqHeader, resHeader := make(http.Header), make(http.Header)
2930

30-
reqHeader.Set("if-none-match", "foo")
31-
resHeader.Set("etag", "bar")
31+
reqHeader.Set(headers.IfNoneMatch, "foo")
32+
resHeader.Set(headers.ETag, "bar")
3233

3334
fresh.IsFresh(reqHeader, resHeader)
3435
// -> false
@@ -37,8 +38,8 @@ fresh.IsFresh(reqHeader, resHeader)
3738
```go
3839
reqHeader, resHeader := make(http.Header), make(http.Header)
3940

40-
reqHeader.Set("if-modified-since", "Mon, 14 Nov 2016 22:05:49 GMT")
41-
resHeader.Set("last-modified", "Mon, 14 Nov 2016 22:05:47 GMT")
41+
reqHeader.Set(headers.IfModifiedSince, "Mon, 14 Nov 2016 22:05:49 GMT")
42+
resHeader.Set(headers.LastModified, "Mon, 14 Nov 2016 22:05:47 GMT")
4243

4344
fresh.IsFresh(reqHeader, resHeader)
4445
// -> true

fresh.go

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,23 @@ import (
44
"net/http"
55
"strings"
66
"time"
7+
8+
"github.com/go-http-utils/headers"
79
)
810

911
// Version is this package's verison
10-
const Version = "0.1.0"
11-
12-
// HTTP header fileds
13-
const (
14-
HeaderIfModifiedSince = "if-modified-since"
15-
HeaderIfNoneMatch = "if-none-match"
16-
HeaderCacheControl = "cache-control"
17-
HeaderETag = "etag"
18-
HeaderLastModified = "last-modified"
19-
)
12+
const Version = "0.2.0"
2013

2114
// IsFresh check whether cache can be used in this HTTP request
2215
func IsFresh(reqHeader http.Header, resHeader http.Header) bool {
2316
isEtagMatched, isModifiedMatched := false, false
2417

25-
ifModifiedSince := reqHeader.Get(HeaderIfModifiedSince)
26-
ifNoneMatch := reqHeader.Get(HeaderIfNoneMatch)
27-
cacheControl := reqHeader.Get(HeaderCacheControl)
18+
ifModifiedSince := reqHeader.Get(headers.IfModifiedSince)
19+
ifNoneMatch := reqHeader.Get(headers.IfNoneMatch)
20+
cacheControl := reqHeader.Get(headers.CacheControl)
2821

29-
etag := resHeader.Get(HeaderETag)
30-
lastModified := resHeader.Get(HeaderLastModified)
22+
etag := resHeader.Get(headers.ETag)
23+
lastModified := resHeader.Get(headers.LastModified)
3124

3225
if ifModifiedSince == "" && ifNoneMatch == "" {
3326
return false

fresh_test.go

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"testing"
66
"time"
77

8+
"github.com/go-http-utils/headers"
89
"github.com/stretchr/testify/suite"
910
)
1011

@@ -25,109 +26,109 @@ func (s FreshSuite) TestEtagEmpty() {
2526
}
2627

2728
func (s FreshSuite) TestEtagMatch() {
28-
s.reqHeader.Set(HeaderIfNoneMatch, "foo")
29-
s.resHeader.Set(HeaderETag, "foo")
29+
s.reqHeader.Set(headers.IfNoneMatch, "foo")
30+
s.resHeader.Set(headers.ETag, "foo")
3031

3132
s.True(IsFresh(s.reqHeader, s.resHeader))
3233
}
3334

3435
func (s FreshSuite) TestEtagMismatch() {
35-
s.reqHeader.Set(HeaderIfNoneMatch, "foo")
36-
s.resHeader.Set(HeaderETag, "bar")
36+
s.reqHeader.Set(headers.IfNoneMatch, "foo")
37+
s.resHeader.Set(headers.ETag, "bar")
3738

3839
s.False(IsFresh(s.reqHeader, s.resHeader))
3940
}
4041

4142
func (s FreshSuite) TestEtagMissing() {
42-
s.reqHeader.Set(HeaderIfNoneMatch, "foo")
43+
s.reqHeader.Set(headers.IfNoneMatch, "foo")
4344

4445
s.False(IsFresh(s.reqHeader, s.resHeader))
4546
}
4647

4748
func (s FreshSuite) TestWeakEtagMatch() {
48-
s.reqHeader.Set(HeaderIfNoneMatch, `W/"foo"`)
49-
s.resHeader.Set(HeaderETag, `W/"foo"`)
49+
s.reqHeader.Set(headers.IfNoneMatch, `W/"foo"`)
50+
s.resHeader.Set(headers.ETag, `W/"foo"`)
5051

5152
s.True(IsFresh(s.reqHeader, s.resHeader))
5253
}
5354

5455
func (s FreshSuite) TestEtagStrongMatch() {
55-
s.reqHeader.Set(HeaderIfNoneMatch, `W/"foo"`)
56-
s.resHeader.Set(HeaderETag, `"foo"`)
56+
s.reqHeader.Set(headers.IfNoneMatch, `W/"foo"`)
57+
s.resHeader.Set(headers.ETag, `"foo"`)
5758

5859
s.True(IsFresh(s.reqHeader, s.resHeader))
5960
}
6061

6162
func (s FreshSuite) TestStaleOnEtagWeakMatch() {
62-
s.reqHeader.Set(HeaderIfNoneMatch, `"foo"`)
63-
s.resHeader.Set(HeaderETag, `W/"foo"`)
63+
s.reqHeader.Set(headers.IfNoneMatch, `"foo"`)
64+
s.resHeader.Set(headers.ETag, `W/"foo"`)
6465

6566
s.False(IsFresh(s.reqHeader, s.resHeader))
6667
}
6768

6869
func (s FreshSuite) TestEtagAsterisk() {
69-
s.reqHeader.Set(HeaderIfNoneMatch, "*")
70-
s.resHeader.Set(HeaderETag, `"foo"`)
70+
s.reqHeader.Set(headers.IfNoneMatch, "*")
71+
s.resHeader.Set(headers.ETag, `"foo"`)
7172

7273
s.True(IsFresh(s.reqHeader, s.resHeader))
7374
}
7475

7576
func (s FreshSuite) TestModifiedFresh() {
76-
s.reqHeader.Set(HeaderIfModifiedSince, getFormattedTime(4*time.Second))
77-
s.resHeader.Set(HeaderLastModified, getFormattedTime(2*time.Second))
77+
s.reqHeader.Set(headers.IfModifiedSince, getFormattedTime(4*time.Second))
78+
s.resHeader.Set(headers.LastModified, getFormattedTime(2*time.Second))
7879

7980
s.True(IsFresh(s.reqHeader, s.resHeader))
8081
}
8182

8283
func (s FreshSuite) TestModifiedStale() {
83-
s.reqHeader.Set(HeaderIfModifiedSince, getFormattedTime(2*time.Second))
84-
s.resHeader.Set(HeaderLastModified, getFormattedTime(4*time.Second))
84+
s.reqHeader.Set(headers.IfModifiedSince, getFormattedTime(2*time.Second))
85+
s.resHeader.Set(headers.LastModified, getFormattedTime(4*time.Second))
8586

8687
s.False(IsFresh(s.reqHeader, s.resHeader))
8788
}
8889

8990
func (s FreshSuite) TestEmptyLastModified() {
90-
s.reqHeader.Set(HeaderIfModifiedSince, getFormattedTime(4*time.Second))
91+
s.reqHeader.Set(headers.IfModifiedSince, getFormattedTime(4*time.Second))
9192

9293
s.False(IsFresh(s.reqHeader, s.resHeader))
9394
}
9495

9596
func (s FreshSuite) TestBoshAndModifiedFresh() {
96-
s.reqHeader.Set(HeaderIfNoneMatch, "foo")
97-
s.reqHeader.Set(HeaderIfModifiedSince, getFormattedTime(4*time.Second))
97+
s.reqHeader.Set(headers.IfNoneMatch, "foo")
98+
s.reqHeader.Set(headers.IfModifiedSince, getFormattedTime(4*time.Second))
9899

99-
s.resHeader.Set(HeaderETag, "bar")
100-
s.resHeader.Set(HeaderLastModified, getFormattedTime(2*time.Second))
100+
s.resHeader.Set(headers.ETag, "bar")
101+
s.resHeader.Set(headers.LastModified, getFormattedTime(2*time.Second))
101102

102103
s.True(IsFresh(s.reqHeader, s.resHeader))
103104
}
104105

105106
func (s FreshSuite) TestBoshAndETagFresh() {
106-
s.reqHeader.Set(HeaderIfNoneMatch, "foo")
107-
s.reqHeader.Set(HeaderIfModifiedSince, getFormattedTime(2*time.Second))
107+
s.reqHeader.Set(headers.IfNoneMatch, "foo")
108+
s.reqHeader.Set(headers.IfModifiedSince, getFormattedTime(2*time.Second))
108109

109-
s.resHeader.Set(HeaderETag, "foo")
110-
s.resHeader.Set(HeaderLastModified, getFormattedTime(4*time.Second))
110+
s.resHeader.Set(headers.ETag, "foo")
111+
s.resHeader.Set(headers.LastModified, getFormattedTime(4*time.Second))
111112

112113
s.True(IsFresh(s.reqHeader, s.resHeader))
113114
}
114115

115116
func (s FreshSuite) TestBoshFresh() {
116-
s.reqHeader.Set(HeaderIfNoneMatch, "foo")
117-
s.reqHeader.Set(HeaderIfModifiedSince, getFormattedTime(4*time.Second))
117+
s.reqHeader.Set(headers.IfNoneMatch, "foo")
118+
s.reqHeader.Set(headers.IfModifiedSince, getFormattedTime(4*time.Second))
118119

119-
s.resHeader.Set(HeaderETag, "foo")
120-
s.resHeader.Set(HeaderLastModified, getFormattedTime(2*time.Second))
120+
s.resHeader.Set(headers.ETag, "foo")
121+
s.resHeader.Set(headers.LastModified, getFormattedTime(2*time.Second))
121122

122123
s.True(IsFresh(s.reqHeader, s.resHeader))
123124
}
124125

125126
func (s FreshSuite) TestBoshStale() {
126-
s.reqHeader.Set(HeaderIfNoneMatch, "foo")
127-
s.reqHeader.Set(HeaderIfModifiedSince, getFormattedTime(2*time.Second))
127+
s.reqHeader.Set(headers.IfNoneMatch, "foo")
128+
s.reqHeader.Set(headers.IfModifiedSince, getFormattedTime(2*time.Second))
128129

129-
s.resHeader.Set(HeaderETag, "bar")
130-
s.resHeader.Set(HeaderLastModified, getFormattedTime(4*time.Second))
130+
s.resHeader.Set(headers.ETag, "bar")
131+
s.resHeader.Set(headers.LastModified, getFormattedTime(4*time.Second))
131132

132133
s.False(IsFresh(s.reqHeader, s.resHeader))
133134
}

0 commit comments

Comments
 (0)