parseUserAgent function

bool parseUserAgent(
  1. RequestContext req,
  2. ResponseContext res
)

Injects a UserAgent factory into requests.

Because it is an injected factory, the user agent will not be parsed until you request it via req.container.make<UserAgent>().

Implementation

bool parseUserAgent(RequestContext req, ResponseContext res) {
  req.container!.registerFactory<UserAgent>((container) {
    var agentString = req.headers!.value('user-agent');

    if (agentString?.trim().isNotEmpty != true) {
      throw AngelHttpException.badRequest(
          message: 'User-Agent header is required.');
    } else if (agentString != null) {
      var userAgent = UserAgent(agentString);
      container.registerSingleton<UserAgent>(userAgent);
      return userAgent;
    }

    // TODO: To be reviewed
    return UserAgent('unknown');
  });

  return true;
}