Forked from https://github.com/webdeskltd/dadata.
DaData API v2
Implemented Clean and Suggest methods.
go get github.com/ekomobile/dadata/v2
import (
"context"
"fmt"
"github.com/ekomobile/dadata/v2"
"github.com/ekomobile/dadata/v2/api/suggest"
)
func DaDataExample() {
api := dadata.NewSuggestApi()
params := suggest.RequestParams{
Query: "ул Свободы",
}
suggestions, err := api.Address(context.Background(), ¶ms)
if err != nil {
return
}
for _, s := range suggestions {
fmt.Printf("%s", s.Value)
}
}
DADATA_API_KEY
and DADATA_SECRET_KEY
environment variables are used by default to authenticate client.
Custom credential provider may be used by implementing client.CredentialProvider
interface.
Also, there is a "simple" credential provider client.Credentials
you may utilize.
creds := client.Credentials{
ApiKeyValue: "<YOUR_API_KEY>",
SecretKeyValue: "<YOUR_SECRET_KEY>",
}
api := NewSuggestApi(client.WithCredentialProvider(&creds))
HTTP client may be overridden with custom one:
httpClient := &http.Client{}
api := NewSuggestApi(WithHttpClient(httpClient))
Pass and consume raw bytes/strings:
endpointUrl, err := url.Parse("https://suggestions.dadata.ru/suggestions/api/4_1/rs/")
if err != nil {
return
}
cli := client.NewClient(endpointUrl,
client.WithEncoderFactory(encoder.RawEncoderFactory()),
client.WithDecoderFactory(encoder.RawDecoderFactory()),
)
request := bytes.NewBufferString("{ \"query\": \"москва хабар\" }")
response := &bytes.Buffer{}
err = cli.Post(context.Background(), "suggest/address", request, response)
if err != nil {
return
}
fmt.Print(response.String()) // Output: `{"suggestions":[{"value":"г Москва, ул Хабаровская",...`
MIT see LICENSE