33 lines
680 B
Go
33 lines
680 B
Go
|
// Copyright 2017 Frédéric Guillot. All rights reserved.
|
||
|
// Use of this source code is governed by the Apache 2.0
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package http
|
||
|
|
||
|
import "io"
|
||
|
|
||
|
type ServerResponse struct {
|
||
|
Body io.Reader
|
||
|
StatusCode int
|
||
|
EffectiveURL string
|
||
|
LastModified string
|
||
|
ETag string
|
||
|
ContentType string
|
||
|
}
|
||
|
|
||
|
func (s *ServerResponse) HasServerFailure() bool {
|
||
|
return s.StatusCode >= 400
|
||
|
}
|
||
|
|
||
|
func (s *ServerResponse) IsModified(etag, lastModified string) bool {
|
||
|
if s.StatusCode == 304 {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
if s.ETag != "" && s.LastModified != "" && (s.ETag == etag || s.LastModified == lastModified) {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
return true
|
||
|
}
|