Example #1
0
// Suggest returns a slice of suggestions for a request.
// glosbe returns suggestions only for the source locale.
func Suggest(req data.SuggestionReq) (*[]data.Suggestion, error) {
	resp, err := req.FromCache()
	if err == nil {
		return resp, nil
	}

	source, err := gtranslate.Detect(req)
	if err != nil {
		return nil, err
	}

	source = req.NormalizeLocale(source)
	target := req.TargetLocale(source)

	query, err := makeSuggestQuery(req.Query, source, target)
	if err != nil {
		return nil, err
	}

	rawData, err := httputils.Get(query)
	if err != nil {
		return nil, err
	}

	resp, err = parseSuggestResp(rawData, source)
	if err != nil {
		return nil, err
	}

	if cacheErr := req.SaveCache(resp); cacheErr != nil {
		log.Println(cacheErr)
	}
	return resp, nil
}