Add language to inventaire search book
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
@@ -21,6 +22,7 @@ func AddQueryParam(u *url.URL, paramName string, paramValue string) {
|
||||
|
||||
func FetchAndParseResult[T any](u *url.URL, queryResult *T) error {
|
||||
resp, err := DoApiQuery(u)
|
||||
log.Printf("Calling GET %s", u.String())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -27,12 +27,15 @@ func computeInventaireApiUrl(paths ...string) (*url.URL, error) {
|
||||
return callapiutils.ComputeUrl(baseUrl, paths...)
|
||||
}
|
||||
|
||||
func CallInventaireSearch(searchterm string, limit int, offset int) (InventaireSearchResult, error) {
|
||||
func CallInventaireSearch(searchterm string, lang string, limit int, offset int) (InventaireSearchResult, error) {
|
||||
var queryResult InventaireSearchResult
|
||||
u, err := computeInventaireApiUrl("search")
|
||||
if err != nil {
|
||||
return queryResult, err
|
||||
}
|
||||
if lang != "" {
|
||||
callapiutils.AddQueryParam(u, "lang", lang)
|
||||
}
|
||||
if limit != 0 {
|
||||
callapiutils.AddQueryParamInt(u, "limit", limit)
|
||||
}
|
||||
|
||||
@@ -6,8 +6,17 @@ import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestCallInventaireSearch_NoParameters(t *testing.T) {
|
||||
result, err := CallInventaireSearch("salammbo", "", 0, 0)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
assert.Equal(t, 17, result.Total)
|
||||
assert.Equal(t, 10, len(result.Results))
|
||||
}
|
||||
|
||||
func TestCallInventaireSearch_NoLimit(t *testing.T) {
|
||||
result, err := CallInventaireSearch("salammbo", 0, 0)
|
||||
result, err := CallInventaireSearch("salammbo", "fr", 0, 0)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -16,7 +25,7 @@ func TestCallInventaireSearch_NoLimit(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestCallInventaireSearch_Limit(t *testing.T) {
|
||||
result, err := CallInventaireSearch("salammbo", 5, 0)
|
||||
result, err := CallInventaireSearch("salammbo", "fr", 5, 0)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -25,7 +34,7 @@ func TestCallInventaireSearch_Limit(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestCallInventaireSearch_Offset(t *testing.T) {
|
||||
result, err := CallInventaireSearch("salammbo", 0, 15)
|
||||
result, err := CallInventaireSearch("salammbo", "fr", 0, 15)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -12,9 +12,18 @@ import (
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type bookGetSearch struct {
|
||||
Lang string `form:"lang" binding:"max=5"`
|
||||
}
|
||||
|
||||
func GetSearchBooksHandler(ac appcontext.AppContext) {
|
||||
searchterm := ac.C.Param("searchterm")
|
||||
|
||||
var params bookGetSearch
|
||||
err := ac.C.ShouldBind(¶ms)
|
||||
if err != nil {
|
||||
myvalidator.ReturnErrorsAsJsonResponse(&ac, err)
|
||||
return
|
||||
}
|
||||
user, fetchUserErr := ac.GetAuthenticatedUser()
|
||||
if fetchUserErr != nil {
|
||||
myvalidator.ReturnErrorsAsJsonResponse(&ac, fetchUserErr)
|
||||
@@ -40,7 +49,7 @@ func GetSearchBooksHandler(ac appcontext.AppContext) {
|
||||
if len(books) > 0 {
|
||||
returnedBooks = books
|
||||
} else {
|
||||
queryResult, err := inventaire.CallInventaireSearch(searchterm, limit, offset)
|
||||
queryResult, err := inventaire.CallInventaireSearch(searchterm, params.Lang, limit, offset)
|
||||
if err != nil {
|
||||
myvalidator.ReturnErrorsAsJsonResponse(&ac, err)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user