1- using MessagePack . AspNetCoreMvcFormatter ;
1+ using MessagePack . AspNetCoreMvcFormatter ;
22using Microsoft . AspNetCore . Builder ;
33using Microsoft . AspNetCore . Http ;
44using Microsoft . AspNetCore . Mvc ;
1313
1414namespace CoreSync . Http . Server ;
1515
16+ /// <summary>
17+ /// Extension methods for mapping CoreSync HTTP server endpoints in an ASP.NET Core application.
18+ /// </summary>
1619public static class WebApplicationExtensions
1720{
21+ /// <summary>
22+ /// Maps all CoreSync synchronization endpoints on the specified <see cref="WebApplication"/>.
23+ /// </summary>
24+ /// <param name="webApplication">The web application to add endpoints to.</param>
25+ /// <param name="route">The route prefix for all sync endpoints. Defaults to <c>"api/sync-agent"</c>.</param>
26+ /// <param name="optionsConfigure">An optional action to configure per-endpoint options via <see cref="SyncControllerOptions"/>.</param>
27+ /// <exception cref="ArgumentException"><paramref name="route"/> is <c>null</c>, empty, or whitespace.</exception>
1828 public static void UseCoreSyncHttpServer ( this WebApplication webApplication , string route = "api/sync-agent" , Action < SyncControllerOptions > ? optionsConfigure = null )
1929 {
2030 webApplication . MapCoreSyncHttpServerEndpoints ( route , optionsConfigure ) ;
2131 }
2232
33+ /// <summary>
34+ /// Maps all CoreSync synchronization endpoints on the specified <see cref="IEndpointRouteBuilder"/>.
35+ /// Use this overload when configuring endpoints outside of <see cref="WebApplication"/> (e.g., inside route groups).
36+ /// </summary>
37+ /// <param name="webApplication">The endpoint route builder to add endpoints to.</param>
38+ /// <param name="route">The route prefix for all sync endpoints. Defaults to <c>"api/sync-agent"</c>.</param>
39+ /// <param name="optionsConfigure">An optional action to configure per-endpoint options via <see cref="SyncControllerOptions"/>.</param>
40+ /// <exception cref="ArgumentException"><paramref name="route"/> is <c>null</c>, empty, or whitespace.</exception>
2341 public static void MapCoreSyncHttpServerEndpoints ( this IEndpointRouteBuilder webApplication , string route = "api/sync-agent" , Action < SyncControllerOptions > ? optionsConfigure = null )
2442 {
2543 if ( string . IsNullOrWhiteSpace ( route ) )
@@ -36,18 +54,18 @@ void ConfigureEndpoint<T>(T endpoint, Action<T>? specificAction = null) where T
3654 specificAction ? . Invoke ( endpoint ) ;
3755 }
3856
39- var getStoreEndPoint = webApplication . MapGet ( $ "/{ route } /store-id",
40- ( [ FromServices ] SyncAgentController controller )
57+ var getStoreEndPoint = webApplication . MapGet ( $ "/{ route } /store-id",
58+ ( [ FromServices ] SyncAgentController controller )
4159 => controller . GetStoreIdAsync ( ) ) ;
4260 ConfigureEndpoint ( getStoreEndPoint , options . GetStoreIdEndpoint ) ;
4361
44- var getBulkChangeSetAsyncEndPoint = webApplication . MapGet ( $ "/{ route } /changes-bulk/{{storeId}}",
62+ var getBulkChangeSetAsyncEndPoint = webApplication . MapGet ( $ "/{ route } /changes-bulk/{{storeId}}",
4563 ( string storeId , [ FromServices ] SyncAgentController controller )
4664 => controller . GetBulkChangeSetAsync ( Guid . Parse ( storeId ) ) ) ;
4765 ConfigureEndpoint ( getBulkChangeSetAsyncEndPoint , options . GetBulkChangeSetAsyncEndPoint ) ;
4866
4967 var getBulkChangeSetItemEndPoint = webApplication . MapGet (
50- $ "/{ route } /changes-bulk-item/{{sessionId}}/{{skip}}/{{take}}",
68+ $ "/{ route } /changes-bulk-item/{{sessionId}}/{{skip}}/{{take}}",
5169 ( string sessionId , int skip , int take , [ FromServices ] SyncAgentController controller )
5270 => controller . GetBulkChangeSetItem ( new BulkChangeSetDownloadItem
5371 {
@@ -72,14 +90,14 @@ void ConfigureEndpoint<T>(T endpoint, Action<T>? specificAction = null) where T
7290 ConfigureEndpoint ( getBulkChangeSetItemBinaryEndPoint , options . GetBulkChangeSetItemBinaryEndPoint ) ;
7391
7492 var postBeginApplyBulkChangesEndPoint = webApplication . MapPost (
75- $ "/{ route } /changes-bulk-begin",
76- ( [ FromBody ] BulkSyncChangeSet bulkChangeSet , [ FromServices ] SyncAgentController controller )
93+ $ "/{ route } /changes-bulk-begin",
94+ ( [ FromBody ] BulkSyncChangeSet bulkChangeSet , [ FromServices ] SyncAgentController controller )
7795 => controller . BeginApplyBulkChanges ( bulkChangeSet ) ) ;
7896
7997 ConfigureEndpoint ( postBeginApplyBulkChangesEndPoint , options . PostBeginApplyBulkChangesEndPoint ) ;
8098
8199 var postApplyBulkChangesItemEndPoint = webApplication . MapPost (
82- $ "/{ route } /changes-bulk-item",
100+ $ "/{ route } /changes-bulk-item",
83101 ( [ FromBody ] BulkChangeSetUploadItem bulkUploadItem , [ FromServices ] SyncAgentController controller )
84102 => controller . ApplyBulkChangesItem ( bulkUploadItem ) ) ;
85103 ConfigureEndpoint ( postApplyBulkChangesItemEndPoint , options . PostApplyBulkChangesItemEndPoint ) ;
@@ -92,8 +110,8 @@ void ConfigureEndpoint<T>(T endpoint, Action<T>? specificAction = null) where T
92110 ConfigureEndpoint ( postApplyBulkChangesItemBinaryEndPoint , options . PostApplyBulkChangesItemBinaryEndPoint ) ;
93111
94112 var postCompleteApplyBulkChangesAsyncEndPoint = webApplication . MapPost (
95- $ "/{ route } /changes-bulk-complete/{{sessionId}}",
96- ( string sessionId , [ FromServices ] SyncAgentController controller )
113+ $ "/{ route } /changes-bulk-complete/{{sessionId}}",
114+ ( string sessionId , [ FromServices ] SyncAgentController controller )
97115 => controller . CompleteApplyBulkChangesAsync ( Guid . Parse ( sessionId ) ) ) ;
98116 ConfigureEndpoint ( postCompleteApplyBulkChangesAsyncEndPoint , options . PostCompleteApplyBulkChangesAsyncEndPoint ) ;
99117
@@ -104,8 +122,8 @@ void ConfigureEndpoint<T>(T endpoint, Action<T>? specificAction = null) where T
104122 ConfigureEndpoint ( postCompleteApplyBulkChangesBinaryAsyncEndPoint , options . PostCompleteApplyBulkChangesBinaryAsyncEndPoint ) ;
105123
106124 var postSaveVersionForStoreAsyncEndPoint = webApplication . MapPost (
107- $ "/{ route } /save-version/{{storeId}}/{{version}}",
108- ( string storeId , long version , [ FromServices ] SyncAgentController controller )
125+ $ "/{ route } /save-version/{{storeId}}/{{version}}",
126+ ( string storeId , long version , [ FromServices ] SyncAgentController controller )
109127 => controller . SaveVersionForStoreAsync ( Guid . Parse ( storeId ) , version ) ) ;
110128 ConfigureEndpoint ( postSaveVersionForStoreAsyncEndPoint , options . PostSaveVersionForStoreAsyncEndPoint ) ;
111129 }
@@ -154,4 +172,4 @@ await messagePackFormatter.WriteAsync(new OutputFormatterWriteContext(
154172 return builder ;
155173 }
156174
157- }
175+ }
0 commit comments