generateAccessOrRefreshToken method

Future<AccessOrRefreshTokenResponseDto> generateAccessOrRefreshToken(
  1. AccessOrRefreshTokenRequestDto accessAndRefreshTokenRequestDto
)

Implementation

Future<AccessOrRefreshTokenResponseDto> generateAccessOrRefreshToken(
  AccessOrRefreshTokenRequestDto accessAndRefreshTokenRequestDto,
) async {
  final String url = '$channel/oauth/v2/token';

  // need to remove null values from the request
  final responseDto = accessAndRefreshTokenRequestDto.toJson();
  responseDto.removeWhere((key, value) => value == null);

  final response = await http.post(
    Uri.parse(url).replace(
      queryParameters: responseDto,
    ),
  );

  if (!response.statusCode.isSuccessful) {
    throw MdmEngineException(
      method: response.request?.method,
      url: url,
      statusCode: response.statusCode,
      error: response.body,
    );
  }

  return AccessOrRefreshTokenResponseDto.fromJson(
    json.decode(response.body) as Map<String, dynamic>,
  );
}