getCaptcha method
dynamic
getCaptcha({
- required double height,
- required double width,
- required String visiterId,
- required String requestId,
- required CyberSiaraModel cieraModel,
Fetches a CAPTCHA challenge for user verification.
This function sends a POST request to the captchaForAndroid endpoint
with device and user session details. It retrieves a CAPTCHA URL in HTML format
if the request is successful.
Parameters:
height: The device screen height (used for UI adjustments).width: The device screen width (used for UI adjustments).visiterId: A unique identifier for the user session.cieraModel: An instance ofCyberCieraModelcontaining API-related configurations.
Function Workflow:
- Sets
isOtherLoadingtotrueto indicate a loading state. - Clears previous error messages and CAPTCHA URLs.
- Fetches the device's IP and unique ID (
udid). - Detects the device type (
AndroidoriOS) and extracts the device name. - Constructs a request payload containing:
- Master URL ID
- Request URL
- Browser Identity (
udid) - Device IP and details
- Screen dimensions
- User session (
VisiterId)
- Sends the request using
ApiManager.post(). - Parses the response:
- If successful (
Message == "success"), updatescaptchaUrlwith the received HTML. - Otherwise, displays an API error message.
- If successful (
- Catches and logs any errors encountered.
- Finally, sets
isOtherLoadingtofalseto stop the loading state.
Returns:
- Updates the
captchaUrlobservable with the CAPTCHA HTML. - Displays an error toast in case of failure.
Implementation
getCaptcha(
{required double height,
required double width,
required String visiterId,
required String requestId,
required CyberSiaraModel cieraModel}) async {
isOtherLoading(true);
error("");
captchaUrl("");
captchaOpenedAt = null;
try {
deviceIp = await getPublicIp() ?? "";
udid = await generateBrowserIdentity();
deviceName = await getDeviceName();
deviceType = getDeviceType();
String deviceBrowser = getBrowserName();
// Map<String, dynamic> map = {
// "MasterUrlId": cieraModel.masterUrlId, // "VYz433DfqQ5LhBcgaamnbw4Wy4K9CyQT",
// "RequestUrl": cieraModel.requestUrl, // "com.app.cyber_ceiara",
//
// "BrowserIdentity": udid,
//
// "DeviceType": deviceType,
//
// "DeviceName": deviceName,
// "DeviceHeight": height.round(),
// "DeviceWidth": width.round(),
// "RequestID": requestId,
// "VisiterId": visiterId,
// "RequestType": "Open",
// "PluginNo": 0,
// "LanguageId": 1,
// "LangChange": 0,
// "ClickSecond": 1,
// "Iscookie": 1,
//
// // "DeviceIp": deviceIp,
// // "DeviceBrowser": 'Chrome',
// };
Map<String, dynamic> map = {
"MasterUrlId": cieraModel.masterUrlId, // "VYz433DfqQ5LhBcgaamnbw4Wy4K9CyQT",
"RequestUrl": cieraModel.requestUrl, // "com.app.cyber_ceiara",
"BrowserIdentity": udid,
"DeviceIp": deviceIp,
"DeviceType": deviceType,
"DeviceBrowser": deviceBrowser,
"DeviceName": deviceName,
"DeviceHeight": height.round(),
"DeviceWidth": width.round(),
"VisiterId": visiterId,
};
ResponseAPI responseAPI = await ApiManager.post(methodName: ApiConstant.captchaForAndroid, params: map);
Map<String, dynamic> valueMap = responseAPI.response;
if (valueMap["Message"] == "success") {
startCaptchaTimer();
captchaUrl(valueMap["HtmlFormate"]);
} else {
toast("Api Error");
}
} catch (err) {
error(err.toString());
toast(error.value);
} finally {
isOtherLoading(false);
}
}