forked from dreddsa5dies/goCompany
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfunctions.go
232 lines (182 loc) · 6.03 KB
/
functions.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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
package goCompany
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func init() {
v.Set("baseURL", "https://ru.rus.company/интеграция")
v.Add("apiURL", "/компании/")
v.Add("apiURL", "/люди/")
v.Add("apiURL", "/ип/")
v.Add("apiURL", "/сотрудники/")
v.Add("apiURL", "/компании/")
v.Add("apiURL", "/зависимые/")
v.Add("apiURL", "/должности/")
v.Add("apiURL", "/учредители/")
v.Add("apiKEY", "?огрн=")
v.Add("apiKEY", "?инн=")
v.Add("apiKEY", "?наименование=")
v.Add("apiKEY", "?огрнип=")
v.Add("apiKEY", "?человек=")
v.Add("apiKEY", "?фамилия=")
v.Add("apiKEY", "имя=")
v.Add("apiKEY", "отчество=")
}
// GetCompanyInfo возвращает массив CompanyInfo
func GetCompanyInfo(data string) ([]CompanyInfo, error) {
var url string
switch {
//если это ОГРН
case regOgrn.MatchString(data):
url = v.Get("baseURL") + v["apiURL"][0] + v["apiKEY"][0] + data
// если это ИНН
case regInn.MatchString(data):
url = v.Get("baseURL") + v["apiURL"][0] + v["apiKEY"][1] + data
// или название
default:
url = v.Get("baseURL") + v["apiURL"][0] + v["apiKEY"][2] + data + "&стр=5"
}
var companyJSON []CompanyInfo
err := json.Unmarshal(response(url), &companyJSON)
if err != nil {
return nil, err
}
return companyJSON, nil
}
// GetEmployees Возвращает данные об сотрудниках компании с идентификатором {id}
func GetEmployees(id string) ([]Employees, error) {
url := v.Get("baseURL") + v["apiURL"][0] + id + v["apiURL"][3]
var companyJSON []Employees
err := json.Unmarshal(response(url), &companyJSON)
if err != nil {
return nil, err
}
return companyJSON, nil
}
// GetIndivEntrep поиск индивидуального предпринимателя
func GetIndivEntrep(data string) ([]IEData, error) {
var url string
switch {
//если это ОГРНИП
case regOgrnip.MatchString(data):
url = v.Get("baseURL") + v["apiURL"][2] + v["apiKEY"][3] + data
// если это ИНН
case regInn.MatchString(data):
url = v.Get("baseURL") + v["apiURL"][2] + v["apiKEY"][1] + data
// или название
default:
url = v.Get("baseURL") + v["apiURL"][2] + v["apiKEY"][4] + data
}
var indiventrepJSON []IEData
err := json.Unmarshal(response(url), &indiventrepJSON)
if err != nil {
return nil, err
}
return indiventrepJSON, nil
}
// GetCompFounder Возвращает данные о компаниях, в которых данный человек является учредителем
func GetCompFounder(id string) ([]CompanyInfo, error) {
url := v.Get("baseURL") + v["apiURL"][1] + id + v["apiURL"][0]
var compsFounderJSON []CompanyInfo
err := json.Unmarshal(response(url), &compsFounderJSON)
if err != nil {
return nil, err
}
return compsFounderJSON, nil
}
// GetDepComp Возвращает данные о зависимых компаниях от компании с идентификатором {id}
func GetDepComp(id string) ([]CompanyInfo, error) {
url := v.Get("baseURL") + v["apiURL"][0] + id + v["apiURL"][5]
var companyJSON []CompanyInfo
err := json.Unmarshal(response(url), &companyJSON)
if err != nil {
return nil, err
}
return companyJSON, nil
}
// GetPerson Возвращает данные о человеке с идентификатором {id}
func GetPerson(id string) (Person, error) {
url := v.Get("baseURL") + v["apiURL"][1] + id + "/"
var personJSON Person
err := json.Unmarshal(response(url), &personJSON)
if err != nil {
return personJSON, err
}
return personJSON, nil
}
// GetPositions Возвращает данные о должностях с идентификатором {id}
func GetPositions(id string) ([]Positions, error) {
url := v.Get("baseURL") + v["apiURL"][1] + id + v["apiURL"][6]
var personsJSON []Positions
err := json.Unmarshal(response(url), &personsJSON)
if err != nil {
return nil, err
}
return personsJSON, nil
}
// GetIDData возвращает IDData
func GetIDData(id string) (IDData, error) {
url := v.Get("baseURL") + v["apiURL"][0] + id + "/"
var companyJSON IDData
err := json.Unmarshal(response(url), &companyJSON)
if err != nil {
return companyJSON, err
}
return companyJSON, nil
}
// GetFounders Возвращает данные об учредителях компании с идентификатором {id}
func GetFounders(id string) ([]Founders, error) {
url := v.Get("baseURL") + v["apiURL"][0] + id + v["apiURL"][7]
var companyJSON []Founders
err := json.Unmarshal(response(url), &companyJSON)
if err != nil {
return nil, err
}
return companyJSON, nil
}
// GetSearchPerson - поиск человека по ФИО или ИНН
// Порядок ввода ФИО - Фамилия, Имя, Отчество
func GetSearchPerson(data string) ([]PersonOwner, error) {
var url string
switch {
// если это ИНН
case regInn.MatchString(data):
url = v.Get("baseURL") + v["apiURL"][1] + v["apiKEY"][1] + data
// или ФИО
default:
fio := strings.Split(data, " ")
// v["apiKEY"][5] - Ф, [6] - И, [7] - О
switch {
case len(fio) == 1:
url = v.Get("baseURL") + v["apiURL"][1] + v["apiKEY"][5] + fio[0]
case len(fio) == 2:
url = v.Get("baseURL") + v["apiURL"][1] + v["apiKEY"][5] + fio[0] + "&" + v["apiKEY"][6] + fio[1]
case len(fio) == 3:
url = v.Get("baseURL") + v["apiURL"][1] + v["apiKEY"][5] + fio[0] + "&" + v["apiKEY"][6] + fio[1] + "&" + v["apiKEY"][7] + fio[2]
default:
fmt.Printf("Неккоректный ввод")
}
}
var personJSON []PersonOwner
err := json.Unmarshal(response(url), &personJSON)
if err != nil {
return nil, err
}
return personJSON, nil
}
func response(url string) []byte {
resp, err := http.Get(url)
if err != nil {
log.Fatalf("Ошибка http.Get %v", err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalf("Ошибка ioutil.ReadAll %v", err)
}
return body
}