79 lines
2.8 KiB
Dart
79 lines
2.8 KiB
Dart
// Copyright (C) 2022 WYATT GROUP
|
|
// Please see the AUTHORS file for details.
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// 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: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';
|
|
import 'package:wyatt_http_client/src/pipeline.dart';
|
|
|
|
/// {@template middleware_context}
|
|
/// A class that contains the context of the middleware.
|
|
/// {@endtemplate}
|
|
class MiddlewareContext {
|
|
/// {@macro middleware_context}
|
|
const MiddlewareContext({
|
|
required this.pipeline,
|
|
required this.client,
|
|
this.originalRequest,
|
|
this.lastRequest,
|
|
this.originalResponse,
|
|
this.lastResponse,
|
|
});
|
|
|
|
/// The pipeline that the middleware is in.
|
|
final Pipeline pipeline;
|
|
|
|
/// The client that the middleware is in.
|
|
final MiddlewareClient client;
|
|
|
|
/// The original request that the middleware is in.
|
|
final MiddlewareRequest? originalRequest;
|
|
|
|
/// The last request that the middleware is in.
|
|
final MiddlewareRequest? lastRequest;
|
|
|
|
/// The original response that the middleware is in.
|
|
final MiddlewareResponse? originalResponse;
|
|
|
|
/// The last response that the middleware is in.
|
|
final MiddlewareResponse? lastResponse;
|
|
|
|
/// Create a copy of this [MiddlewareContext] with the given fields replaced
|
|
/// with the new values.
|
|
MiddlewareContext copyWith({
|
|
Pipeline? pipeline,
|
|
MiddlewareClient? client,
|
|
MiddlewareRequest? originalRequest,
|
|
MiddlewareRequest? lastRequest,
|
|
MiddlewareResponse? originalResponse,
|
|
MiddlewareResponse? lastResponse,
|
|
}) =>
|
|
MiddlewareContext(
|
|
pipeline: pipeline ?? this.pipeline,
|
|
client: client ?? this.client,
|
|
originalRequest: originalRequest ?? this.originalRequest,
|
|
lastRequest: lastRequest ?? this.lastRequest,
|
|
originalResponse: originalResponse ?? this.originalResponse,
|
|
lastResponse: lastResponse ?? this.lastResponse,
|
|
);
|
|
|
|
@override
|
|
String toString() =>
|
|
'MiddlewareContext(pipeline: $pipeline, client: $client, '
|
|
'originalRequest: $originalRequest, lastRequest: $lastRequest, '
|
|
'originalResponse: $originalResponse, lastResponse: $lastResponse)';
|
|
}
|