// ScaledCached reads the scaled version of the image in file, // if it is in cache. On success, the image format is returned. func (ih *ImageHandler) scaledCached(buf *bytes.Buffer, file *blobref.BlobRef) (format string, err error) { name := cacheKey(file.String(), ih.MaxWidth, ih.MaxHeight) br, err := ih.sc.Get(name) if err != nil { return format, fmt.Errorf("%v: %v", name, err) } fr, err := ih.cached(br) if err != nil { return format, fmt.Errorf("No cache hit for %v: %v", br, err) } _, err = io.Copy(buf, fr) if err != nil { return format, fmt.Errorf("error reading cached thumbnail %v: %v", name, err) } mime := magic.MimeType(buf.Bytes()) if mime == "" { return format, fmt.Errorf("error with cached thumbnail %v: unknown mime type", name) } pieces := strings.Split(mime, "/") if len(pieces) < 2 { return format, fmt.Errorf("error with cached thumbnail %v: bogus mime type", name) } if pieces[0] != "image" { return format, fmt.Errorf("error with cached thumbnail %v: not an image", name) } return pieces[1], nil }
func (sn *BlobSniffer) Parse() { if sn.bufferIsCamliJSON() { sn.mimeType = "application/json; camliType=" + sn.meta.Type() } else { sn.mimeType = magic.MimeType(sn.header) } }
func (sn *BlobSniffer) Parse() { // Try to parse it as JSON // TODO: move this into the magic library? Is the magic library Camli-specific // or to be upstreamed elsewhere? if sn.bufferIsCamliJson() { str := "application/json; camliType=" + sn.camli.Type sn.mimeType = &str } if mime := magic.MimeType(sn.header); mime != "" { sn.mimeType = &mime } }