本文整理汇总了Golang中github.com/denisbr/filebin/app/model.Tag.TagDirExists方法的典型用法代码示例。如果您正苦于以下问题:Golang Tag.TagDirExists方法的具体用法?Golang Tag.TagDirExists怎么用?Golang Tag.TagDirExists使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/denisbr/filebin/app/model.Tag
的用法示例。
在下文中一共展示了Tag.TagDirExists方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: FetchArchive
func FetchArchive(w http.ResponseWriter, r *http.Request, cfg config.Configuration, ctx model.Context) {
params := mux.Vars(r)
t := model.Tag{}
err := t.SetTag(params["tag"])
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Invalid tag", 400)
return
}
t.SetTagDir(cfg.Filedir)
t.CalculateExpiration(cfg.Expiration)
if t.TagDirExists() {
expired, err := t.IsExpired(cfg.Expiration)
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Internal server error", 500)
return
}
if expired {
ctx.Log.Println("Expired: " + t.ExpirationReadable)
http.Error(w, "This tag has expired.", 410)
return
}
err = t.StatInfo()
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Internal Server Error", 500)
return
}
err = t.List(cfg.Baseurl)
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Error reading the tag contents.", 404)
return
}
} else {
// The tag does not exist
http.Error(w, "Not found", 404)
return
}
w.Header().Set("Cache-Control", "s-maxage=3600")
var status = 200
w.Header().Set("Content-Type", "application/zip")
// Generate a map of paths to add to the zip response
var paths []string
for _, f := range t.Files {
path := filepath.Join(f.TagDir, f.Filename)
paths = append(paths, path)
}
output.ZIPresponse(w, status, t.Tag, paths, ctx)
return
}
示例2: FetchTag
func FetchTag(w http.ResponseWriter, r *http.Request, cfg config.Configuration, ctx model.Context) {
params := mux.Vars(r)
t := model.Tag{}
err := t.SetTag(params["tag"])
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Invalid tag", 400)
return
}
t.SetTagDir(cfg.Filedir)
t.CalculateExpiration(cfg.Expiration)
if t.TagDirExists() {
expired, err := t.IsExpired(cfg.Expiration)
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Internal server error", 500)
return
}
if expired {
ctx.Log.Println("Expired: " + t.ExpirationReadable)
http.Error(w, "This tag has expired.", 410)
return
}
err = t.StatInfo()
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Internal Server Error", 500)
return
}
err = t.List(cfg.Baseurl)
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Error reading the tag contents.", 404)
return
}
}
w.Header().Set("Vary", "Content-Type")
w.Header().Set("Cache-Control", "s-maxage=3600")
var status = 200
if r.Header.Get("Content-Type") == "application/json" {
w.Header().Set("Content-Type", "application/json")
output.JSONresponse(w, status, t, ctx)
return
} else {
if len(t.Files) == 0 {
output.HTMLresponse(w, "newtag", status, t, ctx)
} else {
output.HTMLresponse(w, "viewtag", status, t, ctx)
}
return
}
}
示例3: FetchAlbum
func FetchAlbum(w http.ResponseWriter, r *http.Request, cfg config.Configuration, ctx model.Context) {
t := model.Tag{}
params := mux.Vars(r)
err := t.SetTag(params["tag"])
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Invalid tag", 400)
return
}
t.SetTagDir(cfg.Filedir)
t.CalculateExpiration(cfg.Expiration)
if t.TagDirExists() {
expired, err := t.IsExpired(cfg.Expiration)
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Internal server error", 500)
return
}
if expired {
ctx.Log.Println("Expired: " + t.ExpirationReadable)
http.Error(w, "This tag has expired.", 410)
return
}
err = t.StatInfo()
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Internal Server Error", 500)
return
}
err = t.List(cfg.Baseurl)
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Error reading the tag contents.", 404)
return
}
} else {
// The tag does not exist
http.Error(w, "Not found", 404)
return
}
w.Header().Set("Cache-Control", "s-maxage=3600")
var status = 200
output.HTMLresponse(w, "viewalbum", status, t, ctx)
return
}
示例4: Upload
func Upload(w http.ResponseWriter, r *http.Request, cfg config.Configuration, ctx model.Context) {
var err error
f := model.File{}
f.RemoteAddr = r.RemoteAddr
f.UserAgent = r.Header.Get("User-Agent")
// Extract the tag from the request
if r.Header.Get("tag") == "" {
tag := randomString(cfg.DefaultTagLength)
err = f.SetTag(tag)
ctx.Log.Println("Tag generated: " + f.Tag)
} else {
tag := r.Header.Get("tag")
err = f.SetTag(tag)
ctx.Log.Println("Tag specified: " + tag)
}
if err != nil {
ctx.Log.Println(err)
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
f.SetTagDir(cfg.Filedir)
ctx.Log.Println("Tag directory: " + f.TagDir)
// Write the request body to a temporary file
err = f.WriteTempfile(r.Body, cfg.Tempdir)
if err != nil {
ctx.Log.Println("Unable to write tempfile: ", err)
// Clean up by removing the tempfile
f.ClearTemp()
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
return
}
ctx.Log.Println("Tempfile: " + f.Tempfile)
ctx.Log.Println("Tempfile size: " + strconv.FormatInt(f.Bytes, 10) + " bytes")
// Do not accept files that are 0 bytes
if f.Bytes == 0 {
ctx.Log.Println("Empty files are not allowed. Aborting.")
// Clean up by removing the tempfile
f.ClearTemp()
http.Error(w, "No content. The file size must be more than "+
"0 bytes.", http.StatusBadRequest)
return
}
// Calculate and verify the checksum
checksum := r.Header.Get("content-sha256")
if checksum != "" {
ctx.Log.Println("Checksum specified: " + checksum)
}
err = f.VerifySHA256(checksum)
ctx.Log.Println("Checksum calculated: " + f.Checksum)
if err != nil {
ctx.Log.Println("The specified checksum did not match")
http.Error(w, "Checksum did not match", http.StatusConflict)
return
}
// Trigger new tag
t := model.Tag{}
t.SetTag(f.Tag)
t.SetTagDir(cfg.Filedir)
if !t.TagDirExists() {
if cfg.TriggerNewTag != "" {
ctx.Log.Println("Executing trigger: New tag")
triggerNewTagHandler(cfg.TriggerNewTag, f.Tag)
}
}
// Create the tag directory if it does not exist
err = f.EnsureTagDirectoryExists()
if err != nil {
ctx.Log.Println("Unable to create tag directory: ", f.TagDir)
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
return
}
t.CalculateExpiration(cfg.Expiration)
expired, err := t.IsExpired(cfg.Expiration)
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Internal server error", 500)
return
}
if expired {
ctx.Log.Println("The tag has expired. Aborting.")
http.Error(w, "This tag has expired.", 410)
return
}
// Extract the filename from the request
fname := r.Header.Get("filename")
if fname == "" {
ctx.Log.Println("Filename generated: " + f.Checksum)
f.SetFilename(f.Checksum)
//.........这里部分代码省略.........
示例5: DeleteTag
func DeleteTag(w http.ResponseWriter, r *http.Request, cfg config.Configuration, ctx model.Context) {
var err error
params := mux.Vars(r)
t := model.Tag{}
err = t.SetTag(params["tag"])
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Invalid tag", 400)
return
}
t.SetTagDir(cfg.Filedir)
// Tag does not exist
if t.TagDirExists() == false {
http.Error(w, "Tag Not Found", 404)
return
}
t.List(cfg.Baseurl)
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Internal Server Error", 500)
return
}
if cfg.TriggerDeleteTag != "" {
ctx.Log.Println("Executing trigger: Delete tag")
triggerDeleteTagHandler(cfg.TriggerDeleteTag, t.Tag)
}
// Tag exists, so let's remove it.
err = t.Remove()
if err != nil {
ctx.Log.Println(err)
http.Error(w, "Internal Server Error", 500)
return
}
// Verify that the tag directory is removed before sending the response.
if t.TagDirExists() == true {
// Failsafe. This should not happen.
ctx.Log.Println("Failed to delete the tag. The tag dir still exists.")
http.Error(w, "Internal Server Error", 500)
return
}
// Purging any old content
if cfg.CacheInvalidation {
for _, f := range t.Files {
if err := f.Purge(); err != nil {
ctx.Log.Println(err)
}
}
}
ctx.Log.Println("Tag deleted successfully.")
http.Error(w, "Tag Deleted Successfully", 200)
return
}