|
18 | 18 |
|
19 | 19 | from flask import Flask, Response, jsonify, render_template, request |
20 | 20 |
|
21 | | -from nested_diff import Differ, Patcher, TYPE_HANDLERS |
| 21 | +from nested_diff import Differ, Patcher |
22 | 22 | from nested_diff.formatters import HtmlFormatter, TextFormatter, TermFormatter |
23 | 23 | from nested_diff.handlers import TextHandler |
24 | 24 |
|
@@ -74,26 +74,23 @@ def health_check(): |
74 | 74 | @app.route('/api/v1/diff', methods=['POST']) |
75 | 75 | def diff(): |
76 | 76 | try: |
77 | | - diff_opts = request.json.get('diff_opts', {'U': False}) |
78 | | - except AttributeError: |
79 | | - return Response('Object expected', status=400) |
| 77 | + old = request.json.get('a', None) |
| 78 | + new = request.json.get('b', None) |
| 79 | + except Exception: |
| 80 | + return Response('Bad request', status=400) |
80 | 81 |
|
81 | | - extra_handlers = [] |
| 82 | + try: |
| 83 | + diff_opts = request.json.get('diff_opts', {'U': False}) |
| 84 | + text_diff_ctx = diff_opts.pop('text_diff_ctx', -1) |
82 | 85 |
|
83 | | - text_diff_ctx = diff_opts.pop('text_diff_ctx', -1) |
84 | | - if text_diff_ctx >= 0: |
85 | | - extra_handlers.append(TextHandler(context=text_diff_ctx)) |
| 86 | + differ = Differ(**diff_opts) |
86 | 87 |
|
87 | | - try: |
88 | | - _, diff = Differ( |
89 | | - handlers=TYPE_HANDLERS + tuple(extra_handlers), |
90 | | - **diff_opts, |
91 | | - ).diff( |
92 | | - request.json.get('a', None), |
93 | | - request.json.get('b', None), |
94 | | - ) |
| 88 | + if text_diff_ctx >= 0: |
| 89 | + differ.set_handler(TextHandler(context=text_diff_ctx)) |
95 | 90 | except Exception: |
96 | | - return Response('Incorrect options', status=400) |
| 91 | + return Response('Incorrect diff options', status=400) |
| 92 | + |
| 93 | + _, diff = differ.diff(old, new) |
97 | 94 |
|
98 | 95 | ofmt = request.json.get('ofmt', 'json') |
99 | 96 | if ofmt == 'json': |
|
0 commit comments