postRaw method
POST request returning raw bytes
Implementation
Future<Uint8List> postRaw(
String path,
Uint8List payload, {
bool requiresAuth = false,
}) async {
var url = _buildFullURL(path);
final isDeviceReg = _isDeviceRegistrationPath(path);
final headers = _buildHeaders(isDeviceReg, requiresAuth);
if (isDeviceReg && _environment == SDKEnvironment.development) {
final separator = url.contains('?') ? '&' : '?';
url = '$url${separator}on_conflict=device_id';
}
final uri = Uri.parse(url);
_logger.debug('POST $path');
try {
final response = await _httpClient
.post(
uri,
headers: headers,
body: payload,
)
.timeout(_timeout);
if (isDeviceReg && response.statusCode == 409) {
_logger.info('Device already registered (409) - treating as success');
return response.bodyBytes;
}
_validateResponse(response, path);
return response.bodyBytes;
} catch (e) {
if (e is SDKError) rethrow;
_logger.error('POST $path failed: $e');
throw SDKError.networkError(e.toString());
}
}