sogou-search-api 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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