feat(http): implements doublelinked list for middlewares

This commit is contained in:
2022-06-24 10:47:28 +02:00
parent 58d3b70bee
commit 14cb3485e4
16 changed files with 720 additions and 267 deletions
@@ -14,60 +14,27 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'package:http/http.dart';
import 'package:wyatt_http_client/src/middleware_client.dart';
import 'package:wyatt_http_client/src/models/middleware_request.dart';
import 'package:wyatt_http_client/src/models/middleware_response.dart';
part of 'pipeline.dart';
class Middleware {
Middleware? child;
/// The http [MiddlewareClient] used by this [Middleware]
MiddlewareClient? _client;
Middleware({
this.child,
});
String getName() => 'MiddlewareNode';
Middleware._({
this.child,
MiddlewareClient? client,
}) : _client = client;
// ignore: avoid_setters_without_getters
set httpClient(MiddlewareClient? client) => _client = client;
String getName() => 'Middleware';
Client? get client => _client?.inner;
void setClient(MiddlewareClient? client) {
_client = client;
child?.setClient(client);
}
Client? getClient() {
return _client?.inner;
}
Middleware deepCopy() {
if (child != null) {
return Middleware._(child: child?.deepCopy(), client: _client);
} else {
return Middleware._(client: _client);
}
}
void addChild(Middleware middleware) {
if (child != null) {
child?.addChild(middleware);
} else {
child = middleware;
}
}
MiddlewareRequest onRequest(
Future<MiddlewareRequest> onRequest(
MiddlewareRequest request,
) {
return child?.onRequest(request) ?? request;
) async {
return request;
}
MiddlewareResponse onResponse(MiddlewareResponse response) {
return child?.onResponse(response) ?? response;
Future<MiddlewareResponse> onResponse(MiddlewareResponse response) async {
return response;
}
@override