58 lines
1.9 KiB
Dart
58 lines
1.9 KiB
Dart
import 'dart:convert';
|
|
import 'dart:io';
|
|
|
|
import 'package:dart_frog/dart_frog.dart';
|
|
import 'package:new_backend/shrink_ray.dart';
|
|
import 'package:path/path.dart' as path;
|
|
|
|
Future<Response> onRequest(RequestContext context) async {
|
|
switch (context.request.method) {
|
|
case HttpMethod.put:
|
|
case HttpMethod.delete:
|
|
case HttpMethod.head:
|
|
case HttpMethod.options:
|
|
case HttpMethod.patch:
|
|
return Response(statusCode: 404);
|
|
case HttpMethod.post:
|
|
try {
|
|
final reqJson = await context.request.body();
|
|
final data = jsonDecode(reqJson) as Map<String, dynamic>;
|
|
final url = data['url'] as String?;
|
|
if (url == null) {
|
|
return Response(statusCode: 401, body: 'Missing url');
|
|
}
|
|
final res = ShrinkRay.shrinkUrl(url);
|
|
switch (res.status) {
|
|
case Status.ok:
|
|
shrunkUrls[res.content] = url;
|
|
return Response(
|
|
body: jsonEncode(
|
|
{'url': 'http://localhost:8080/u/${res.content}'},
|
|
),
|
|
);
|
|
case Status.error:
|
|
return Response(statusCode: 401, body: res.content);
|
|
}
|
|
} catch (err, st) {
|
|
print(st);
|
|
print(err);
|
|
return Response(statusCode: 500, body: 'Unexpected error occurred');
|
|
}
|
|
case HttpMethod.get:
|
|
// final maybeUrl = shrunkUrls[urlPath];
|
|
// switch (maybeUrl) {
|
|
// case null:
|
|
// return Response(statusCode: 404);
|
|
// default:
|
|
// return Response(statusCode: 308, headers: {'Location': maybeUrl});
|
|
// }
|
|
final file = File(path.join(Directory.current.path, 'public', 'index.html'));
|
|
if (!file.existsSync()) {
|
|
return Response(body: 'Index Not found');
|
|
}
|
|
final indexHtml = file.readAsStringSync();
|
|
|
|
return Response(body: indexHtml, headers: {'Content-Type': 'text/html'});
|
|
}
|
|
}
|