exchangeForInfo<Request, ResponseDataSuccess, ResponseDataFailed, RequestSerialized, ResponseDataSuccessSerialized, ResponseDataFailedSerialized> method
Future<ExchangeResponse<ResponseDataSuccess, ResponseDataFailed> >
exchangeForInfo<Request, ResponseDataSuccess, ResponseDataFailed, RequestSerialized, ResponseDataSuccessSerialized, ResponseDataFailedSerialized>(})
Exchange request for info
Possiblely can throw anything that http.get
, http.put
, http.post
, http.patch
, http.delete
throws
Other than those that throws, a valid ExchangeResponse
will always be returned, even if there's an error on the server side.
Note that if using the 'get' http method, only one level of parameters will be supported.
Implementation
Future<ExchangeResponse<ResponseDataSuccess,ResponseDataFailed>> exchangeForInfo<Request, ResponseDataSuccess, ResponseDataFailed, RequestSerialized, ResponseDataSuccessSerialized, ResponseDataFailedSerialized>(
ExchangeFormat<Request, ResponseDataSuccess, ResponseDataFailed, RequestSerialized, ResponseDataSuccessSerialized, ResponseDataFailedSerialized, SettingType> exchangeFormat,
Request requestParameter,
{
required Map<String,dynamic>? Function(RequestSerialized reqSerialized) requestSerializedToMap,
}
) async {
//Before sending or serializing request, let's validate this first
if(exchangeFormat.validateRequest != null){
Set<String>? validateReqRst = exchangeFormat.validateRequest!(requestParameter,settings);
if(validateReqRst != null){
throw RequestFormatException(null,MultipleItemRelatedParams(items: List.from(validateReqRst)));
}
}
Map<String,dynamic>? serializedReqMap = requestSerializedToMap(exchangeFormat.serializeRequest(requestParameter, settings));
String reqRealUrl = exchangeFormat.httpMetaData.relativePathWithoutSlashBeforeStart;
if(serializedReqMap != null){
serializedReqMap.removeWhere((key, value){
String tmpReqRealUrl = reqRealUrl.replaceAll('<$key>',value);
if(tmpReqRealUrl != reqRealUrl){
reqRealUrl = tmpReqRealUrl;
return true;
}else{
return false;
}
});
}
switch(exchangeFormat.httpMetaData.method){
case ExchangeHTTPMethod.GET:
return await _exchangeForInfoGetHelper(exchangeFormat, serializedReqMap, reqRealUrl);
default:
return await _exchangeForInfoOtherThanGetHelper(exchangeFormat.httpMetaData.method,exchangeFormat, serializedReqMap, reqRealUrl);
}
}