소스 검색

Separate SetMaxAge/SetForceExpires

Viktor Sokolov 1 개월 전
부모
커밋
2f72886517
3개의 변경된 파일16개의 추가작업 그리고 17개의 파일을 삭제
  1. 1 1
      handlers/stream/handler.go
  2. 8 10
      headerwriter/writer.go
  3. 7 6
      headerwriter/writer_test.go

+ 1 - 1
handlers/stream/handler.go

@@ -114,7 +114,7 @@ func (s *request) execute(ctx context.Context) error {
 	hw.Passthrough(s.handler.config.PassthroughResponseHeaders) // NOTE: priority? This is lowest as it was
 	hw.SetContentLength(int(res.ContentLength))
 	hw.SetCanonical()
-	hw.SetMaxAge(s.po.Expires, 0)
+	hw.SetForceExpires(s.po.Expires)
 	hw.Write(s.rw)
 
 	// Write Content-Disposition header

+ 8 - 10
headerwriter/writer.go

@@ -54,17 +54,16 @@ func New(config *Config, originalResponseHeaders http.Header, url string) *Write
 // }
 
 // SetMaxAge sets the max-age for the Cache-Control header.
-//
-// It accepts two values:
-// - force: usually comes from ProcessingOptions.
-// - ttl which is the time-to-live value.
-//
-// force is used if ttl is blank. ttl can't outlive force.
-func (w *Writer) SetMaxAge(force *time.Time, ttl int) {
-	if ttl > 0 {
+func (w *Writer) SetMaxAge(ttl int) {
+	// We set maxAge to ttl if it's explicitly passed
+	if ttl >= 0 {
 		w.maxAge = ttl
 	}
+}
 
+// SetForceExpires sets the TTL from time
+func (w *Writer) SetForceExpires(force *time.Time) {
+	// Now, if force is passed as well
 	if force == nil {
 		return
 	}
@@ -74,8 +73,7 @@ func (w *Writer) SetMaxAge(force *time.Time, ttl int) {
 
 	// If maxAge outlives expires or was not set, we'll use expires as maxAge.
 	if w.maxAge < 0 || force.Before(currentMaxAgeTime) {
-		// Get the TTL from the expires time (must not be in the past)
-		expiresTTL := max(0, int(time.Until(*force).Seconds()))
+		expiresTTL := min(w.config.DefaultTTL, max(0, int(time.Until(*force).Seconds())))
 
 		if expiresTTL > 0 {
 			w.maxAge = expiresTTL

+ 7 - 6
headerwriter/writer_test.go

@@ -167,7 +167,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
 				DefaultTTL: 3600,
 			},
 			fn: func(w *Writer) {
-				w.SetMaxAge(nil, 1)
+				w.SetMaxAge(1)
 			},
 		},
 		{
@@ -181,7 +181,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
 				DefaultTTL: math.MaxInt32,
 			},
 			fn: func(w *Writer) {
-				w.SetMaxAge(&expires, 0)
+				w.SetForceExpires(&expires)
 			},
 		},
 		{
@@ -195,7 +195,8 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
 				DefaultTTL: math.MaxInt32,
 			},
 			fn: func(w *Writer) {
-				w.SetMaxAge(&shortExpires, 600)
+				w.SetMaxAge(600)
+				w.SetForceExpires(&shortExpires)
 			},
 		},
 		{
@@ -296,8 +297,8 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
 				DefaultTTL: 3600,
 			},
 			fn: func(w *Writer) {
-				w.SetMaxAge(nil, 0)
-				w.SetMaxAge(nil, -10)
+				w.SetMaxAge(0)
+				w.SetMaxAge(-10)
 			},
 		},
 		{
@@ -311,7 +312,7 @@ func (s *HeaderWriterSuite) TestHeaderCases() {
 				DefaultTTL: 3600,
 			},
 			fn: func(w *Writer) {
-				w.SetMaxAge(nil, 0)
+				w.SetForceExpires(nil)
 			},
 		},
 		{