postQuote method

Future<SEP38QuoteResponse> postQuote(
  1. SEP38PostQuoteRequest request,
  2. String jwtToken
)

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