exchangeForInfo<Request, ResponseDataSuccess, ResponseDataFailed, RequestSerialized, ResponseDataSuccessSerialized, ResponseDataFailedSerialized> method

Future<ExchangeResponse<ResponseDataSuccess, ResponseDataFailed>> exchangeForInfo<Request, ResponseDataSuccess, ResponseDataFailed, RequestSerialized, ResponseDataSuccessSerialized, ResponseDataFailedSerialized>(
  1. ExchangeFormat<Request, ResponseDataSuccess, ResponseDataFailed, RequestSerialized, ResponseDataSuccessSerialized, ResponseDataFailedSerialized, SettingType> exchangeFormat,
  2. Request requestParameter, {
  3. required Map<String, dynamic>? requestSerializedToMap(
    1. RequestSerialized reqSerialized
    ),
})

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);
  }
}