detectLanguage method
Future<DetectLanguageResponse>
detectLanguage(
- DetectLanguageRequest request
)
Implementation
@override
Future<DetectLanguageResponse> detectLanguage(
DetectLanguageRequest request,
) async {
List<TextDetection> detections = [];
Map<String, String> body = {
'Action': 'LanguageDetect',
'Language': 'zh-CN',
'Nonce': '${Random().nextInt(9999)}',
'ProjectId': '0',
'Region': 'ap-guangzhou',
'SecretId': _optionSecretId,
'Text': request.texts.first,
'Timestamp': '${DateTime.now().millisecondsSinceEpoch ~/ 1000}',
'Version': '2018-03-21',
};
List<String> keys = body.keys.toList();
keys.sort((a, b) => a.compareTo(b));
String query = keys.map((key) => '$key=${body[key]}').join('&');
String endpoint = 'tmt.tencentcloudapi.com';
String srcStr = 'POST$endpoint/?$query';
String signature = _signature(_optionSecretKey, srcStr);
body.putIfAbsent('Signature', () => signature);
keys = body.keys.toList();
keys.sort((a, b) => a.compareTo(b));
query = keys.map((key) => '$key=${body[key]}').join('&');
var response = await http.post(
Uri.parse('https://$endpoint'),
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
},
body: body,
);
Map<String, dynamic> data = json.decode(utf8.decode(response.bodyBytes));
detections = [
TextDetection(
detectedLanguage: data['Response']['Lang'],
text: request.texts.first,
),
];
return DetectLanguageResponse(
detections: detections,
);
}