Repository navigation
Expand file tree
/
Copy pathapp.py
More file actions
54 lines (46 loc) · 1.4 KB
/
Copy pathapp.py
File metadata and controls
54 lines (46 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from flask import Flask, render_template, request, jsonify
from flask_cors import CORS
import json
import yaml
import toml
import csv
import io
app = Flask(__name__)
CORS(app)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/api/convert', methods=['POST'])
def convert():
try:
data = request.json
input_format = data.get('input_format', 'json')
output_format = data.get('output_format', 'yaml')
content = data.get('content', '')
# Parse input
if input_format == 'json':
parsed = json.loads(content)
elif input_format == 'yaml':
parsed = yaml.safe_load(content)
else:
parsed = json.loads(content) # fallback
# Convert to output
if output_format == 'json':
output = json.dumps(parsed, indent=2)
elif output_format == 'yaml':
output = yaml.dump(parsed, default_flow_style=False)
elif output_format == 'toml':
output = toml.dumps(parsed)
else:
output = json.dumps(parsed, indent=2) # fallback
return jsonify({
'success': True,
'output': output
})
except Exception as e:
return jsonify({
'success': False,
'error': str(e)
}), 400
if __name__ == '__main__':
app.run(debug=True, port=5000)