code: func (pr *publishRequest) fileSchemaRefFromBlob(des *search.DescribedBlob) (fileref blob.Ref, fileinfo *camtypes.FileInfo, ok bool) {
  	if des == nil {
  		http.NotFound(pr.rw, pr.req)
  		return
  	}
  	if des.Permanode != nil {
  		// TODO: get "forceMime" attr out of the permanode? or
  		// fileName content-disposition?
  		if cref := des.Permanode.Attr.Get("camliContent"); cref != "" {
  			cbr, ok2 := blob.Parse(cref)
  			if !ok2 {
  				http.Error(pr.rw, "bogus camliContent", 500)
  				return
  			}
  			des = des.PeerBlob(cbr)
  			if des == nil {
  				http.Error(pr.rw, "camliContent not a peer in describe", 500)
  				return
  			}
  		}
  	}
  	if des.CamliType == "file" {
  		return des.BlobRef, des.File, true
  	}
  	http.Error(pr.rw, "failed to find fileSchemaRefFromBlob", 404)
  	return
  }
docs: // Given a described blob, optionally follows a camliContent and
  // returns the file's schema blobref and its fileinfo (if found).