-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathapi.dart
81 lines (66 loc) · 2.79 KB
/
api.dart
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import 'dart:convert';
import 'package:flutter/widgets.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:http/http.dart' as http;
import 'package:videosdk_flutter_example/utils/toast.dart';
Future<String> fetchToken(BuildContext context) async {
if (!dotenv.isInitialized) {
// Load Environment variables
await dotenv.load(fileName: ".env");
}
final String? _AUTH_URL = dotenv.env['AUTH_URL'];
String? _AUTH_TOKEN = dotenv.env['AUTH_TOKEN'];
if ((_AUTH_TOKEN?.isEmpty ?? true) && (_AUTH_URL?.isEmpty ?? true)) {
showSnackBarMessage(
message: "Please set the environment variables", context: context);
throw Exception("Either AUTH_TOKEN or AUTH_URL is not set in .env file");
}
if ((_AUTH_TOKEN?.isNotEmpty ?? false) && (_AUTH_URL?.isNotEmpty ?? false)) {
showSnackBarMessage(
message: "Please set only one environment variable", context: context);
throw Exception("Either AUTH_TOKEN or AUTH_URL can be set in .env file");
}
if (_AUTH_URL?.isNotEmpty ?? false) {
final Uri getTokenUrl = Uri.parse('$_AUTH_URL/get-token');
final http.Response tokenResponse = await http.get(getTokenUrl);
_AUTH_TOKEN = json.decode(tokenResponse.body)['token'];
}
return _AUTH_TOKEN ?? "";
}
Future<String> createMeeting(String _token) async {
final String? _VIDEOSDK_API_ENDPOINT = dotenv.env['VIDEOSDK_API_ENDPOINT'];
final Uri getMeetingIdUrl = Uri.parse('$_VIDEOSDK_API_ENDPOINT/rooms');
final http.Response meetingIdResponse =
await http.post(getMeetingIdUrl, headers: {
"Authorization": _token,
});
if (meetingIdResponse.statusCode != 200) {
throw Exception(json.decode(meetingIdResponse.body)["error"]);
}
var _meetingID = json.decode(meetingIdResponse.body)['roomId'];
return _meetingID;
}
Future<bool> validateMeeting(String token, String meetingId) async {
final String? _VIDEOSDK_API_ENDPOINT = dotenv.env['VIDEOSDK_API_ENDPOINT'];
final Uri validateMeetingUrl =
Uri.parse('$_VIDEOSDK_API_ENDPOINT/rooms/validate/$meetingId');
final http.Response validateMeetingResponse =
await http.get(validateMeetingUrl, headers: {
"Authorization": token,
});
if (validateMeetingResponse.statusCode != 200) {
throw Exception(json.decode(validateMeetingResponse.body)["error"]);
}
return validateMeetingResponse.statusCode == 200;
}
Future<dynamic> fetchSession(String token, String meetingId) async {
final String? _VIDEOSDK_API_ENDPOINT = dotenv.env['VIDEOSDK_API_ENDPOINT'];
final Uri getMeetingIdUrl =
Uri.parse('$_VIDEOSDK_API_ENDPOINT/sessions?roomId=$meetingId');
final http.Response meetingIdResponse =
await http.get(getMeetingIdUrl, headers: {
"Authorization": token,
});
List<dynamic> sessions = jsonDecode(meetingIdResponse.body)['data'];
return sessions.first;
}