Angel 2 updates
This commit is contained in:
parent
84f84f9b3b
commit
9df3bbf425
5 changed files with 44 additions and 35 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -26,3 +26,5 @@ doc/api/
|
|||
# Don't commit pubspec lock file
|
||||
# (Library packages only! Remove pattern if developing an application package)
|
||||
pubspec.lock
|
||||
|
||||
.dart_tool
|
|
@ -1,16 +0,0 @@
|
|||
import 'dart:io';
|
||||
import 'package:angel_framework/angel_framework.dart';
|
||||
import 'package:angel_user_agent/angel_user_agent.dart';
|
||||
|
||||
main() async {
|
||||
var app = new Angel()..before.add(parseUserAgent(strict: true));
|
||||
|
||||
app.get(
|
||||
'/',
|
||||
(UserAgent ua) => ua.isChrome
|
||||
? 'Woohoo! You are running Chrome.'
|
||||
: 'Sorry, we only support Google Chrome.');
|
||||
|
||||
var server = await app.startServer(InternetAddress.ANY_IP_V4, 3000);
|
||||
print('Listening at http://${server.address.address}:${server.port}');
|
||||
}
|
25
example/example.dart
Normal file
25
example/example.dart
Normal file
|
@ -0,0 +1,25 @@
|
|||
import 'dart:io';
|
||||
import 'package:angel_framework/angel_framework.dart';
|
||||
import 'package:angel_user_agent/angel_user_agent.dart';
|
||||
import 'package:user_agent/user_agent.dart';
|
||||
|
||||
main() async {
|
||||
var app = new Angel();
|
||||
var http = new AngelHttp(app);
|
||||
|
||||
app.get(
|
||||
'/',
|
||||
waterfall([
|
||||
parseUserAgent,
|
||||
(req, res) {
|
||||
var ua = req.container.make<UserAgent>();
|
||||
return ua.isChrome
|
||||
? 'Woohoo! You are running Chrome.'
|
||||
: 'Sorry, we only support Google Chrome.';
|
||||
},
|
||||
]),
|
||||
);
|
||||
|
||||
var server = await http.startServer(InternetAddress.anyIPv4, 3000);
|
||||
print('Listening at http://${server.address.address}:${server.port}');
|
||||
}
|
|
@ -1,25 +1,23 @@
|
|||
import 'package:angel_framework/angel_framework.dart';
|
||||
import 'package:user_agent/user_agent.dart';
|
||||
export 'package:user_agent/user_agent.dart';
|
||||
|
||||
/// Injects a [UserAgent] into requests.
|
||||
/// Injects a [UserAgent] factory into requests.
|
||||
///
|
||||
/// If [strict] is `true`, then requests without a user agent will be rejected.
|
||||
RequestMiddleware parseUserAgent({bool strict: true}) {
|
||||
return (RequestContext req, res) async {
|
||||
/// Because it is an injected factory, the user agent will not be
|
||||
/// parsed until you request it via `req.container.make<UserAgent>()`.
|
||||
bool parseUserAgent(RequestContext req, ResponseContext res) {
|
||||
req.container.registerFactory<UserAgent>((container) {
|
||||
var agentString = req.headers.value('user-agent');
|
||||
|
||||
if (agentString == null && strict) {
|
||||
if (agentString?.trim()?.isNotEmpty != true) {
|
||||
throw new AngelHttpException.badRequest(
|
||||
message: 'User-Agent header is required.');
|
||||
} else if (agentString != null) {
|
||||
Map<String, List<String>> map = {};
|
||||
req.headers.forEach((k, v) => map[k] = v);
|
||||
var userAgent = new UserAgent(agentString);
|
||||
container.registerSingleton<UserAgent>(userAgent);
|
||||
return userAgent;
|
||||
}
|
||||
});
|
||||
|
||||
req.inject(UserAgent, new UserAgent(agentString, headers: map));
|
||||
} else
|
||||
req.inject(UserAgent, null);
|
||||
|
||||
return true;
|
||||
};
|
||||
return true;
|
||||
}
|
||||
|
|
10
pubspec.yaml
10
pubspec.yaml
|
@ -1,10 +1,10 @@
|
|||
name: angel_user_agent
|
||||
version: 1.0.1
|
||||
description: Middleware to inject a User Agent object into requests.
|
||||
version: 2.0.0
|
||||
description: Angel middleware to parse and inject a User Agent object into requests.
|
||||
author: Tobe O <thosakwe@gmail.com>
|
||||
homepage: https://github.com/angel-dart/user_agent
|
||||
environment:
|
||||
sdk: ">=1.19.0"
|
||||
sdk: ">=2.0.0-dev <3.0.0"
|
||||
dependencies:
|
||||
angel_framework: ^1.0.0-dev
|
||||
user_agent: ^1.0.0-beta
|
||||
angel_framework: ^2.0.0-alpha
|
||||
user_agent: ^2.0.0
|
Loading…
Reference in a new issue