postQuote method
This endpoint can be used to request a firm quote for a Stellar asset and off-chain asset pair.
Needs jwtToken
token obtained before with SEP-0010.
Implementation
Future<SEP38QuoteResponse> postQuote(
SEP38PostQuoteRequest request, String jwtToken) async {
Uri requestURI = Util.appendEndpointToUrl(_serviceAddress, 'quote');
Map<String, String> headers = {...RequestBuilder.headers};
headers["Authorization"] = "Bearer " + jwtToken;
headers.putIfAbsent("Content-Type", () => "application/json");
if ((request.sellAmount != null && request.buyAmount != null) ||
(request.sellAmount == null && request.buyAmount == null)) {
throw ArgumentError(
'The caller must provide either [sellAmount] or [buyAmount], but not both.');
}
SEP38QuoteResponse result = await httpClient
.post(requestURI, body: json.encode(request.toJson()), headers: headers)
.then((response) {
switch (response.statusCode) {
case 201:
case 200:
return SEP38QuoteResponse.fromJson(json.decode(response.body));
case 400:
throw SEP38BadRequest(errorFromResponseBody(response.body));
case 403:
throw SEP38PermissionDenied(errorFromResponseBody(response.body));
default:
throw new SEP38UnknownResponse(response.statusCode, response.body);
}
}).catchError((onError) {
throw onError;
});
return result;
}