sogou-search-api 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,59 @@
1
+ require 'savon'
2
+ require_relative '../options'
3
+ require_relative 'api_command'
4
+
5
+ module Sogou
6
+ module Search
7
+ module Api
8
+ module Core
9
+ class BaseService
10
+ attr_accessor :authorization
11
+ attr_accessor :client_options
12
+
13
+ def initialize(service)
14
+ @url = "http://#{service_host}/sem/sms/v1/#{service}?wsdl"
15
+ @client_options = ClientOptions.default.dup
16
+ end
17
+
18
+ protected
19
+
20
+ def make_command(operation, params: {}, options: {})
21
+ ApiCommand.new(operation).tap do |command|
22
+ command.params = params unless params.empty?
23
+ command.options = options
24
+ end
25
+ end
26
+
27
+ def execute_command(command, &block)
28
+ command.execute(client, &block)
29
+ end
30
+
31
+ def client
32
+ @client ||= Savon::Client.new do |savon|
33
+ savon.wsdl(@url)
34
+ savon.pretty_print_xml(true)
35
+ savon.namespaces('xmlns:v1' => 'http://api.sogou.com/sem/common/v1')
36
+ savon.env_namespace(:soapenv)
37
+ savon.namespace_identifier(:v11)
38
+ savon.convert_response_tags_to(lambda { |key| key.snakecase })
39
+
40
+ soap_header = {}
41
+ authorization.apply(soap_header) if authorization
42
+ savon.soap_header(soap_header)
43
+
44
+ savon.proxy(client_options.proxy_url) if client_options.proxy_url
45
+ savon.open_timeout(client_options.open_timeout_sec) if client_options.open_timeout_sec
46
+ savon.read_timeout(client_options.read_timeout_sec) if client_options.read_timeout_sec
47
+ end
48
+ end
49
+
50
+ private
51
+
52
+ def service_host
53
+ "api.agent.sogou.com#{ENV.fetch('ENV', 'development') == 'development' ? ':8080' : ''}"
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,15 @@
1
+ require 'sogou/search/api'
2
+
3
+ module Sogou
4
+ module Search
5
+ module Api
6
+ module Core
7
+ module Logging
8
+ def logger
9
+ Sogou::Search::Api.logger
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,429 @@
1
+ module Sogou
2
+ module Search
3
+ module Api
4
+ module Core
5
+ module Regions
6
+ REGIONS_CODE = {
7
+ 1 => 'All regions',
8
+ 1000 => 'Beijing',
9
+ 2000 => 'Shanghai',
10
+ 3000 => 'Tianjin',
11
+ 4000 => 'Guangdong',
12
+ 5000 => 'Fujian',
13
+ 8000 => 'Hainan',
14
+ 9000 => 'Anhui',
15
+ 10000 => 'Guizhou',
16
+ 11000 => 'Gansu',
17
+ 12000 => 'Guangxi',
18
+ 13000 => 'Hebei',
19
+ 14000 => 'Henan',
20
+ 15000 => 'Heilongjiang',
21
+ 16000 => 'Hubei',
22
+ 17000 => 'Hunan',
23
+ 18000 => 'Jilin',
24
+ 19000 => 'Jiangsu',
25
+ 20000 => 'Jiangxi',
26
+ 21000 => 'Liaoning',
27
+ 22000 => 'Inner Mongolia',
28
+ 23000 => 'Ningxia',
29
+ 24000 => 'Qinghai',
30
+ 25000 => 'Shandong',
31
+ 26000 => 'Shanxi',
32
+ 27000 => 'Shaanxi',
33
+ 28000 => 'Sichuan',
34
+ 29000 => 'Tibet',
35
+ 30000 => 'Xinjiang',
36
+ 31000 => 'Yunnan',
37
+ 32000 => 'Zhejiang',
38
+ 33000 => 'Chongqing',
39
+ 34000 => 'Hong Kong, Maucao and other regions',
40
+ 34100 => 'Hong Kong',
41
+ 34200 => 'Taiwan',
42
+ 34300 => 'Macao',
43
+ 34400 => 'overseas',
44
+ 35000 => 'No region',
45
+ 4085 => 'Chaozhou City',
46
+ 4116 => 'Dongguan city',
47
+ 4090 => 'Foshan City',
48
+ 4084 => 'Guangzhou City',
49
+ 4115 => 'Heyuan City',
50
+ 4117 => 'Huizhou',
51
+ 4082 => 'Jiangmen',
52
+ 4083 => 'Jieyang City',
53
+ 4086 => 'Maoming City',
54
+ 4088 => 'Meizhou City',
55
+ 4089 => 'Qingyuan City',
56
+ 4091 => 'Shan Tou',
57
+ 4092 => 'Shanwei City',
58
+ 4094 => 'Shaoguan City',
59
+ 4093 => 'Shenzhen',
60
+ 4109 => 'Yangjiang City',
61
+ 4111 => 'Yunfu City',
62
+ 4110 => 'Zhangjiang City',
63
+ 4114 => 'Zhaoqing',
64
+ 4112 => 'Zhongshan City',
65
+ 4113 => 'Zhuhai city',
66
+ 5081 => 'Fuzhou',
67
+ 5050 => 'Longyan City',
68
+ 5049 => 'Nanping City',
69
+ 5051 => 'Ningde City',
70
+ 5048 => 'Putian City',
71
+ 5052 => 'Quanzhou',
72
+ 5066 => 'Sanming City',
73
+ 5070 => 'Xiamen City',
74
+ 5080 => 'Zhangzhou City',
75
+ 8493 => 'Baisha Li Autonomous County',
76
+ 8488 => 'Baoting Li and Miao Autonomous County',
77
+ 8492 => 'Changjiang Li Autonomous County',
78
+ 8487 => 'Chengmai County',
79
+ 8303 => 'Pizhou City',
80
+ 8484 => 'Ding\'an County',
81
+ 8296 => 'Oriental City',
82
+ 8302 => 'Haikou',
83
+ 8490 => 'Le Dong Li Autonomous County',
84
+ 8491 => 'Lingao County',
85
+ 8486 => 'Lingshui Li Autonomous County',
86
+ 8297 => 'Qionghai City',
87
+ 8489 => 'Joan Li and Miao Autonomous County',
88
+ 8298 => 'Sanya City',
89
+ 8295 => 'Sansha City',
90
+ 8485 => 'Tunchang County',
91
+ 8301 => 'Wanning City',
92
+ 8299 => 'Wenchang City',
93
+ 8300 => 'Wuzhishan City',
94
+ 9128 => 'Anqing City',
95
+ 9141 => 'Bengbu',
96
+ 9143 => 'Bozhou City',
97
+ 9130 => 'Chizhou city',
98
+ 9131 => 'Chuzhou City',
99
+ 9140 => 'Fuyang City',
100
+ 9142 => 'Hefei',
101
+ 9127 => 'Huaibei City',
102
+ 9133 => 'Huainan City',
103
+ 9132 => 'Huangshan City',
104
+ 9135 => 'Lu\'an City',
105
+ 9134 => 'Ma\'anshan City',
106
+ 9138 => 'Tongling City',
107
+ 9139 => 'Wuhu',
108
+ 9137 => 'Suzhou City',
109
+ 9136 => 'Declare the city',
110
+ 10119 => 'Anshun City',
111
+ 10124 => 'Bijie City',
112
+ 10118 => 'Guiyang City',
113
+ 10120 => 'Liupanshui City',
114
+ 10122 => 'Qiandongnan Miao and Dong Autonomous Prefecture',
115
+ 10121 => 'Qiannan Buyi and Miao Autonomous Prefecture',
116
+ 10123 => 'Southwest Guizhou Buyi and Miao Autonomous Prefecture',
117
+ 10125 => 'Tongren City',
118
+ 10126 => 'Zunyi City',
119
+ 11267 => 'Silver City',
120
+ 11263 => 'Dingxi City',
121
+ 11477 => 'Gannan Tibetan Autonomous Prefecture',
122
+ 11257 => 'Jiayuguan City',
123
+ 11256 => 'Jinchang City',
124
+ 11255 => 'Jiuquan City',
125
+ 11258 => 'Lan\'Zhou City',
126
+ 11261 => 'Linxia Hui Autonomous Prefecture',
127
+ 11259 => 'Longnan City',
128
+ 11260 => 'Pingliang City',
129
+ 11262 => 'Qingyang City',
130
+ 11265 => 'Tianshui City',
131
+ 11264 => 'Wuwei City',
132
+ 11266 => 'Zhangye City',
133
+ 12108 => 'Baise City',
134
+ 12104 => 'Beihai City',
135
+ 12478 => 'Chongzuo City',
136
+ 12098 => 'Fangchenggang City',
137
+ 12096 => 'Guigang City',
138
+ 12095 => 'Guilin',
139
+ 12106 => 'Hechi City',
140
+ 12107 => 'Hezhou City',
141
+ 12100 => 'Laibin city',
142
+ 12101 => 'Liuzhou City',
143
+ 12099 => 'NanNing City',
144
+ 12102 => 'Qinzhou City',
145
+ 12103 => 'Wuzhou City',
146
+ 12105 => 'Yulin City',
147
+ 13304 => 'Baoding',
148
+ 13305 => 'Cangzhou City',
149
+ 13306 => 'Chengde City',
150
+ 13330 => 'Handan',
151
+ 13332 => 'Hengshui City',
152
+ 13307 => 'Langfang City',
153
+ 13325 => 'Qinhuangdao City',
154
+ 13327 => 'Shijiazhuang City',
155
+ 13329 => 'Tangshan City',
156
+ 13326 => 'Xingtai city',
157
+ 13331 => 'Zhangjiakou City',
158
+ 14309 => 'Anyang City',
159
+ 14323 => 'Hebi City',
160
+ 14476 => 'Jiyuan City',
161
+ 14308 => 'Jiaozuo City',
162
+ 14310 => 'Kaifeng City',
163
+ 14311 => 'Luoyang City',
164
+ 14312 => 'Luohe City',
165
+ 14315 => 'Nanyang City',
166
+ 14313 => 'Pingdingshan City',
167
+ 14316 => 'Puyang City',
168
+ 14321 => 'Sanmenxia City',
169
+ 14320 => 'Shangqiu City',
170
+ 14317 => 'Xinxiang City',
171
+ 14318 => 'Xinyang City',
172
+ 14319 => 'Xuchang City',
173
+ 14322 => 'Zhengzhou City',
174
+ 14324 => 'Zhoukou City',
175
+ 14314 => 'Zhumadian City',
176
+ 15342 => 'Daqing City',
177
+ 15343 => 'Daxinganling area',
178
+ 15335 => 'Harbin City',
179
+ 15344 => 'Hegang City',
180
+ 15345 => 'Heihe city',
181
+ 15333 => 'Jixi City',
182
+ 15334 => 'Jiamusi City',
183
+ 15336 => 'Mudanjiang City',
184
+ 15338 => 'Qitaihe City',
185
+ 15337 => 'Qiqihar City',
186
+ 15340 => 'Shuangyashan City',
187
+ 15339 => 'Suihua City',
188
+ 15341 => 'Yichun City',
189
+ 16377 => 'Ezhou City',
190
+ 16366 => 'Enshi Tujia and Miao Autonomous Prefecture',
191
+ 16349 => 'Huanggang City',
192
+ 16348 => 'Yellowstone City',
193
+ 16346 => 'Jingmen City',
194
+ 16347 => 'Jingzhou City',
195
+ 16364 => 'Qianjiang City',
196
+ 16368 => 'Shennongjia forest area',
197
+ 16369 => 'Shiyan City',
198
+ 16367 => 'Suizhou City',
199
+ 16373 => 'Tianmen City',
200
+ 16371 => 'Wuhan',
201
+ 16372 => 'Xiantao City',
202
+ 16375 => 'Xianning City',
203
+ 16370 => 'Xiangyang City',
204
+ 16365 => 'Xiaogan City',
205
+ 16376 => 'Yichang City',
206
+ 17351 => 'Changde City',
207
+ 17353 => 'Chenzhou City',
208
+ 17360 => 'Hengyang City',
209
+ 17350 => 'Huaihua City',
210
+ 17354 => 'Loudi City',
211
+ 17355 => 'Shaoyang City',
212
+ 17356 => 'Xiangtan City',
213
+ 17357 => 'Xiangxi Tujia and Miao Autonomous Prefecture',
214
+ 17359 => 'Yiyang City',
215
+ 17362 => 'Yongzhou City',
216
+ 17361 => 'Yueyang City',
217
+ 17358 => 'Zhangjiajie City',
218
+ 17352 => 'Changsha City',
219
+ 17363 => 'Zhuzhou City',
220
+ 18039 => 'White City',
221
+ 18042 => 'Hakusan City',
222
+ 18038 => 'Jilin City',
223
+ 18041 => 'Liaoyuan City',
224
+ 18043 => 'Siping City',
225
+ 18044 => 'Matsubara City',
226
+ 18045 => 'Tonghua City',
227
+ 18047 => 'Yanbian Korean Autonomous Prefecture',
228
+ 18040 => 'Changchun City',
229
+ 19054 => 'Changzhou City',
230
+ 19053 => 'Huaian city',
231
+ 19057 => 'Lianyungang City',
232
+ 19055 => 'Nanjing',
233
+ 19056 => 'Nantong city',
234
+ 19059 => 'Suzhou City',
235
+ 19061 => 'Taizhou City',
236
+ 19062 => 'Wuxi City',
237
+ 19060 => 'Suqian City',
238
+ 19058 => 'Xuzhou',
239
+ 19063 => 'Yancheng',
240
+ 19064 => 'Yangzhou',
241
+ 19065 => 'Zhenjiang',
242
+ 20078 => 'Fuzhou City',
243
+ 20077 => 'Ganzhou City',
244
+ 20068 => 'Ji\'an City',
245
+ 20069 => 'Jingdezhen City',
246
+ 20067 => 'Jiujiang City',
247
+ 20072 => 'Nanchang City',
248
+ 20071 => 'Pingxiang City',
249
+ 20074 => 'Shangrao City',
250
+ 20073 => 'Xinyu City',
251
+ 20075 => 'Yichun City',
252
+ 20076 => 'Yingtan City',
253
+ 21151 => 'Anshan City',
254
+ 21145 => 'Benxi City',
255
+ 21147 => 'Chaoyang City',
256
+ 21155 => 'Dalian City',
257
+ 21144 => 'Dandong City',
258
+ 21152 => 'Fushun City',
259
+ 21150 => 'Fuxin City',
260
+ 21157 => 'Huludao City',
261
+ 21146 => 'Jinzhou City',
262
+ 21148 => 'Liaoyang City',
263
+ 21149 => 'Panjin City',
264
+ 21153 => 'Shenyang city',
265
+ 21154 => 'Tieling City',
266
+ 21156 => 'Yingkou City',
267
+ 22159 => 'Alxa League',
268
+ 22162 => 'Bayannur City',
269
+ 22169 => 'Baotou City',
270
+ 22158 => 'Chifeng City',
271
+ 22168 => 'Ordos City',
272
+ 22167 => 'Hohhot',
273
+ 22166 => 'Hulunbeir',
274
+ 22161 => 'Tongliao City',
275
+ 22164 => 'Wuhai City',
276
+ 22163 => 'Wulanchabu',
277
+ 22165 => 'Xilin Gol League',
278
+ 22160 => 'Hing UNITA',
279
+ 23170 => 'Guyuan City',
280
+ 23171 => 'Shizuishan City',
281
+ 23172 => 'Wuzhong City',
282
+ 23174 => 'Yinchuan City',
283
+ 23173 => 'Zhongwei City',
284
+ 24496 => 'Guoluo Tibetan Autonomous Prefecture',
285
+ 24494 => 'Haibei Tibetan Autonomous Prefecture',
286
+ 24176 => 'Haidong area',
287
+ 24479 => 'Hainan Tibetan Autonomous Prefecture',
288
+ 24177 => 'Haixi Mongolian and Tibetan Autonomous Prefecture',
289
+ 24495 => 'Huangnan Tibetan Autonomous Prefecture',
290
+ 24175 => 'Xining City',
291
+ 24178 => 'Yushu Tibetan Autonomous Prefecture',
292
+ 25223 => 'Binzhou City',
293
+ 25200 => 'Texas City',
294
+ 25220 => 'Dongying City',
295
+ 25222 => 'Heze City',
296
+ 25196 => 'Jinan City',
297
+ 25197 => 'Jining City',
298
+ 25198 => 'Laiwu City',
299
+ 25199 => 'Liaocheng',
300
+ 25201 => 'Linyi City',
301
+ 25202 => 'Qingdao City',
302
+ 25203 => 'Rizhao City',
303
+ 25208 => 'Tai\'an City',
304
+ 25218 => 'Weihai',
305
+ 25204 => 'Weifang',
306
+ 25219 => 'City of Yantai',
307
+ 25221 => 'Zaozhuang City',
308
+ 25207 => 'Zibo City',
309
+ 26217 => 'Datong City',
310
+ 26205 => 'Jincheng City',
311
+ 26206 => 'Jinzhong City',
312
+ 26211 => 'Linfen City',
313
+ 26210 => 'Luliang City',
314
+ 26213 => 'Shuozhou City',
315
+ 26214 => 'Taiyuan',
316
+ 26212 => 'Xinzhou City',
317
+ 26215 => 'Yangquan City',
318
+ 26216 => 'Yuncheng City',
319
+ 26209 => 'Changzhi City',
320
+ 27240 => 'Ankang City',
321
+ 27239 => 'Baoji City',
322
+ 27248 => 'Hanzhong City',
323
+ 27241 => 'Shangluo City',
324
+ 27242 => 'Tongchuan City',
325
+ 27243 => 'Weinan City',
326
+ 27244 => 'Xi\'an',
327
+ 27245 => 'Xianyang City',
328
+ 27246 => 'Yan\'an City',
329
+ 27249 => 'Yulin City',
330
+ 28252 => 'Aba Tibetan and Qiang Autonomous Prefecture',
331
+ 28247 => 'Bazhong city',
332
+ 28226 => 'Chengdu',
333
+ 28250 => 'Dazhou',
334
+ 28232 => 'Deyang City',
335
+ 28236 => 'Ganzi Tibetan Autonomous Prefecture',
336
+ 28224 => 'Guang\'an City',
337
+ 28225 => 'Guangyuan City',
338
+ 28233 => 'Leshan',
339
+ 28228 => 'Liangshan Yi Autonomous Prefecture',
340
+ 28234 => 'Luzhou City',
341
+ 28227 => 'Meishan City',
342
+ 28229 => 'Mianyang City',
343
+ 28231 => 'Nanchong City',
344
+ 28235 => 'Neijiang City',
345
+ 28230 => 'Panzhihua City',
346
+ 28237 => 'Suining City',
347
+ 28251 => 'Ya\'an city',
348
+ 28254 => 'Yibin City',
349
+ 28238 => 'Ziyang City',
350
+ 28253 => 'Zigong City',
351
+ 29498 => 'Ali area',
352
+ 29480 => 'Changdu area',
353
+ 29269 => 'Lhasa city',
354
+ 29270 => 'Nyingchi area',
355
+ 29268 => 'Nagqu area',
356
+ 29271 => 'Shigatse area',
357
+ 29497 => 'Shannan area',
358
+ 30185 => 'Aksu area',
359
+ 30499 => 'Alar City',
360
+ 30182 => 'Altai region',
361
+ 30191 => 'Bayingolin Mongolia Autonomous Prefecture',
362
+ 30180 => 'Bortala Mongol Autonomous Prefecture',
363
+ 30181 => 'Changji Hui Autonomous Prefecture',
364
+ 30179 => 'Hami area',
365
+ 30195 => 'Hotan area',
366
+ 30183 => 'Kashi area',
367
+ 30184 => 'Karamay City',
368
+ 30186 => 'Kizilsu Kirgiz Autonomous Prefecture',
369
+ 30187 => 'Shihezi City',
370
+ 30188 => 'Tacheng area',
371
+ 30500 => 'Tumkuk city',
372
+ 30190 => 'Turpan area',
373
+ 30192 => 'Urumqi',
374
+ 30189 => 'Five Drainage City',
375
+ 30193 => 'Ili Kazak Autonomous Prefecture',
376
+ 31289 => 'Baoshan City',
377
+ 31283 => 'Chuxiong Yi Autonomous Prefecture',
378
+ 31292 => 'Dali Bai Autonomous Prefecture',
379
+ 31286 => 'Dehong Dai Jingpo Autonomous Prefecture',
380
+ 31482 => 'Diqing Tibetan Autonomous Prefecture',
381
+ 31293 => 'Honghe Hani and Yi Autonomous Prefecture',
382
+ 31284 => 'Kunming',
383
+ 31285 => 'Lijiang City',
384
+ 31287 => 'Lincang City',
385
+ 31481 => 'Nujiang Lisu Autonomous Prefecture',
386
+ 31290 => 'Pu\'er City',
387
+ 31288 => 'Qujing City',
388
+ 31291 => 'Wenshan Zhuang and Miao Autonomous Prefecture',
389
+ 31483 => 'Xishuangbanna Dai Autonomous Prefecture',
390
+ 31295 => 'Yuxi City',
391
+ 31294 => 'Zhaotong City',
392
+ 32280 => 'Hangzhou',
393
+ 32282 => 'Huzhou',
394
+ 32273 => 'Jiaxing City',
395
+ 32272 => 'Jinhua City',
396
+ 32275 => 'Lishui City',
397
+ 32276 => 'Ningbo City',
398
+ 32274 => 'Quzhou City',
399
+ 32277 => 'Shaoxing City',
400
+ 32279 => 'Taizhou',
401
+ 32278 => 'Wenzhou city',
402
+ 32281 => 'Zhoushan City'
403
+ }
404
+
405
+ #
406
+ # API document (translated by Google translate) says "regions" value
407
+ # can be either Interger[] or Integer from
408
+ # http://apihome.sogou.com/document/ss/doc9-1.jsp and
409
+ # http://apihome.sogou.com/document/ss/doc9-2.jsp,
410
+ # But "regions" value is returned always as integer value.
411
+ # Unless we find the case for integer[], below method will work.
412
+ #
413
+ def convert_regions_to_string(results)
414
+ if results.is_a?(Hash)
415
+ region = results['regions']
416
+ if region
417
+ results['regions'] = REGIONS_CODE.fetch(region.to_i, region)
418
+ end
419
+ elsif results.is_a?(Array)
420
+ results = results.map { |r| convert_regions_to_string(r) }
421
+ end
422
+
423
+ results
424
+ end
425
+ end
426
+ end
427
+ end
428
+ end
429
+ end