forked from abclogin/dadata
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsuggest.go
104 lines (81 loc) · 3.48 KB
/
suggest.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package dadata
type SuggestRequestParamsLocation struct {
CityFiasID string `json:"city_fias_id,omitempty"` // search only in this area
City string `json:"city,omitempty"`
CityKladrID string `json:"city_kladr_id,omitempty"`
FiasID string `json:"fias_id,omitempty"`
KladrID string `json:"kladr_id,omitempty"`
Region string `json:"region,omitempty"`
RegionFiasID string `json:"region_fias_id,omitempty"`
RegionKladrID string `json:"region_kladr_id,omitempty"`
}
// SuggestRequestParams Request struct
type SuggestRequestParams struct {
Query string `json:"query"` // user input for suggestion
Count int `json:"count"` // ligmit for results
Locations []SuggestRequestParamsLocation `json:"locations"`
RestrictValue bool `json:"restrict_value"` // don't show restricts (region) on results
}
// SuggestAddressResponse result slice for address suggestions
type SuggestAddressResponse struct {
Suggestions []ResponseAddress `json:"suggestions"`
}
// SuggestNameResponse result slice for name suggestions
type SuggestNameResponse struct {
Suggestions []ResponseName `json:"suggestions"`
}
// SuggestBankResponse result slice for bank suggestions
type SuggestBankResponse struct {
Suggestions []ResponseBank `json:"suggestions"`
}
// SuggestPartyResponse result slice for party suggestions
type SuggestPartyResponse struct {
Suggestions []ResponseParty `json:"suggestions"`
}
// SuggestEmailResponse result slice for email suggestions
type SuggestEmailResponse struct {
Suggestions []ResponseEmail `json:"suggestions"`
}
func (daData *DaData) sendSuggestRequest(lastURLPart string, requestParams SuggestRequestParams, result interface{}) error {
return daData.sendRequest("suggest/"+lastURLPart, requestParams, result)
}
// SuggestAddresses try to return suggest addresses by requestParams
func (daData *DaData) SuggestAddresses(requestParams SuggestRequestParams) ([]ResponseAddress, error) {
result := SuggestAddressResponse{}
if err := daData.sendSuggestRequest("address", requestParams, &result); err != nil {
return nil, err
}
return result.Suggestions, nil
}
// SuggestNames try to return suggest names by requestParams
func (daData *DaData) SuggestNames(requestParams SuggestRequestParams) ([]ResponseName, error) {
result := SuggestNameResponse{}
if err := daData.sendSuggestRequest("fio", requestParams, &result); err != nil {
return nil, err
}
return result.Suggestions, nil
}
// SuggestBanks try to return suggest banks by requestParams
func (daData *DaData) SuggestBanks(requestParams SuggestRequestParams) ([]ResponseBank, error) {
result := SuggestBankResponse{}
if err := daData.sendSuggestRequest("bank", requestParams, &result); err != nil {
return nil, err
}
return result.Suggestions, nil
}
// SuggestParties try to return suggest parties by requestParams
func (daData *DaData) SuggestParties(requestParams SuggestRequestParams) ([]ResponseParty, error) {
result := SuggestPartyResponse{}
if err := daData.sendSuggestRequest("party", requestParams, &result); err != nil {
return nil, err
}
return result.Suggestions, nil
}
// SuggestEmails try to return suggest emails by requestParams
func (daData *DaData) SuggestEmails(requestParams SuggestRequestParams) ([]ResponseEmail, error) {
result := SuggestEmailResponse{}
if err := daData.sendSuggestRequest("email", requestParams, &result); err != nil {
return nil, err
}
return result.Suggestions, nil
}