An open API service indexing awesome lists of open source software.

https://github.com/ekomobile/dadata

Golang client for DaData.ru
https://github.com/ekomobile/dadata

address-validation dadata go golang suggestions

Last synced: 21 days ago
JSON representation

Golang client for DaData.ru

Awesome Lists containing this project

README

          

# Client for DaData.ru

Forked from https://github.com/webdeskltd/dadata.

[![Build Status](https://travis-ci.org/ekomobile/dadata.svg)](https://travis-ci.com/ekomobile/dadata)
[![GitHub release](https://img.shields.io/github/release/ekomobile/dadata.svg)](https://github.com/ekomobile/dadata/releases)
[![Go Report Card](https://goreportcard.com/badge/github.com/ekomobile/dadata)](https://goreportcard.com/report/github.com/ekomobile/dadata/v2)
[![GoDoc](https://godoc.org/github.com/ekomobile/dadata/v2?status.svg)](https://godoc.org/github.com/ekomobile/dadata/v2)

DaData API v2

Implemented [Clean](https://dadata.ru/api/clean/) and [Suggest](https://dadata.ru/api/suggest/) methods.

## Installation

`go get github.com/ekomobile/dadata/v2`

## Usage
```go
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(), &params)
if err != nil {
return
}

for _, s := range suggestions {
fmt.Printf("%s", s.Value)
}
}
```

## Configuration

### Credentials

`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.

```go
creds := client.Credentials{
ApiKeyValue: "",
SecretKeyValue: "",
}

api := NewSuggestApi(client.WithCredentialProvider(&creds))
```

### HTTP client

HTTP client may be overridden with custom one:

```go
httpClient := &http.Client{}

api := NewSuggestApi(WithHttpClient(httpClient))
```

### Low level client usage

Pass and consume raw bytes/strings:

```go
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":"г Москва, ул Хабаровская",...`
```

## Licence
MIT see [LICENSE](LICENSE)