Skip to content

Commit 7a69509

Browse files
committed
rework pharaoh exports
1 parent 6af5c4c commit 7a69509

File tree

23 files changed

+121
-268
lines changed

23 files changed

+121
-268
lines changed

packages/pharaoh/lib/pharaoh.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
library;
22

3-
export 'src/core.dart' hide $PharaohImpl;
43
export 'src/view/view.dart';
54
export 'src/http/cookie.dart';
65
export 'src/http/request.dart';
76
export 'src/http/response.dart';
87
export 'src/utils/utils.dart';
98
export 'src/utils/exceptions.dart';
10-
export 'src/router/router_handler.dart';
9+
export 'src/http/router.dart';
1110
export 'src/middleware/session_mw.dart';
1211
export 'src/middleware/body_parser.dart';
1312
export 'src/middleware/cookie_parser.dart';
1413
export 'src/middleware/request_logger.dart';
14+
export 'package:spanner/spanner.dart' show HTTPMethod;
1515

1616
// shelf
1717
export 'src/shelf_interop/adapter.dart';
Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
1-
export 'src/_next/validation.dart';
2-
export 'src/_next/router.dart';
1+
export 'pharaoh.dart';
32
export 'src/_next/core.dart';
43
export 'src/_next/http.dart';
5-
export 'src/core.dart';
6-
7-
export 'src/http/response.dart';
8-
export 'src/http/request.dart';
9-
export 'src/router/router_handler.dart';
10-
export 'package:spanner/spanner.dart' show HTTPMethod;
4+
export 'src/_next/router.dart';
5+
export 'src/_next/validation.dart';

