71 lines
1.9 KiB
Go
71 lines
1.9 KiB
Go
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
|
|
}
|