func compositeISBNLookup(ctx ae.Context, country string, isbn isbn13.ISBN13) (resp *data.BookMetaData, err error) { // look in my own library first - if this fails badly, abort anything further if shelf, err := persistence.LookupBookshelf(ctx); err == nil { if book := shelf.LookupInfo(isbn); book != nil { return book, nil } } else { return nil, err } var errors ae.MultiError if book, err := persistence.LookupISBN(ctx, country, isbn); err == nil { return book, nil } else { errors = append(errors, err) } if r, err := googlebooks.LookupISBN(ctx, country, isbn); err == nil { persistence.StoreISBNResult(ctx, country, isbn, r) return r, nil } else { errors = append(errors, err) } return nil, errors }
func normalize(call *Call, info *data.BookMetaData) { var isbn isbn13.ISBN13 var err error if isbn, err = isbn13.New(info.ISBN); err == nil { var base *data.BookMetaData if base, err = persistence.LookupISBN(call.Context, call.DetermineCountry(), isbn); err == nil { info.Volume.Images = base.Volume.Images return } else { info.Volume.Images = data.ImageLinks{} } } else { call.Context.Errorf("Could not normalize data for %s: %s", info.ISBN, err.Error()) } }