packages/pharaoh/lib/src/_next/_core/core_impl.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ class _PharaohNextImpl implements Application {
3838
int get port => config.port;
3939

4040
Pharaoh _createPharaohInstance({OnErrorCallback? onException}) {
41-
final pharaoh = Pharaoh()
42-
..useSpanner(_spanner)
43-
..viewEngine = _viewEngine;
41+
final pharaoh = Pharaoh()..useSpanner(_spanner);
42+
Pharaoh.viewEngine = _viewEngine;
43+
4444
if (onException != null) pharaoh.onError(onException);
4545
return pharaoh;
4646
}

packages/pharaoh/lib/src/_next/http.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import 'dart:io';
55
import '../http/request.dart';
66
import '../http/response.dart';
77
import '../middleware/session_mw.dart';
8-
import '../router/router_handler.dart';
8+
import '../http/router.dart';
99
import 'core.dart';
1010

1111
@inject

packages/pharaoh/lib/src/_next/router.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import 'package:grammer/grammer.dart';
99
import 'package:meta/meta.dart';
1010
import '../http/request.dart';
1111
import '../http/response.dart';
12-
import '../router/router_handler.dart';
12+
import '../http/router.dart';
1313
import 'validation.dart';
1414
import 'core.dart';
1515

packages/pharaoh/lib/src/core.dart

Lines changed: 0 additions & 55 deletions
This file was deleted.

packages/pharaoh/lib/src/http/request.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import 'dart:io';
22

33
import 'package:http_parser/http_parser.dart';
44
import 'package:pharaoh/pharaoh.dart';
5-
import 'package:spanner/spanner.dart';
65

76
import 'message.dart';
87

Lines changed: 66 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,70 @@
1-
part of 'core.dart';
1+
import 'dart:async';
2+
import 'dart:io';
23

3-
class $PharaohImpl extends RouterContract
4+
import 'package:collection/collection.dart';
5+
import 'package:http_parser/http_parser.dart';
6+
import 'package:meta/meta.dart';
7+
import 'package:spanner/spanner.dart';
8+
import 'package:spanner/src/tree/tree.dart' show BASE_PATH;
9+
10+
import '../middleware/body_parser.dart';
11+
import '../middleware/session_mw.dart';
12+
import '../shelf_interop/shelf.dart' as shelf;
13+
import '../utils/exceptions.dart';
14+
import '../view/view.dart';
15+
16+
import 'request.dart';
17+
import 'response.dart';
18+
19+
part 'router/router_contract.dart';
20+
part 'router/router_handler.dart';
21+
22+
typedef PharaohError = ({Object exception, StackTrace trace});
23+
24+
typedef OnErrorCallback = FutureOr<Response> Function(
25+
PharaohError error,
26+
Request req,
27+
Response res,
28+
);
29+
30+
abstract class Pharaoh implements RouterContract {
31+
static _$GroupRouter get router => _$GroupRouter();
32+
33+
factory Pharaoh() => _$PharaohImpl();
34+
35+
static ViewEngine? viewEngine;
36+
37+
void onError(OnErrorCallback onError);
38+
39+
void useSpanner(Spanner spanner);
40+
41+
void useRequestHook(RequestHook hook);
42+
43+
void group(String path, _$GroupRouter router);
44+
45+
Uri get uri;
46+
47+
Future<Pharaoh> listen({int port = 3000});
48+
49+
@visibleForTesting
50+
void handleRequest(HttpRequest httpReq);
51+
52+
Future<void> shutdown();
53+
}
54+
55+
class _$PharaohImpl extends RouterContract
456
with RouteDefinitionMixin
557
implements Pharaoh {
658
late final HttpServer _server;
759

860
OnErrorCallback? _onErrorCb;
961

10-
static ViewEngine? viewEngine_;
11-
1262
final List<RequestHook> _requestHooks = [
1363
sessionPreResponseHook,
1464
viewRenderHook,
1565
];
1666

17-
$PharaohImpl() {
67+
_$PharaohImpl() {
1868
useSpanner(Spanner());
1969
use(bodyParser);
2070
}
@@ -42,15 +92,6 @@ class $PharaohImpl extends RouterContract
4292
);
4393
}
4494

45-
@override
46-
Pharaoh group(final String path, final RouterContract router) {
47-
if (router is! GroupRouter) {
48-
throw PharaohException.value('Router is not an instance of GroupRouter');
49-
}
50-
router.commit(path, spanner);
51-
return this;
52-
}
53-
5495
@override
5596
Future<Pharaoh> listen({int port = 3000}) async {
5697
_server = await HttpServer.bind(InternetAddress.anyIPv4, port, shared: true)
@@ -188,17 +229,21 @@ class $PharaohImpl extends RouterContract
188229
Future<void> shutdown() async => _server.close();
189230

190231
@override
191-
ViewEngine? get viewEngine => viewEngine_;
192-
193-
@override
194-
set viewEngine(ViewEngine? engine) => viewEngine_ = engine;
232+
void onError(OnErrorCallback errorCb) => _onErrorCb = errorCb;
195233

196234
@override
197-
void onError(OnErrorCallback errorCb) => _onErrorCb = errorCb;
235+
void useRequestHook(RequestHook hook) => _requestHooks.add(hook);
198236

199237
@override
200-
void addRequestHook(RequestHook hook) => _requestHooks.add(hook);
238+
void group(String path, _$GroupRouter router) {
239+
spanner.attachNode(path, router.spanner.root);
240+
}
201241
}
202242

203-
// ignore: constant_identifier_names
204243
const _XPoweredByHeader = 'X-Powered-By';
244+
245+
class _$GroupRouter extends RouterContract with RouteDefinitionMixin {
246+
_$GroupRouter() {
247+
useSpanner(Spanner());
248+
}
249+
}

packages/pharaoh/lib/src/router/router_mixin.dart renamed to packages/pharaoh/lib/src/http/router/router_contract.dart

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,26 @@
1-
import 'package:spanner/spanner.dart';
2-
import 'package:spanner/src/tree/tree.dart' show BASE_PATH;
1+
part of '../router.dart';
32

4-
import 'router_contract.dart';
5-
import 'router_handler.dart';
3+
sealed class RouterContract {
4+
void get(String path, RequestHandler hdler);
5+
6+
void post(String path, RequestHandler hdler);
7+
8+
void put(String path, RequestHandler hdler);
9+
10+
void delete(String path, RequestHandler hdler);
11+
12+
void head(String path, RequestHandler hdler);
13+
14+
void patch(String path, RequestHandler hdler);
15+
16+
void options(String path, RequestHandler hdler);
17+
18+
void trace(String path, RequestHandler hdler);
19+
20+
void use(Middleware middleware);
21+
22+
void on(String path, Middleware hdler, {HTTPMethod method = HTTPMethod.ALL});
23+
}
624

725
mixin RouteDefinitionMixin on RouterContract {
826
late Spanner spanner;

packages/pharaoh/lib/src/router/router_handler.dart renamed to packages/pharaoh/lib/src/http/router/router_handler.dart

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
import 'dart:async';
2-
3-
import '../http/request.dart';
4-
import '../http/response.dart';
5-
import '../utils/exceptions.dart';
1+
part of '../router.dart';
62

73
typedef ReqRes = ({Request req, Response res});
84

9-
class RequestHook {
5+
final class RequestHook {
106
final FutureOr<ReqRes> Function(Request req, Response res)? onBefore;
117
final FutureOr<ReqRes> Function(Request req, Response res)? onAfter;
128
const RequestHook({this.onAfter, this.onBefore});

0 commit comments

Comments
 (0)