api: Implement support for additional request headers.

Now GetObject and HeadObject both support

  - If-Modified-Since, If-Unmodified-Since
  - If-Match, If-None-Match

request headers.

These headers are used to further handle the responses for GetObject
and HeadObject API.

Fixes #1098
This commit is contained in:
Harshavardhana
2016-02-28 18:10:37 -08:00
parent 0b2e449727
commit ee1b86e517
4 changed files with 153 additions and 8 deletions

View File

@@ -648,6 +648,24 @@ func (s *MyAPIFSCacheSuite) TestHeadOnObject(c *C) {
response, err = client.Do(request)
c.Assert(err, IsNil)
c.Assert(response.StatusCode, Equals, http.StatusOK)
lastModified := response.Header.Get("Last-Modified")
t, err := time.Parse(http.TimeFormat, lastModified)
c.Assert(err, IsNil)
request, err = s.newRequest("HEAD", testAPIFSCacheServer.URL+"/headonobject/object1", 0, nil)
c.Assert(err, IsNil)
request.Header.Set("If-Modified-Since", t.Add(1*time.Minute).UTC().Format(http.TimeFormat))
response, err = client.Do(request)
c.Assert(err, IsNil)
c.Assert(response.StatusCode, Equals, http.StatusNotModified)
request, err = s.newRequest("HEAD", testAPIFSCacheServer.URL+"/headonobject/object1", 0, nil)
c.Assert(err, IsNil)
request.Header.Set("If-Unmodified-Since", t.Add(-1*time.Minute).UTC().Format(http.TimeFormat))
response, err = client.Do(request)
c.Assert(err, IsNil)
c.Assert(response.StatusCode, Equals, http.StatusPreconditionFailed)
}
func (s *MyAPIFSCacheSuite) TestHeadOnBucket(c *C) {