|
|
@ -9,7 +9,7 @@ It is recommend to use this way |
|
|
|
|
|
|
|
|
|
|
|
cacheDir := "./cache" |
|
|
|
cacheDir := "./cache" |
|
|
|
defaultImg := "./default.jpg" |
|
|
|
defaultImg := "./default.jpg" |
|
|
|
http.Handle("/avatar/", avatar.HttpHandler(cacheDir, defaultImg)) |
|
|
|
http.Handle("/avatar/", avatar.CacheServer(cacheDir, defaultImg)) |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
package avatar |
|
|
|
package avatar |
|
|
|
|
|
|
|
|
|
|
@ -135,12 +135,12 @@ func (this *Avatar) UpdateTimeout(timeout time.Duration) error { |
|
|
|
return err |
|
|
|
return err |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
type avatarHandler struct { |
|
|
|
type service struct { |
|
|
|
cacheDir string |
|
|
|
cacheDir string |
|
|
|
altImage string |
|
|
|
altImage string |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (this *avatarHandler) mustInt(r *http.Request, defaultValue int, keys ...string) int { |
|
|
|
func (this *service) mustInt(r *http.Request, defaultValue int, keys ...string) int { |
|
|
|
var v int |
|
|
|
var v int |
|
|
|
for _, k := range keys { |
|
|
|
for _, k := range keys { |
|
|
|
if _, err := fmt.Sscanf(r.FormValue(k), "%d", &v); err == nil { |
|
|
|
if _, err := fmt.Sscanf(r.FormValue(k), "%d", &v); err == nil { |
|
|
@ -150,7 +150,7 @@ func (this *avatarHandler) mustInt(r *http.Request, defaultValue int, keys ...st |
|
|
|
return defaultValue |
|
|
|
return defaultValue |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (this *avatarHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { |
|
|
|
func (this *service) ServeHTTP(w http.ResponseWriter, r *http.Request) { |
|
|
|
urlPath := r.URL.Path |
|
|
|
urlPath := r.URL.Path |
|
|
|
hash := urlPath[strings.LastIndex(urlPath, "/")+1:] |
|
|
|
hash := urlPath[strings.LastIndex(urlPath, "/")+1:] |
|
|
|
size := this.mustInt(r, 80, "s", "size") // default size = 80*80
|
|
|
|
size := this.mustInt(r, 80, "s", "size") // default size = 80*80
|
|
|
@ -183,9 +183,9 @@ func (this *avatarHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// http.Handle("/avatar/", avatar.HttpHandler("./cache"))
|
|
|
|
// http.Handle("/avatar/", avatar.CacheServer("./cache"))
|
|
|
|
func HttpHandler(cacheDir string, defaultImgPath string) http.Handler { |
|
|
|
func CacheServer(cacheDir string, defaultImgPath string) http.Handler { |
|
|
|
return &avatarHandler{ |
|
|
|
return &service{ |
|
|
|
cacheDir: cacheDir, |
|
|
|
cacheDir: cacheDir, |
|
|
|
altImage: defaultImgPath, |
|
|
|
altImage: defaultImgPath, |
|
|
|
} |
|
|
|
} |
|
|
|