1
0
Fork 0
mirror of https://github.com/vbatts/imgsrv.git synced 2025-02-17 07:17:52 +00:00

* more logging on upload failures.

* adding an error page
* trying to fix the tag cloud
This commit is contained in:
Vincent Batts 2013-09-10 14:51:44 -04:00
parent 1c14a76877
commit d4824ad6a2
4 changed files with 68 additions and 18 deletions

View file

@ -93,8 +93,13 @@ func (u Util) GetExtensions() (kp []types.IdCount, err error) {
if _, err := u.Gfs.Find(nil).MapReduce(job, &kp); err != nil {
return kp, err
}
// Less than effecient, but cleanest place to put this
for i := range kp {
kp[i].Root = "ext" // for extension. Maps to /ext/
}
return kp, nil
}
/*
get a list of keywords and their frequency count
*/
@ -126,5 +131,9 @@ func (u Util) GetKeywords() (kp []types.IdCount, err error) {
if _, err := u.Gfs.Find(nil).MapReduce(job, &kp); err != nil {
return kp, err
}
// Less than effecient, but cleanest place to put this
for i := range kp {
kp[i].Root = "k" // for keyword. Maps to /k/
}
return kp, nil
}

View file

@ -179,7 +179,7 @@ var tagcloudTemplateHTML = `
{{if .}}
<div id="tagCloud">
{{range .}}
<a href="/k/{{.Id}}" rel="{{.Value}}">{{.Id}}</a>
<a href="/{{.Root}}/{{.Id}}" rel="{{.Value}}">{{.Id}}</a>
{{end}}
</div>
{{end}}
@ -418,3 +418,41 @@ func ListTagCloudPage(w io.Writer, ic []types.IdCount) (err error) {
}
return
}
func ErrorPage(w io.Writer, e error) (err error) {
err = headTemplate.Execute(w, map[string]string{"title": "FileSrv :: ERROR"})
if err != nil {
return err
}
err = navbarTemplate.Execute(w, nil)
if err != nil {
return err
}
err = containerBeginTemplate.Execute(w, nil)
if err != nil {
return err
}
// main context of this page
err = template.Must(template.New("serverError").Parse(`
{{if .}}
<div class="span9">
<div class="hero-unit">
<h3>ERROR!</h3>
<div class="error">
{{.Error()}}
</div>
</div> {{/* hero-unit */}}
</div> {{/* span9 */}}
{{end}}
`)).Execute(w, e)
if err != nil {
return err
}
err = tailTemplate.Execute(w, map[string]string{"footer": fmt.Sprintf("Version: %s", VERSION)})
if err != nil {
return err
}
return
}

View file

@ -78,10 +78,10 @@ func initMongo() {
}
func serverErr(w http.ResponseWriter, r *http.Request, e error) {
log.Printf("Error: %s", e)
httplog.LogRequest(r, 503)
fmt.Fprintf(w, "Error: %s", e)
http.Error(w, "Service Unavailable", 503)
log.Printf("Error: %s", e)
w.WriteHeader(503)
//ErrorPage(w, err)
return
}
@ -750,12 +750,13 @@ func routeUpload(w http.ResponseWriter, r *http.Request) {
if exists || useRandName {
ext := filepath.Ext(filename)
str := hash.GetSmallHash()
filename = fmt.Sprintf("%s%s", str, ext)
filename = strings.ToLower(fmt.Sprintf("%s%s", str, ext))
}
file, err := gfs.Create(filename)
defer file.Close()
if err != nil {
log.Printf("Failed to create on gfs: %s", err)
serverErr(w, r, err)
return
}
@ -763,11 +764,12 @@ func routeUpload(w http.ResponseWriter, r *http.Request) {
multiFile, err := filehdr.Open()
if err != nil {
log.Println(err)
log.Printf("Failed to open from MultipartForm: %s", err)
return
}
n, err := io.Copy(file, multiFile)
if err != nil {
log.Printf("Failed copy from MultipartForm to gfs: %s", err)
serverErr(w, r, err)
return
}

View file

@ -49,4 +49,5 @@ Structure used for collecting values from mongo for a tag cloud
type IdCount struct {
Id string "_id"
Value int
Root string
}