post method

Future<Response> post({
  1. required String path,
  2. Map<String, String>? headers,
  3. Map<String, dynamic>? body,
})

A POST method for coinbase exchange which automatically manages signing for authorization.

Implementation

Future<http.Response> post({
  required String path,
  Map<String, String>? headers,
  Map<String, dynamic>? body,
}) async {
  Uri url = Uri.https(_authority, path);
  var response = await http.post(
    url,
    body: body != null ? jsonEncode(body) : null,
    headers: _addHeaders(
      method: 'POST',
      requestPath: url.path,
      additionalHeaders: headers,
      body: body,
    ),
  );

  if (response.statusCode == 429) {
    await Future.delayed(Duration(seconds: 1));
    return post(
      path: path,
      headers: headers,
      body: body,
    );
  }

  return response;
}