package inventaire import ( "fmt" ) type InventaireEditionDetailedSingleResult struct { Id string Title string Description string Author *InventaireAuthorResult ISBN string Publisher string ReleaseDate string Image string Lang string } type ErrorEditionNotFound struct { InventaireId string } func (e *ErrorEditionNotFound) Error() string { return fmt.Sprintf("No edition found on inventaire for id %s\n", e.InventaireId) } func CallInventaireEdition(inventaireUrl string, inventaireId string, lang string) (InventaireEditionDetailedSingleResult, error) { var result InventaireEditionDetailedSingleResult editionQueryResults, err := callInventaireEditionEntities(inventaireUrl, []string{inventaireId}) if err != nil { return result, err } var editionQueryResult inventaireEditionQueryEntity if len(editionQueryResults.Entities) < 1 { return result, &ErrorEditionNotFound{InventaireId: inventaireId} } editionQueryResult = editionQueryResults.Entities[0] var publisher string if editionQueryResult.EditionId != "" { publisher, err = callInventairePublisherGetName(inventaireUrl, editionQueryResult.EditionId, lang) if err != nil { return result, err } } var author *InventaireAuthorResult var description string if editionQueryResult.WorkId != "" { workQueryResult, err := callInventaireBook(inventaireUrl, editionQueryResult.WorkId, lang) if err != nil { return result, err } author = workQueryResult.Author description = workQueryResult.Description } result = InventaireEditionDetailedSingleResult{ Id: editionQueryResult.Uri, Title: editionQueryResult.Title, Author: author, Description: description, ISBN: editionQueryResult.ISBN, Publisher: publisher, ReleaseDate: editionQueryResult.ReleaseDate, Image: editionQueryResult.Image, Lang: editionQueryResult.Lang, } return result, err }