fetch method
- TokenRequestOptions options
override
Implementation
@override
Future<TokenSourceResponse> fetch(TokenRequestOptions options) async {
final requestBody = jsonEncode(options.toRequest().toJson());
final requestHeaders = {
'Content-Type': 'application/json',
...headers,
};
final httpClient = client ?? http.Client();
final shouldCloseClient = client == null;
late final http.Response response;
try {
final request = http.Request(method, uri);
request.headers.addAll(requestHeaders);
request.body = requestBody;
final streamedResponse = await httpClient.send(request);
response = await http.Response.fromStream(streamedResponse);
} finally {
if (shouldCloseClient) {
httpClient.close();
}
}
if (response.statusCode < 200 || response.statusCode >= 300) {
throw TokenSourceHttpException(
uri: uri,
statusCode: response.statusCode,
body: response.body,
);
}
final responseBody = jsonDecode(response.body) as Map<String, dynamic>;
return TokenSourceResponse.fromJson(responseBody);
}