From 5202a453ac4f39548cdcb21012a5fd83e117b710 Mon Sep 17 00:00:00 2001 From: tr00d Date: Wed, 12 Jun 2024 16:05:57 +0200 Subject: [PATCH] refactor: clean responses in Conversations --- .../GetConversationsResponse.cs | 21 +++++----- .../GetEvents/GetEventsResponse.cs | 39 +++++++++---------- .../GetUserConversationsResponse.cs | 37 +++++++++--------- 3 files changed, 46 insertions(+), 51 deletions(-) diff --git a/Vonage/Conversations/GetConversations/GetConversationsResponse.cs b/Vonage/Conversations/GetConversations/GetConversationsResponse.cs index 739845420..429891ab8 100644 --- a/Vonage/Conversations/GetConversations/GetConversationsResponse.cs +++ b/Vonage/Conversations/GetConversations/GetConversationsResponse.cs @@ -46,19 +46,11 @@ public Result BuildRequest() var builder = new GetConversationsRequestBuilder(parameters.Cursor) .WithPageSize(parameters.PageSize) .WithOrder(parameters.Order); - builder = ApplyOptionalStartDate(parameters, builder); - builder = ApplyOptionalEndDate(parameters, builder); + builder = parameters.ApplyOptionalStartDate(builder); + builder = parameters.ApplyOptionalEndDate(builder); return builder.Create(); } - private static IBuilderForOptional - ApplyOptionalStartDate(QueryParameters parameters, IBuilderForOptional builder) => - parameters.StartDate.Match(builder.WithStartDate, () => builder); - - private static IBuilderForOptional - ApplyOptionalEndDate(QueryParameters parameters, IBuilderForOptional builder) => - parameters.EndDate.Match(builder.WithEndDate, () => builder); - private static QueryParameters ExtractQueryParameters(Uri uri) { var queryParameters = HttpUtility.ParseQueryString(uri.Query); @@ -77,5 +69,12 @@ private record QueryParameters( int PageSize, FetchOrder Order, Maybe StartDate, - Maybe EndDate); + Maybe EndDate) + { + public IBuilderForOptional ApplyOptionalStartDate(IBuilderForOptional builder) => + this.StartDate.Match(builder.WithStartDate, () => builder); + + public IBuilderForOptional ApplyOptionalEndDate(IBuilderForOptional builder) => + this.EndDate.Match(builder.WithEndDate, () => builder); + } } \ No newline at end of file diff --git a/Vonage/Conversations/GetEvents/GetEventsResponse.cs b/Vonage/Conversations/GetEvents/GetEventsResponse.cs index c312b3470..943f652d9 100644 --- a/Vonage/Conversations/GetEvents/GetEventsResponse.cs +++ b/Vonage/Conversations/GetEvents/GetEventsResponse.cs @@ -40,29 +40,13 @@ public Result BuildRequest() .WithConversationId(parameters.ConversationId) .WithPageSize(parameters.PageSize) .WithOrder(parameters.Order); - builder = ApplyOptionalStartId(parameters, builder); - builder = ApplyOptionalEndDate(parameters, builder); - builder = ApplyOptionalEventType(parameters, builder); - builder = ExcludeDeletedEvents(parameters, builder); + builder = parameters.ApplyOptionalStartId(builder); + builder = parameters.ApplyOptionalEndDate(builder); + builder = parameters.ApplyOptionalEventType(builder); + builder = parameters.ApplyExcludeDeletedEvents(builder); return builder.Create(); } - private static IBuilderForOptional - ApplyOptionalStartId(QueryParameters parameters, IBuilderForOptional builder) => - parameters.StartId.Match(builder.WithStartId, () => builder); - - private static IBuilderForOptional - ApplyOptionalEndDate(QueryParameters parameters, IBuilderForOptional builder) => - parameters.EndId.Match(builder.WithEndId, () => builder); - - private static IBuilderForOptional - ApplyOptionalEventType(QueryParameters parameters, IBuilderForOptional builder) => - parameters.EventType.Match(builder.WithEventType, () => builder); - - private static IBuilderForOptional - ExcludeDeletedEvents(QueryParameters parameters, IBuilderForOptional builder) => - parameters.ExcludeDeletedEvents ? builder.ExcludeDeletedEvents() : builder; - private static QueryParameters ExtractQueryParameters(Uri uri) { var queryParameters = HttpUtility.ParseQueryString(uri.Query); @@ -91,5 +75,18 @@ private record QueryParameters( Maybe StartId, Maybe EndId, Maybe EventType, - bool ExcludeDeletedEvents); + bool ExcludeDeletedEvents) + { + public IBuilderForOptional ApplyOptionalStartId(IBuilderForOptional builder) => + this.StartId.Match(builder.WithStartId, () => builder); + + public IBuilderForOptional ApplyOptionalEndDate(IBuilderForOptional builder) => + this.EndId.Match(builder.WithEndId, () => builder); + + public IBuilderForOptional ApplyOptionalEventType(IBuilderForOptional builder) => + this.EventType.Match(builder.WithEventType, () => builder); + + public IBuilderForOptional ApplyExcludeDeletedEvents(IBuilderForOptional builder) => + this.ExcludeDeletedEvents ? builder.ExcludeDeletedEvents() : builder; + } } \ No newline at end of file diff --git a/Vonage/Conversations/GetUserConversations/GetUserConversationsResponse.cs b/Vonage/Conversations/GetUserConversations/GetUserConversationsResponse.cs index b609b727d..b6132a180 100644 --- a/Vonage/Conversations/GetUserConversations/GetUserConversationsResponse.cs +++ b/Vonage/Conversations/GetUserConversations/GetUserConversationsResponse.cs @@ -43,27 +43,13 @@ public Result BuildRequest() .WithUserId(parameters.UserId) .WithPageSize(parameters.PageSize) .WithOrder(parameters.Order); - builder = ApplyOptionalOrderBy(parameters, builder); - builder = ApplyOptionalStartDate(parameters, builder); - builder = ApplyOptionalState(parameters, builder); - builder = ApplyOptionalIncludeCustomData(parameters, builder); + builder = parameters.ApplyOptionalOrderBy(builder); + builder = parameters.ApplyOptionalStartDate(builder); + builder = parameters.ApplyOptionalState(builder); + builder = parameters.ApplyOptionalIncludeCustomData(builder); return builder.Create(); } - private static IBuilderForOptional - ApplyOptionalIncludeCustomData(QueryParameters parameters, IBuilderForOptional builder) => - parameters.IncludeCustomData.IfNone(false) ? builder.IncludeCustomData() : builder; - - private static IBuilderForOptional ApplyOptionalState(QueryParameters parameters, IBuilderForOptional builder) => - parameters.State.Match(builder.WithState, () => builder); - - private static IBuilderForOptional - ApplyOptionalStartDate(QueryParameters parameters, IBuilderForOptional builder) => - parameters.StartDate.Match(builder.WithStartDate, () => builder); - - private static IBuilderForOptional ApplyOptionalOrderBy(QueryParameters parameters, IBuilderForOptional builder) => - parameters.OrderBy.Match(builder.WithOrderBy, () => builder); - private static QueryParameters ExtractQueryParameters(Uri uri) { var queryParameters = HttpUtility.ParseQueryString(uri.Query); @@ -90,5 +76,18 @@ private record QueryParameters( Maybe OrderBy, Maybe StartDate, Maybe IncludeCustomData, - Maybe State); + Maybe State) + { + public IBuilderForOptional ApplyOptionalIncludeCustomData(IBuilderForOptional builder) => + this.IncludeCustomData.IfNone(false) ? builder.IncludeCustomData() : builder; + + public IBuilderForOptional ApplyOptionalState(IBuilderForOptional builder) => + this.State.Match(builder.WithState, () => builder); + + public IBuilderForOptional ApplyOptionalStartDate(IBuilderForOptional builder) => + this.StartDate.Match(builder.WithStartDate, () => builder); + + public IBuilderForOptional ApplyOptionalOrderBy(IBuilderForOptional builder) => + this.OrderBy.Match(builder.WithOrderBy, () => builder); + } } \ No newline at end of file