本文整理汇总了Golang中appengine/blobstore.Send函数的典型用法代码示例。如果您正苦于以下问题:Golang Send函数的具体用法?Golang Send怎么用?Golang Send使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Send函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: downloadTranslationHandler
func downloadTranslationHandler(w http.ResponseWriter, r *http.Request) {
if r.Method != "GET" {
panic(&core.Error{http.StatusMethodNotAllowed, ""})
}
// parses query parameters
params, err := url.ParseQuery(r.URL.RawQuery)
if err != nil {
panic(&core.Error{http.StatusBadRequest, ""})
}
// TODO supports other query params
blobKey := params.Get("blobKey")
translations, err := loadTranslations(appengine.NewContext(r), false)
if err != nil {
panic(&core.Error{http.StatusInternalServerError, err.Error()})
}
for _, t := range translations {
if (string)(t.BlobKey) == blobKey {
blobstore.Send(w, appengine.BlobKey(blobKey))
return
}
}
panic(&core.Error{http.StatusNotFound, ""})
}
示例2: get
func get(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" {
http.Redirect(w, r, WEBSITE, http.StatusFound)
return
}
parts := strings.Split(r.URL.Path, "/")
if len(parts) == 3 {
if key := parts[1]; key != "" {
blobKey := appengine.BlobKey(key)
bi, err := blobstore.Stat(appengine.NewContext(r), blobKey)
if err == nil {
w.Header().Add("X-Content-Type-Options", "nosniff")
if !imageTypes.MatchString(bi.ContentType) {
w.Header().Add("Content-Type", "application/octet-stream")
w.Header().Add(
"Content-Disposition",
fmt.Sprintf("attachment; filename=\"%s\"", parts[2]),
)
}
w.Header().Add(
"Cache-Control",
fmt.Sprintf("public,max-age=%d", EXPIRATION_TIME),
)
blobstore.Send(w, blobKey)
return
}
}
}
http.Error(w, "404 Not Found", http.StatusNotFound)
}
示例3: handleImages
func handleImages(w http.ResponseWriter, r *http.Request) {
if r.Method != "GET" || r.URL.Path != "/images" {
serve404(w)
return
}
name := r.FormValue("Name")
if r.Method != "GET" || r.URL.Path != "/images" || "" == name {
serve404(w)
return
}
c := appengine.NewContext(r)
key := datastore.NewKey(c, "Image", name, 0, nil)
img := Image{}
err := datastore.Get(c, key, &img)
if nil != err && datastore.ErrNoSuchEntity != err {
serveError(c, w, err)
return
}
if datastore.ErrNoSuchEntity == err {
serve404(w)
return
}
blobstore.Send(w, img.BlobKey)
return
}
示例4: getVisualizationFile
// Get a file that is part of a visualization
func getVisualizationFile(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
vars := mux.Vars(r)
// Get visualization object
key, err := datastore.DecodeKey(vars["key"])
if err != nil {
common.Serve404(w)
return
}
var e model.Visualization
err = datastore.Get(c, key, &e)
if err != nil {
if err == datastore.ErrNoSuchEntity {
common.Serve404(w)
return
}
common.ServeError(c, w, err)
return
}
// Find blob key
filename := vars["filename"]
for i := range e.Files {
if e.Files[i].Filename == filename {
blobstore.Send(w, appengine.BlobKey(e.Files[i].BlobKey))
return
}
}
common.Serve404(w)
}
示例5: Download
//Download serves the broadcast from blobstore.
func Download(c util.Context) (err error) {
p, err := getPresentation(c)
if err != nil {
return
}
blobstore.Send(c.W, p.BlobKey)
return
}
示例6: Serve
func (d *gcsDriver) Serve(w http.ResponseWriter, id string, rng driver.Range) (bool, error) {
if rng.IsValid() {
w.Header().Set("X-AppEngine-BlobRange", rng.String())
}
key, err := blobstore.BlobKeyForFile(d.c, d.path(id))
if err != nil {
return false, err
}
blobstore.Send(w, key)
return true, nil
}
示例7: downloadHandler
// downloadHandler serves the zip file generated by zipHandler.
func downloadHandler(c appengine.Context, w http.ResponseWriter, r *http.Request) *appError {
k, o, err := getOverlay(r)
if err != nil {
return appErrorf(err, "overlay not found")
}
if o.Zip == "" || o.Zip == zipSentinel {
return appErrorf(nil, "overlay's zip not generated yet")
}
attachment := fmt.Sprintf(`attachment;filename="%s.zip"`, k.Encode())
w.Header().Add("Content-Disposition", attachment)
blobstore.Send(w, o.Zip)
return nil
}
示例8: packages
// Serves several package related urls that package.el expects.
//
// First are readmes, which are served from
// /packages/<package-name>-readme.txt.
//
// Second are package contents, which exist for all uploaded versions
// of a packages. They are servered from
// /packages/<package-name>-<package-version>.el
func packages(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
w.Header().Set("Content-Type", "text/plain")
file := r.URL.Path[strings.LastIndex(r.URL.Path, "/")+1:]
if readmeRE.MatchString(file) {
name := file[:strings.LastIndex(file, "-")]
var p Package
err := datastore.Get(c, packageKey(c, name), &p)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
details, err := decodeDetails(&p.Details)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
if len(details.Readme) == 0 {
fmt.Fprintf(w, "%v", p.Description)
} else {
// These \r's will show up as "^M" in the emacs buffer.
// We don't want that, although hopefully package.el will
// eventually fix this.
fmt.Fprintf(w, "%v", strings.Replace(details.Readme, "\r", "", -1))
}
} else {
parts := nameVersionRE.FindStringSubmatch(file)
if len(parts) < 3 {
http.Error(w, "Invalid package name",
http.StatusInternalServerError)
return
}
name := parts[1][:len(parts[1])-1]
version := parts[2]
q := datastore.NewQuery("Contents").Filter("Version=", version).
Ancestor(packageKey(c, name))
for cursor := q.Run(c); ; {
var contents Contents
_, err := cursor.Next(&contents)
if err == datastore.Done {
break
}
if err != nil {
http.Error(w, err.Error(),
http.StatusInternalServerError)
return
}
blobstore.Send(w, appengine.BlobKey(contents.BlobKey))
}
}
}
示例9: handleDownloadImage
// 画像のダウンロード
func handleDownloadImage(w http.ResponseWriter, r *http.Request) {
if r.Method != "GET" {
http.Error(w, "リクエストエラー", http.StatusBadRequest)
return
}
c := appengine.NewContext(r)
g := goon.FromContext(c)
key := r.FormValue("key")
ibi := ImageBlobInfo{
BlobKey: key,
}
g.Get(&ibi)
blobstore.Send(w, appengine.BlobKey(ibi.BlobKey))
}
示例10: handleRoot
func handleRoot(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
datastoreKey := r.URL.Path[1:]
if len(datastoreKey) > 0 {
var img Image
key, err := datastore.DecodeKey(datastoreKey)
if err == nil {
if err = datastore.Get(c, key, &img); err == nil {
blobstore.Send(w, img.BlobKey)
return
}
}
}
fmt.Fprint(w, "Hello World!")
}
示例11: getModuleFile
// Get a file that is part of a module
func getModuleFile(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
vars := mux.Vars(r)
// Get module object
accKey, _, err := model.GetAccountByDevname(c, vars["devname"])
if err != nil {
common.ServeError(c, w, err)
return
}
if accKey == nil {
common.Serve404(w)
return
}
key := datastore.NewKey(c, "module", vars["name"], 0, accKey)
var e model.Module
err = datastore.Get(c, key, &e)
if err != nil {
if err == datastore.ErrNoSuchEntity {
common.Serve404(w)
return
}
common.ServeError(c, w, err)
return
}
// Find blob key
filename := vars["filename"]
for i := range e.Files {
if e.Files[i].Filename == filename {
blobstore.Send(w, appengine.BlobKey(e.Files[i].BlobKey))
return
}
}
common.Serve404(w)
}
示例12: jobOutputHandler
func jobOutputHandler(w http.ResponseWriter, r *http.Request) {
path := r.URL.Path
jobID := path[12:]
c := appengine.NewContext(r)
state := &job.State{ID: jobID}
if err := datastore.Get(c, state.GetKey(c), state); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
if state.OutputData == "" {
http.Error(w, "No processing output", http.StatusBadRequest)
}
blobKey, err := blobstore.BlobKeyForFile(c, state.OutputData)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
w.Header().Set("Cache-Control", "public,max-age:60000")
blobstore.Send(w, blobKey)
}
示例13: handleServeImgById
func handleServeImgById(w http.ResponseWriter, r *http.Request) {
if r.FormValue("id") != "none" {
c := appengine.NewContext(r)
oft, _ := model.GetOferta(c, r.FormValue("id"))
if oft.BlobKey != "none" {
var imgprops image.ServingURLOptions
imgprops.Secure = true
imgprops.Size = 400
imgprops.Crop = false
if url, err := image.ServingURL(c, oft.BlobKey, &imgprops); err != nil {
c.Infof("Cannot construct ServingURL : %v", r.FormValue("id"))
blobstore.Send(w, oft.BlobKey)
} else {
http.Redirect(w, r, url.String(), http.StatusFound)
}
} else {
w.WriteHeader(http.StatusNotFound)
//w.Header().Set("Content-Type", "text/plain; charset=utf-8")
//io.WriteString(w, "404 - Not Found")
}
}
return
}
示例14: store
func store(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
c.Debugf("20")
blobstore.Send(w, appengine.BlobKey(r.FormValue("blobKey")))
}
示例15: blob
func blob(resp http.ResponseWriter, req *http.Request) {
_, id := path.Split(req.URL.Path)
blobstore.Send(resp, appengine.BlobKey(id))
}