func Save(u string) (content *Content, err error) { url, err := purell.NormalizeURLString(u, purell.FlagsSafe|purell.FlagAddTrailingSlash) md5sum := Md5sum(url) coll, err := sess.Collection("urls") // checkError(err) err = coll.Find(db.Cond{"md5": md5sum}).One(&content) if err == db.ErrNoMoreRows { // not found, create one content = &Content{Url: url, Md5: md5sum} } else { checkError(err) } log.Printf("fetching %s...", url) resp, _ := http.Get(url) bytes, _ := ioutil.ReadAll(resp.Body) content.Header = resp.Header content.Content = string(bytes) log.Printf("saving %s...", url) if content.Id == "" { content.Id = bson.NewObjectIdWithTime(time.Now()) } _, err = coll.Append(content) return }
func (s *S) TestNewObjectIdWithTime(c *C) { t := time.Unix(12345678, 0) id := bson.NewObjectIdWithTime(t) c.Assert(id.Time(), Equals, t) c.Assert(id.Machine(), DeepEquals, []byte{0x00, 0x00, 0x00}) c.Assert(int(id.Pid()), Equals, 0) c.Assert(int(id.Counter()), Equals, 0) }