dadata/client/client_test.go

135 lines
2.7 KiB
Go
Raw Normal View History

2019-04-09 17:08:32 +03:00
package client
import (
2024-05-14 23:23:03 +03:00
"bytes"
2019-04-09 17:08:32 +03:00
"context"
"encoding/json"
2019-04-09 17:08:32 +03:00
"fmt"
"gitea.24example.ru/spavelit/dadata/api/suggest"
"gitea.24example.ru/spavelit/dadata/client/transport"
"gitea.24example.ru/spavelit/dadata/client/transport/encoder"
"io"
2019-04-09 17:08:32 +03:00
"net/url"
)
func ExampleNewClient() {
var err error
2019-04-09 17:13:34 +03:00
endpointUrl, err := url.Parse("https://suggestions.dadata.ru/suggestions/api/4_1/rs/")
2019-04-09 17:08:32 +03:00
if err != nil {
return
}
api := suggest.Api{
2019-04-09 17:13:34 +03:00
Client: NewClient(endpointUrl),
2019-04-09 17:08:32 +03:00
}
params := suggest.RequestParams{
Query: "ул Свободы",
}
suggestions, err := api.Address(context.Background(), &params)
if err != nil {
return
}
for _, s := range suggestions {
fmt.Printf("%s", s.Value)
}
}
2019-04-09 17:13:34 +03:00
func ExampleCredentials() {
2019-04-09 17:08:32 +03:00
var err error
2019-04-09 17:13:34 +03:00
endpointUrl, err := url.Parse("https://suggestions.dadata.ru/suggestions/api/4_1/rs/")
2019-04-09 17:08:32 +03:00
if err != nil {
return
}
creds := Credentials{
ApiKeyValue: "<YOUR_API_KEY>",
2022-03-30 23:30:20 +03:00
SecretKeyValue: "<YOUR_SECRET_KEY>",
2019-04-09 17:08:32 +03:00
}
api := suggest.Api{
2019-04-09 17:13:34 +03:00
Client: NewClient(endpointUrl, WithCredentialProvider(&creds)),
2019-04-09 17:08:32 +03:00
}
params := suggest.RequestParams{
Query: "ул Свободы",
}
suggestions, err := api.Address(context.Background(), &params)
if err != nil {
return
}
for _, s := range suggestions {
fmt.Printf("%s", s.Value)
}
}
func ExampleWithEncoderFactory() {
var err error
endpointUrl, err := url.Parse("https://suggestions.dadata.ru/suggestions/api/4_1/rs/")
if err != nil {
return
}
// Customize json encoding
encoderFactory := func(w io.Writer) transport.Encoder {
e := json.NewEncoder(w)
e.SetIndent("", " ")
return func(v interface{}) error {
return e.Encode(v)
}
}
// Customize json decoding
decoderFactory := func(r io.Reader) transport.Decoder {
d := json.NewDecoder(r)
d.DisallowUnknownFields()
return func(v interface{}) error {
return d.Decode(v)
}
}
api := suggest.Api{
Client: NewClient(endpointUrl, WithEncoderFactory(encoderFactory), WithDecoderFactory(decoderFactory)),
}
params := suggest.RequestParams{
Query: "ул Свободы",
}
suggestions, err := api.Address(context.Background(), &params)
if err != nil {
return
}
for _, s := range suggestions {
fmt.Printf("%s", s.Value)
}
}
2024-05-14 23:23:03 +03:00
func ExampleClient_low_level() {
var err error
endpointUrl, err := url.Parse("https://suggestions.dadata.ru/suggestions/api/4_1/rs/")
if err != nil {
return
}
cli := NewClient(endpointUrl,
WithEncoderFactory(encoder.RawEncoderFactory()),
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())
}