paylike_dart_request

Last updated:

0 purchases

paylike_dart_request Image
paylike_dart_request Images
Add to Cart

Description:

paylike dart request

Paylike low-level request helper #
For a higher-level client see https://pub.dev.
This implementation is based on Paylike/JS-Request
This is a low-level library used for making HTTP(s) requests to Paylike APIs. It
incorporates the conventions described in the
Paylike API reference.
It is built to work in any Dart environment (including Flutter) by
accepting a io.HttpClient
implementation as input. This library utilises io.HttpClient because of its capabilities to abort
requests properly if necessary.
This function is usually put behind a retry mechanism. Paylike APIs will
expect any client to gracefully handle a rate limiting response and expects them
to retry.
A retry mechanism is not included in this package because it is highly specific
to the project and is difficult to implement for streaming requests without
further context.
Example #
var requester = PaylikeRequester().setLog((dynamic o) => print(o));
var opts = RequestOptions.fromClientId('dart-1')
.setQuery({
'foo': 'bar',
})
.setVersion(1)
.setData({
'foo': 'bar',
});
requester.request('http://foo', opts).then((response) {
return response.getBody();
}).then((body) {
print(body);
}).catchError((error) {
print(error);
});
copied to clipboard
PaylikeRequester #
The default class used to initiate a requester instance
var requester = PaylikeRequester();
copied to clipboard
By default the requester is initiated with the default io.HttpClient as its client and a simple log function:
class PaylikeRequester {
Function log = (dynamic o) => print(o);
io.HttpClient client = io.HttpClient();
....
}
copied to clipboard
You change this by using a named constructor:
var requester = PaylikeRequester.withClientAndLog(io.HttpClient(), (dynamic o) => print(o));
copied to clipboard
request function
Used for executing requests, have the following footprint:
Future<PaylikeResponse> request(String endpoint, RequestOptions? opts)
copied to clipboard
Consumes an endpoint and RequestOptions then returns PaylikeResponse
RequestOptions #
Describes the different options you can use to construct your request.
Constructors
var opts = RequestOptions.v1() // Creates a version 1 request option

var opts = RequestOptions.fromClientId('your-client-id'); // Creates from your client id
copied to clipboard
RequestOptions works utilizing a builder pattern:
var opts = RequestOptions.fromClientId('dart-1')
.setQuery({
'foo': 'bar',
})
.setVersion(1)
.setData({
'foo': 'bar',
})
.setTimeout(Duration(seconds: 20));
copied to clipboard
PaylikeResponse #
Describes the response of your request
var response = await requester.request('http://foo', opts);

var body = await response.getBody(); // String | Returns response body in plain simple string

var reader = await response.getBodyReader(); // Stream<dynamic> | Returns an object stream with the decoded json body
copied to clipboard
Error handling #
request may throw any of the following error classes as well as any error
thrown by the io.HttpClient implementation.
All error classes can be accessed through the package.
Example #

try {
await requester.request('http://foo', opts);
catch (e) {
if (e is RateLimitException) {
// initiate retry
}
if (e is ServerErrorException) {
// unexpected server error
}
}


try {
var opts = RequestOptions().setVersion(0);
} catch (e) {
if (e is VersionException) {
// version should be a positive integer
}
}
copied to clipboard
Error classes #


RateLimitException
May have a retryAfter (Duration) property if sent by the server
specifying the minimum delay.


TimeoutException
Comes from dart:async library https://api.dart.dev/be/169657/dart-async/TimeoutException-class.html


ServerErrorException
Has status and headers properties copied from the io.HttpClientResponse


PaylikeException
These errors correspond to
status codes
from the API reference. They have at least a code and message property,
but may also have other useful properties relevant to the specific error code,
such as a minimum and maximum for amounts.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.