23 lines
611 B
Dart
23 lines
611 B
Dart
|
import 'package:angel_framework/angel_framework.dart';
|
||
|
import 'user_agent.dart';
|
||
|
|
||
|
/// Injects a [UserAgent] into requests.
|
||
|
///
|
||
|
/// If [strict] is `true`, then an invalid
|
||
|
/// `User-Agent` header will throw a `400 Bad Request`.
|
||
|
RequestMiddleware parseUserAgent({bool strict: true}) {
|
||
|
return (req, res) async {
|
||
|
try {
|
||
|
req.inject(UserAgent, parse(req.headers.value('User-Agent')));
|
||
|
} catch (e) {
|
||
|
if (e is UserAgentException && strict) {
|
||
|
throw new AngelHttpException.BadRequest(message: 'Invalid user agent.');
|
||
|
} else {
|
||
|
rethrow;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
};
|
||
|
}
|