Index: tests/crowdin_mock_api.py |
=================================================================== |
--- a/tests/crowdin_mock_api.py |
+++ b/tests/crowdin_mock_api.py |
@@ -1,97 +1,33 @@ |
+import os |
+ |
from flask import Flask, send_from_directory, jsonify, request |
-app = Flask(__name__) |
-app.request_log = [] |
+app = Flask('mock_api') |
@app.before_request |
def log_request_info(): |
- log = (request.url, str(request.get_data())) |
- app.request_log.append(log) |
+ app.request_log.append((request.url, str(request.get_data()))) |
@app.route('/api/project/test/info', methods=['GET']) |
def info(): |
- return jsonify( |
- { |
- 'languages': [ |
- { |
- 'name': 'German', |
- 'code': 'de', |
- 'can_translate': 1, |
- 'can_approve': 1, |
+ return jsonify(app.config['info']) |
- }, |
- { |
- 'name': 'English', |
- 'code': 'en', |
- 'can_translate': 1, |
- 'can_approve': 1, |
- |
- }, |
- ], |
- 'files': [ |
- { |
- 'node_type': 'directory', |
- 'name': 'en', |
- 'files': [ |
- { |
- 'node_type': 'file', |
- 'name': 'translate.json', |
- 'created': '2016-09-26 08:30:07', |
- 'last_updated': '2016-09-26 08:30:08', |
- 'last_accessed': None, |
- 'last_revision': '1' |
- }, |
- ] |
- }, |
- { |
- 'node_type': 'directory', |
- 'name': 'de', |
- 'files': [ |
- { |
- 'node_type': 'file', |
- 'name': 'translate.json', |
- 'created': '2016-09-26 08:30:07', |
- 'last_updated': '2016-09-26 08:30:08', |
- 'last_accessed': None, |
- 'last_revision': '1' |
- } |
- ] |
- } |
- ] |
- } |
- ) |
+@app.route('/api/project/test/edit-project', methods=['POST']) |
+def edit(): |
+ return jsonify() |
@app.route('/api/project/test/supported-languages', methods=['GET']) |
def supported_langs(): |
- return jsonify( |
- [ |
- { |
- 'name': 'German', |
- 'crowdin_code': 'de', |
- 'editor_code': 'de', |
- 'iso_639_1': 'de', |
- 'iso_639_3': 'deu', |
- 'locale': 'de-DE' |
- }, |
- { |
- 'name': 'English', |
- 'crowdin_code': 'en', |
- 'editor_code': 'en', |
- 'iso_639_1': 'en', |
- 'iso_639_3': 'eng', |
- 'locale': 'en-US' |
- }, |
- ] |
- ) |
+ return jsonify(app.config['languages']) |
@app.route('/api/project/test/add-file', methods=['POST']) |
def add_file(): |
app.string = request.get_data() |
return jsonify() |
@@ -113,8 +49,36 @@ |
@app.route('/api/project/test/export', methods=['GET']) |
def export(): |
return jsonify({'success': {'status': 'skipped'}}) |
@app.route('/api/project/test/download/all.zip', methods=['GET']) |
def get_zip(): |
return send_from_directory('', 'all.zip') |
+ |
+ |
+def mockapi(config): |
+ app.request_log = [] |
+ app.config['info'] = config.info |
+ app.config['languages'] = config.languages |
+ return app |
+ |
+ |
+class CrowdinConfig: |
+ def __init__(self, locales_root): |
+ self.info = {'files': [], 'languages': []} |
+ self.languages = [] |
+ self.load(locales_root) |
+ |
+ def load(self, filepath): |
+ for root, locales, files in os.walk(filepath): |
Jon Sonesen
2018/02/09 23:08:01
There are some assumptions that are made here, and
|
+ for locale in locales: |
+ localenode = {'name': locale, 'node_type': 'directory', |
+ 'files': []} |
+ self.info['languages'].append({'code': locale, |
+ 'can_approve': 1, |
+ 'can_translate': 1}) |
+ self.languages.append({'crowdin_code': locale}) |
+ for translations in os.listdir(os.path.join(root, locale)): |
+ filenode = {'name': translations, 'node_type': 'file'} |
+ localenode['files'].append(filenode) |
+ self.info['files'].append(localenode) |