@ -47,6 +47,7 @@ func HashEmail(email string) string {
return hex . EncodeToString ( h . Sum ( nil ) )
}
// Avatar represents the avatar object.
type Avatar struct {
Hash string
AlterImage string // image path
@ -96,8 +97,8 @@ func (this *Avatar) Encode(wr io.Writer, size int) (err error) {
return
}
defer fd . Close ( )
img , err = jpeg . Decode ( fd )
if err != nil {
if img , err = jpeg . Decode ( fd ) ; err != nil {
fd . Seek ( 0 , os . SEEK_SET )
img , err = png . Decode ( fd )
}
@ -110,8 +111,8 @@ func (this *Avatar) Encode(wr io.Writer, size int) (err error) {
}
imgPath = this . AlterImage
}
img , err = decodeImageFile ( imgPath )
if err != nil {
if img , err = decodeImageFile ( imgPath ) ; err != nil {
return
}
m := resize . Resize ( uint ( size ) , 0 , img , resize . Lanczos3 )
@ -124,8 +125,7 @@ func (this *Avatar) Update() {
this . imagePath )
}
func ( this * Avatar ) UpdateTimeout ( timeout time . Duration ) error {
var err error
func ( this * Avatar ) UpdateTimeout ( timeout time . Duration ) ( err error ) {
select {
case <- time . After ( timeout ) :
err = fmt . Errorf ( "get gravatar image %s timeout" , this . Hash )
@ -140,8 +140,7 @@ type service struct {
altImage string
}
func ( this * service ) mustInt ( r * http . Request , defaultValue int , keys ... string ) int {
var v int
func ( this * service ) mustInt ( r * http . Request , defaultValue int , keys ... string ) ( v int ) {
for _ , k := range keys {
if _ , err := fmt . Sscanf ( r . FormValue ( k ) , "%d" , & v ) ; err == nil {
defaultValue = v
@ -176,8 +175,8 @@ func (this *service) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w . Header ( ) . Set ( "ETag" , etag )
}
w . Header ( ) . Set ( "Content-Type" , "image/jpeg" )
err := avatar . Encode ( w , size )
if err != nil {
if err := avatar . Encode ( w , size ) ; err != nil {
log . Warn ( "avatar encode error: %v" , err )
w . WriteHeader ( 500 )
}