route_provider 4.0.0 copy "route_provider: ^4.0.0" to clipboard
route_provider: ^4.0.0 copied to clipboard

outdated

Provides backend routing for http-servers. Split routes into separates parts: authentification, controller for data processing and response for outputting the results.

example/example.dart

import 'dart:async';
import 'dart:io';
import 'package:route_provider/route_provider.dart';

class RouteControllerError extends Controller {
  RouteControllerError();

  @override
  Future<Map> execute(HttpRequest request, Map params, {AuthResponse authResponse}) async {
    throw new RouteError(HttpStatus.notFound, "ERROR");
  }
}

class APIController extends RestApiController {
  @override
  Future<Map> onGet(HttpRequest request, Map params, {AuthResponse authResponse}) async {
    throw new RouteError(HttpStatus.internalServerError, 'Not supported');
  }
}

class MyAuth implements Auth {
  bool authed = false;
  MyAuth({this.authed = false});

  @override
  Future<AuthResponse> isAuthed(HttpRequest request, Map params) async => this.authed ? new StaticAuthResponse() : null;
}

Future main() async {
  HttpServer server = await HttpServer.bind(InternetAddress.loopbackIPv4, 4040);

  new Router(server)
    ..route(url: '/', responser: new FileResponse("docroot/home.html"), auth: new MyAuth(authed: true))
    ..route(url: '/', responser: new FolderResponse("docroot/"), auth: new MyAuth(authed: true))
    ..route(url: '/img', responser: new FolderResponse("docroot/assets/img"), auth: new MyAuth(authed: true))
    ..route(url: '/assets/**', responser: new FolderResponse("docroot/assets/"), auth: new MyAuth(authed: true))
    ..route(url: '/js/**', responser: new FolderResponse("docroot/code/"), auth: new MyAuth(authed: true))
    ..route(
        url: '/error',
        controller: new RouteControllerError(),
        responser: new FileResponse("docroot/home.html"),
        auth: new MyAuth(authed: true))
    ..route(
        url: '/error2',
        controller: new APIController(),
        responser: new FileResponse("docroot/home.html"),
        auth: new MyAuth(authed: true))
    ..route(
        url: '/noauth',
        controller: new APIController(),
        responser: new FileResponse("docroot/home.html"),
        auth: new MyAuth(authed: false))
    ..start();

  print('listening on localhost, port ${server.port}');
}
1
likes
0
pub points
0%
popularity

Publisher

unverified uploader

Provides backend routing for http-servers. Split routes into separates parts: authentification, controller for data processing and response for outputting the results.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

mime_type

More

Packages that depend on route_provider