Skip to content

Commit

Permalink
refactor: clean responses in Conversations
Browse files Browse the repository at this point in the history
  • Loading branch information
Tr00d committed Jun 12, 2024
1 parent b43cf1f commit 5202a45
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 51 deletions.
21 changes: 10 additions & 11 deletions Vonage/Conversations/GetConversations/GetConversationsResponse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,19 +46,11 @@ public Result<GetConversationsRequest> 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);
Expand All @@ -77,5 +69,12 @@ private record QueryParameters(
int PageSize,
FetchOrder Order,
Maybe<DateTimeOffset> StartDate,
Maybe<DateTimeOffset> EndDate);
Maybe<DateTimeOffset> EndDate)
{
public IBuilderForOptional ApplyOptionalStartDate(IBuilderForOptional builder) =>
this.StartDate.Match(builder.WithStartDate, () => builder);

public IBuilderForOptional ApplyOptionalEndDate(IBuilderForOptional builder) =>
this.EndDate.Match(builder.WithEndDate, () => builder);
}
}
39 changes: 18 additions & 21 deletions Vonage/Conversations/GetEvents/GetEventsResponse.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,29 +40,13 @@ public Result<GetEventsRequest> 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);
Expand Down Expand Up @@ -91,5 +75,18 @@ private record QueryParameters(
Maybe<string> StartId,
Maybe<string> EndId,
Maybe<string> 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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,27 +43,13 @@ public Result<GetUserConversationsRequest> 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);
Expand All @@ -90,5 +76,18 @@ private record QueryParameters(
Maybe<string> OrderBy,
Maybe<DateTimeOffset> StartDate,
Maybe<bool> IncludeCustomData,
Maybe<State> State);
Maybe<State> 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);
}
}

0 comments on commit 5202a45

Please sign in to comment.