@@ -99,7 +99,7 @@ func NewApplicationHandler(a *types.APIOptions) (*ApplicationHandler, error) {
99
99
return & ApplicationHandler {A : a , rm : rm }, nil
100
100
}
101
101
102
- func (a * ApplicationHandler ) BuildRoutes () * chi.Mux {
102
+ func (a * ApplicationHandler ) buildRouter () * chi.Mux {
103
103
router := chi .NewMux ()
104
104
105
105
router .Use (chiMiddleware .RequestID )
@@ -109,14 +109,22 @@ func (a *ApplicationHandler) BuildRoutes() *chi.Mux {
109
109
router .Use (middleware .LogHttpRequest (a .A ))
110
110
router .Use (chiMiddleware .Maybe (middleware .SetupCORS , shouldApplyCORS ))
111
111
112
+ return router
113
+ }
114
+
115
+ func (a * ApplicationHandler ) BuildControlPlaneRoutes () * chi.Mux {
116
+
117
+ router := a .buildRouter ()
118
+
119
+ handler := & handlers.Handler {A : a .A , RM : a .rm }
120
+
121
+ // TODO(subomi): left this here temporarily till the data plane is stable.
112
122
// Ingestion API.
113
123
router .Route ("/ingest" , func (ingestRouter chi.Router ) {
114
124
ingestRouter .Get ("/{maskID}" , a .HandleCrcCheck )
115
125
ingestRouter .Post ("/{maskID}" , a .IngestEvent )
116
126
})
117
127
118
- handler := & handlers.Handler {A : a .A , RM : a .rm }
119
-
120
128
// Public API.
121
129
router .Route ("/api" , func (v1Router chi.Router ) {
122
130
v1Router .Route ("/v1" , func (r chi.Router ) {
@@ -146,6 +154,7 @@ func (a *ApplicationHandler) BuildRoutes() *chi.Mux {
146
154
})
147
155
})
148
156
157
+ // TODO(subomi): left this here temporarily till the data plane is stable.
149
158
projectSubRouter .Route ("/events" , func (eventRouter chi.Router ) {
150
159
// TODO(all): should the InstrumentPath change?
151
160
eventRouter .With (middleware .InstrumentPath ("/events" )).Post ("/" , handler .CreateEndpointEvent )
@@ -304,6 +313,7 @@ func (a *ApplicationHandler) BuildRoutes() *chi.Mux {
304
313
})
305
314
})
306
315
316
+ // TODO(subomi): left this here temporarily till the data plane is stable.
307
317
projectSubRouter .Route ("/events" , func (eventRouter chi.Router ) {
308
318
eventRouter .Post ("/" , handler .CreateEndpointEvent )
309
319
eventRouter .Post ("/fanout" , handler .CreateEndpointFanoutEvent )
@@ -401,6 +411,7 @@ func (a *ApplicationHandler) BuildRoutes() *chi.Mux {
401
411
endpointRouter .With (handler .CanManageEndpoint ()).Put ("/{endpointID}/expire_secret" , handler .ExpireSecret )
402
412
})
403
413
414
+ // TODO(subomi): left this here temporarily till the data plane is stable.
404
415
portalLinkRouter .Route ("/events" , func (eventRouter chi.Router ) {
405
416
eventRouter .Post ("/" , handler .CreateEndpointEvent )
406
417
eventRouter .With (middleware .Pagination ).Get ("/" , handler .GetEventsPaged )
@@ -413,6 +424,23 @@ func (a *ApplicationHandler) BuildRoutes() *chi.Mux {
413
424
})
414
425
})
415
426
427
+ portalLinkRouter .Route ("/eventdeliveries" , func (eventDeliveryRouter chi.Router ) {
428
+ eventDeliveryRouter .With (middleware .Pagination ).Get ("/" , handler .GetEventDeliveriesPaged )
429
+ eventDeliveryRouter .Post ("/forceresend" , handler .ForceResendEventDeliveries )
430
+ eventDeliveryRouter .Post ("/batchretry" , handler .BatchRetryEventDelivery )
431
+ eventDeliveryRouter .Get ("/countbatchretryevents" , handler .CountAffectedEventDeliveries )
432
+
433
+ eventDeliveryRouter .Route ("/{eventDeliveryID}" , func (eventDeliverySubRouter chi.Router ) {
434
+ eventDeliverySubRouter .Get ("/" , handler .GetEventDelivery )
435
+ eventDeliverySubRouter .Put ("/resend" , handler .ResendEventDelivery )
436
+
437
+ eventDeliverySubRouter .Route ("/deliveryattempts" , func (deliveryRouter chi.Router ) {
438
+ deliveryRouter .Get ("/" , handler .GetDeliveryAttempts )
439
+ deliveryRouter .Get ("/{deliveryAttemptID}" , handler .GetDeliveryAttempt )
440
+ })
441
+ })
442
+ })
443
+
416
444
portalLinkRouter .Route ("/subscriptions" , func (subscriptionRouter chi.Router ) {
417
445
subscriptionRouter .Post ("/" , handler .CreateSubscription )
418
446
subscriptionRouter .Post ("/test_filter" , handler .TestSubscriptionFilter )
@@ -422,6 +450,145 @@ func (a *ApplicationHandler) BuildRoutes() *chi.Mux {
422
450
subscriptionRouter .Put ("/{subscriptionID}" , handler .UpdateSubscription )
423
451
})
424
452
453
+ })
454
+
455
+ router .Handle ("/queue/monitoring/*" , a .A .Queue .(* redisqueue.RedisQueue ).Monitor ())
456
+ router .Handle ("/metrics" , promhttp .HandlerFor (metrics .Reg (), promhttp.HandlerOpts {}))
457
+ router .HandleFunc ("/*" , reactRootHandler )
458
+
459
+ metrics .RegisterQueueMetrics (a .A .Queue )
460
+ prometheus .MustRegister (metrics .RequestDuration ())
461
+ a .Router = router
462
+
463
+ return router
464
+ }
465
+
466
+ func (a * ApplicationHandler ) BuildDataPlaneRoutes () * chi.Mux {
467
+ router := a .buildRouter ()
468
+
469
+ // Ingestion API.
470
+ router .Route ("/ingest" , func (ingestRouter chi.Router ) {
471
+ ingestRouter .Get ("/{maskID}" , a .HandleCrcCheck )
472
+ ingestRouter .Post ("/{maskID}" , a .IngestEvent )
473
+ })
474
+
475
+ handler := & handlers.Handler {A : a .A , RM : a .rm }
476
+
477
+ // Public API.
478
+ router .Route ("/api" , func (v1Router chi.Router ) {
479
+ v1Router .Route ("/v1" , func (r chi.Router ) {
480
+ r .Use (chiMiddleware .AllowContentType ("application/json" ))
481
+ r .Use (middleware .JsonResponse )
482
+ r .Use (middleware .RequireAuth ())
483
+
484
+ r .Route ("/projects" , func (projectRouter chi.Router ) {
485
+ projectRouter .Route ("/{projectID}" , func (projectSubRouter chi.Router ) {
486
+ projectSubRouter .Route ("/events" , func (eventRouter chi.Router ) {
487
+ // TODO(all): should the InstrumentPath change?
488
+ eventRouter .With (middleware .InstrumentPath ("/events" )).Post ("/" , handler .CreateEndpointEvent )
489
+ eventRouter .Post ("/fanout" , handler .CreateEndpointFanoutEvent )
490
+ eventRouter .Post ("/broadcast" , handler .CreateBroadcastEvent )
491
+ eventRouter .Post ("/dynamic" , handler .CreateDynamicEvent )
492
+ eventRouter .With (middleware .Pagination ).Get ("/" , handler .GetEventsPaged )
493
+ eventRouter .Post ("/batchreplay" , handler .BatchReplayEvents )
494
+
495
+ eventRouter .Route ("/{eventID}" , func (eventSubRouter chi.Router ) {
496
+ eventSubRouter .Get ("/" , handler .GetEndpointEvent )
497
+ eventSubRouter .Put ("/replay" , handler .ReplayEndpointEvent )
498
+ })
499
+ })
500
+
501
+ projectSubRouter .Route ("/eventdeliveries" , func (eventDeliveryRouter chi.Router ) {
502
+ eventDeliveryRouter .With (middleware .Pagination ).Get ("/" , handler .GetEventDeliveriesPaged )
503
+ eventDeliveryRouter .Post ("/forceresend" , handler .ForceResendEventDeliveries )
504
+ eventDeliveryRouter .Post ("/batchretry" , handler .BatchRetryEventDelivery )
505
+
506
+ eventDeliveryRouter .Route ("/{eventDeliveryID}" , func (eventDeliverySubRouter chi.Router ) {
507
+ eventDeliverySubRouter .Get ("/" , handler .GetEventDelivery )
508
+ eventDeliverySubRouter .Put ("/resend" , handler .ResendEventDelivery )
509
+
510
+ eventDeliverySubRouter .Route ("/deliveryattempts" , func (deliveryRouter chi.Router ) {
511
+ deliveryRouter .Get ("/" , handler .GetDeliveryAttempts )
512
+ deliveryRouter .Get ("/{deliveryAttemptID}" , handler .GetDeliveryAttempt )
513
+ })
514
+ })
515
+ })
516
+ })
517
+ })
518
+ })
519
+ })
520
+
521
+ // Dashboard API.
522
+ router .Route ("/ui" , func (uiRouter chi.Router ) {
523
+ uiRouter .Use (middleware .JsonResponse )
524
+ uiRouter .Use (chiMiddleware .Maybe (middleware .RequireAuth (), shouldAuthRoute ))
525
+
526
+ // TODO(subomi): added these back for the tests to pass.
527
+ // What should we do in the future?
528
+ uiRouter .Route ("/auth" , func (authRouter chi.Router ) {
529
+ authRouter .Post ("/login" , handler .LoginUser )
530
+ authRouter .Post ("/register" , handler .RegisterUser )
531
+ authRouter .Post ("/token/refresh" , handler .RefreshToken )
532
+ authRouter .Post ("/logout" , handler .LogoutUser )
533
+ })
534
+
535
+ uiRouter .Route ("/organisations" , func (orgRouter chi.Router ) {
536
+ orgRouter .Route ("/{orgID}" , func (orgSubRouter chi.Router ) {
537
+ orgSubRouter .Route ("/projects" , func (projectRouter chi.Router ) {
538
+ projectRouter .Route ("/{projectID}" , func (projectSubRouter chi.Router ) {
539
+ projectSubRouter .Route ("/events" , func (eventRouter chi.Router ) {
540
+ eventRouter .Post ("/" , handler .CreateEndpointEvent )
541
+ eventRouter .Post ("/fanout" , handler .CreateEndpointFanoutEvent )
542
+ eventRouter .With (middleware .Pagination ).Get ("/" , handler .GetEventsPaged )
543
+ eventRouter .Post ("/batchreplay" , handler .BatchReplayEvents )
544
+ eventRouter .Get ("/countbatchreplayevents" , handler .CountAffectedEvents )
545
+
546
+ eventRouter .Route ("/{eventID}" , func (eventSubRouter chi.Router ) {
547
+ eventSubRouter .Get ("/" , handler .GetEndpointEvent )
548
+ eventSubRouter .Put ("/replay" , handler .ReplayEndpointEvent )
549
+ })
550
+ })
551
+
552
+ projectSubRouter .Route ("/eventdeliveries" , func (eventDeliveryRouter chi.Router ) {
553
+ eventDeliveryRouter .With (middleware .Pagination ).Get ("/" , handler .GetEventDeliveriesPaged )
554
+ eventDeliveryRouter .Post ("/forceresend" , handler .ForceResendEventDeliveries )
555
+ eventDeliveryRouter .Post ("/batchretry" , handler .BatchRetryEventDelivery )
556
+ eventDeliveryRouter .Get ("/countbatchretryevents" , handler .CountAffectedEventDeliveries )
557
+
558
+ eventDeliveryRouter .Route ("/{eventDeliveryID}" , func (eventDeliverySubRouter chi.Router ) {
559
+ eventDeliverySubRouter .Get ("/" , handler .GetEventDelivery )
560
+ eventDeliverySubRouter .Put ("/resend" , handler .ResendEventDelivery )
561
+
562
+ eventDeliverySubRouter .Route ("/deliveryattempts" , func (deliveryRouter chi.Router ) {
563
+ deliveryRouter .Get ("/" , handler .GetDeliveryAttempts )
564
+ deliveryRouter .Get ("/{deliveryAttemptID}" , handler .GetDeliveryAttempt )
565
+ })
566
+ })
567
+ })
568
+ })
569
+ })
570
+ })
571
+ })
572
+ })
573
+
574
+ // Portal Link API.
575
+ router .Route ("/portal-api" , func (portalLinkRouter chi.Router ) {
576
+ portalLinkRouter .Use (middleware .JsonResponse )
577
+ portalLinkRouter .Use (middleware .SetupCORS )
578
+ portalLinkRouter .Use (middleware .RequireAuth ())
579
+
580
+ portalLinkRouter .Route ("/events" , func (eventRouter chi.Router ) {
581
+ eventRouter .Post ("/" , handler .CreateEndpointEvent )
582
+ eventRouter .With (middleware .Pagination ).Get ("/" , handler .GetEventsPaged )
583
+ eventRouter .Post ("/batchreplay" , handler .BatchReplayEvents )
584
+ eventRouter .Get ("/countbatchreplayevents" , handler .CountAffectedEvents )
585
+
586
+ eventRouter .Route ("/{eventID}" , func (eventSubRouter chi.Router ) {
587
+ eventSubRouter .Get ("/" , handler .GetEndpointEvent )
588
+ eventSubRouter .Put ("/replay" , handler .ReplayEndpointEvent )
589
+ })
590
+ })
591
+
425
592
portalLinkRouter .Route ("/eventdeliveries" , func (eventDeliveryRouter chi.Router ) {
426
593
eventDeliveryRouter .With (middleware .Pagination ).Get ("/" , handler .GetEventDeliveriesPaged )
427
594
eventDeliveryRouter .Post ("/forceresend" , handler .ForceResendEventDeliveries )
@@ -440,12 +607,6 @@ func (a *ApplicationHandler) BuildRoutes() *chi.Mux {
440
607
})
441
608
})
442
609
443
- router .Handle ("/queue/monitoring/*" , a .A .Queue .(* redisqueue.RedisQueue ).Monitor ())
444
- router .Handle ("/metrics" , promhttp .HandlerFor (metrics .Reg (), promhttp.HandlerOpts {}))
445
- router .HandleFunc ("/*" , reactRootHandler )
446
-
447
- metrics .RegisterQueueMetrics (a .A .Queue )
448
- prometheus .MustRegister (metrics .RequestDuration ())
449
610
a .Router = router
450
611
451
612
return router
0 commit comments