csai_sdk 0.4.0
csai_sdk: ^0.4.0 copied to clipboard
Client-Side Ad Insertion (CSAI) SDK for Flutter with VAST 4.0 support, HLS/MPEG-DASH streaming, and seamless ad insertion.
example/lib/main.dart
/// ๐ฏ MostMedia CS SDK - เธเธเธชเธญเธเธเนเธงเธข Credentials เธเธตเนเธเธนเธเธเนเธญเธ
///
/// Repository: https://sdk-dai.mmcore.net/repository/maven
/// Username: dsc
/// Password: p7vQRa8hF
import 'package:http/http.dart' as http;
import 'dart:convert';
class MostMediaSDKTest {
static const String REPO_URL = 'https://sdk-dai.mmcore.net/repository/maven';
static const String USERNAME = 'dsc';
static const String PASSWORD = 'p7vQRa8hF';
/// ๐ Test 1: เธเธเธชเธญเธเธชเธฒเธกเธฒเธฃเธเนเธเนเธฒเธเธถเธ Repository เนเธเนเนเธซเธก
static Future<bool> testRepositoryAccess() async {
try {
print('\n๐ฆ Test 1: เธเธฃเธงเธเธชเธญเธ Repository Access');
print('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
print('URL: $REPO_URL');
final credentials = base64Encode(utf8.encode('$USERNAME:$PASSWORD'));
final headers = {
'Authorization': 'Basic $credentials',
};
final response = await http.get(
Uri.parse(REPO_URL),
headers: headers,
).timeout(Duration(seconds: 10));
print('Status: ${response.statusCode}');
if (response.statusCode == 200 || response.statusCode == 301 || response.statusCode == 302) {
print('โ
Repository accessible!');
return true;
} else {
print('โ Error: ${response.statusCode}');
print('Body: ${response.body.substring(0, 200)}...');
return false;
}
} catch (e) {
print('โ Error: $e');
return false;
}
}
/// ๐ Test 2: เธเนเธเธซเธฒ csai_sdk artifact
static Future<bool> findCsaiSdk() async {
try {
print('\n๐ฆ Test 2: เธเนเธเธซเธฒ csai_sdk Artifact');
print('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
final credentials = base64Encode(utf8.encode('$USERNAME:$PASSWORD'));
final headers = {
'Authorization': 'Basic $credentials',
};
// เธฅเธญเธเธเนเธเธซเธฒเนเธเนเธเนเธฃเธเธเธญเธฃเธตเน repository
final paths = [
'/content/repositories/releases/com/mostmedia/',
'/content/repositories/releases/com/mostmedia/csai_sdk/',
'/content/repositories/releases/',
'/content/repositories/public/com/mostmedia/',
];
for (String path in paths) {
print('๐ เธฅเธญเธเนเธชเนเธเธเธฒเธ: $path');
try {
final response = await http.get(
Uri.parse('$REPO_URL$path'),
headers: headers,
).timeout(Duration(seconds: 5));
print(' Status: ${response.statusCode}');
if (response.statusCode == 200) {
print(' โ
เธเธเนเธชเนเธเธเธฒเธ!');
print(' Response snippet: ${response.body.substring(0, 300)}...\n');
return true;
}
} catch (e) {
print(' Error: $e\n');
continue;
}
}
print('โ เนเธกเนเธเธ artifact');
return false;
} catch (e) {
print('โ Error: $e');
return false;
}
}
/// ๐ Test 3: เธเนเธเธซเธฒ CSAI Service Core Endpoint
static Future<Map<String, dynamic>?> findCsaiEndpoint() async {
try {
print('\n๐ Test 3: เธเนเธเธซเธฒ CSAI Service Core Endpoint');
print('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
// เธฅเธญเธเนเธชเนเธเธเธฒเธ API เธเธฑเนเธงเนเธ
final possibleUrls = [
'https://mmcore.net/api/csai/generateAdRequest',
'https://api.mmcore.net/csai/request',
'https://mmcore.net/csai/request',
'https://mmcore.net/adserver',
'https://csai.mmcore.net/request',
'https://mmcore.net/api/v1/ads',
];
final credentials = base64Encode(utf8.encode('$USERNAME:$PASSWORD'));
final headers = {
'Authorization': 'Basic $credentials',
'Content-Type': 'application/json',
};
for (String url in possibleUrls) {
print('๐ เธฅเธญเธเธเธตเน: $url');
try {
final testData = {
'deviceId': 'test_device',
'operatorId': 'test_operator',
'duration': 60,
};
final response = await http.post(
Uri.parse(url),
headers: headers,
body: jsonEncode(testData),
).timeout(Duration(seconds: 5));
print(' Status: ${response.statusCode}');
if (response.statusCode == 200 || response.statusCode == 201) {
print(' โ
Response received!');
print(' Body: ${response.body.substring(0, 300)}...\n');
return {'url': url, 'status': response.statusCode};
}
} catch (e) {
print(' Error: $e\n');
continue;
}
}
print('โ เนเธกเนเธเธ endpoint');
return null;
} catch (e) {
print('โ Error: $e');
return null;
}
}
/// ๐ Test 4: เธเธฃเธงเธเธชเธญเธ SDK Configuration
static Future<void> testSdkConfiguration() async {
try {
print('\nโ๏ธ Test 4: เธเธฃเธงเธเธชเธญเธ SDK Configuration');
print('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
print('Repository URL: $REPO_URL');
print('Username: $USERNAME');
print('Password: ${PASSWORD.replaceAll(RegExp(r'.'), '*')}');
final credentials = base64Encode(utf8.encode('$USERNAME:$PASSWORD'));
print('Basic Auth: Basic ${credentials.substring(0, 20)}...');
print('โ
Configuration ready');
} catch (e) {
print('โ Error: $e');
}
}
/// ๐ เธฃเธฑเธ Tests เธเธฑเนเธเธซเธกเธ
static Future<void> runAllTests() async {
print('\n\n');
print('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
print('โ ๐ฌ MostMedia CS SDK Test with Correct Credentials ๐ฌ โ');
print('โ Repository: https://sdk-dai.mmcore.net/ โ');
print('โ Username: dsc โ');
print('โ Password: p7vQRa8hF โ');
print('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
// Test 1
final test1 = await testRepositoryAccess();
// Test 2
if (test1) {
await findCsaiSdk();
}
// Test 3
await findCsaiEndpoint();
// Test 4
await testSdkConfiguration();
print('\n\n');
print('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
print('โ โ
Tests Completed โ');
print('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ');
}
}
void main() async {
await MostMediaSDKTest.runAllTests();
}