Example #1
0
func (s *server) get(wr http.ResponseWriter, r *http.Request) {
	var (
		ok       bool
		bucket   string
		filename string
		res      meta.Response
		n        *meta.Needle
		f        *meta.File
		uerr     errors.Error
		err      error
	)
	if r.Method != "GET" {
		http.Error(wr, "method not allowed", http.StatusMethodNotAllowed)
		return
	}
	if bucket = r.FormValue("bucket"); bucket == "" {
		http.Error(wr, "bad request", http.StatusBadRequest)
		return
	}
	if filename = r.FormValue("filename"); filename == "" {
		http.Error(wr, "bad request", http.StatusBadRequest)
		return
	}
	defer HttpGetWriter(r, wr, time.Now(), &res)
	if n, f, res.Stores, err = s.d.GetStores(bucket, filename); err != nil {
		log.Errorf("GetStores() error(%v)", err)
		if uerr, ok = err.(errors.Error); ok {
			res.Ret = int(uerr)
		} else {
			res.Ret = errors.RetInternalErr
		}
		return
	}
	res.Ret = errors.RetOK
	res.Key = n.Key
	res.Cookie = n.Cookie
	res.Vid = n.Vid
	res.Mine = f.Mine
	if f.MTime != 0 {
		res.MTime = f.MTime
	} else {
		res.MTime = n.MTime
	}
	res.Sha1 = f.Sha1
	return
}