Skip to content

Commit 375c356

Browse files
committed
fixed apertium#206: added ListPairHandler to handle /listPairs and updated ListHandler for /list
1 parent 2ac34ec commit 375c356

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

apertium_apy/apy.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
GenerateHandler,
4545
IdentifyLangHandler,
4646
ListHandler,
47+
ListPairHandler,
4748
ListLanguageNamesHandler,
4849
PerWordHandler,
4950
PipeDebugHandler,
@@ -265,7 +266,7 @@ def setup_application(args):
265266
handlers = [
266267
(r'/', RootHandler),
267268
(r'/list', ListHandler),
268-
(r'/listPairs', ListHandler),
269+
(r'/listPairs', ListPairHandler),
269270
(r'/stats', StatsHandler),
270271
(r'/pairprefs', PairPrefsHandler),
271272
(r'/translate', TranslateHandler),

apertium_apy/handlers/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from apertium_apy.handlers.identify_lang import IdentifyLangHandler # noqa: F401
66
from apertium_apy.handlers.list_language_names import ListLanguageNamesHandler # noqa: F401
77
from apertium_apy.handlers.list_modes import ListHandler # noqa: F401
8+
from apertium_apy.handlers.list_modes import ListPairHandler # noqa: F401
89
from apertium_apy.handlers.per_word import PerWordHandler # noqa: F401
910
from apertium_apy.handlers.pipe_debug import PipeDebugHandler # noqa: F401
1011
from apertium_apy.handlers.speller import SpellerHandler # noqa: F401

apertium_apy/handlers/list_modes.py

+26-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
class ListHandler(BaseHandler):
88
@tornado.gen.coroutine
99
def get(self):
10-
query = self.get_argument('q', default='pairs')
10+
query = self.get_argument('q', default='all')
1111

12-
if query == 'pairs':
12+
if query == 'all':
1313
src = self.get_argument('src', default=None)
1414
response_data = []
1515
if src:
@@ -20,7 +20,15 @@ def get(self):
2020
response_data.append({'sourceLanguage': l1, 'targetLanguage': l2})
2121
if self.get_arguments('include_deprecated_codes'):
2222
response_data.append({'sourceLanguage': to_alpha2_code(l1), 'targetLanguage': to_alpha2_code(l2)})
23-
self.send_response({'responseData': response_data, 'responseDetails': None, 'responseStatus': 200})
23+
response = {
24+
'responseData': response_data,
25+
'generators': {pair: modename for (pair, (path, modename)) in self.generators.items()},
26+
'taggers': {pair: modename for (pair, (path, modename)) in self.taggers.items()},
27+
'spellers': {lang_src: modename for (lang_src, (path, modename)) in self.spellers.items()},
28+
'responseDetails': None,
29+
'responseStatus': 200
30+
}
31+
self.send_response(response)
2432
elif query == 'analyzers' or query == 'analysers':
2533
self.send_response({pair: modename for (pair, (path, modename)) in self.analyzers.items()})
2634
elif query == 'generators':
@@ -31,3 +39,18 @@ def get(self):
3139
self.send_response({lang_src: modename for (lang_src, (path, modename)) in self.spellers.items()})
3240
else:
3341
self.send_error(400, explanation='Expecting q argument to be one of analysers, generators, spellers, disambiguators, or pairs')
42+
43+
class ListPairHandler(BaseHandler):
44+
@tornado.gen.coroutine
45+
def get(self):
46+
src = self.get_argument('src', default=None)
47+
response_data = []
48+
if src:
49+
pairs = [(src, trg) for trg in self.paths[src]]
50+
else:
51+
pairs = [(p[0], p[1]) for par in self.pairs for p in [par.split('-')]]
52+
for (l1, l2) in pairs:
53+
response_data.append({'sourceLanguage': l1, 'targetLanguage': l2})
54+
if self.get_arguments('include_deprecated_codes'):
55+
response_data.append({'sourceLanguage': to_alpha2_code(l1), 'targetLanguage': to_alpha2_code(l2)})
56+
self.send_response({'responseData': response_data, 'responseDetails': None, 'responseStatus': 200})

0 commit comments

Comments
 (0)