Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix incorrect value for azuredevops.Time when using in query parameter #81

Merged
merged 3 commits into from
Aug 23, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions azuredevops/audit/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@ func (client *ClientImpl) DownloadLog(ctx context.Context, args DownloadLogArgs)
}
queryParams.Add("format", *args.Format)
if args.StartTime != nil {
queryParams.Add("startTime", (*args.StartTime).String())
queryParams.Add("startTime", (*args.StartTime).AsQueryParameter())
}
if args.EndTime != nil {
queryParams.Add("endTime", (*args.EndTime).String())
queryParams.Add("endTime", (*args.EndTime).AsQueryParameter())
}
locationId, _ := uuid.Parse("b7b98a76-04e8-4f4d-ac72-9d46492caaac")
resp, err := client.Client.Send(ctx, http.MethodGet, locationId, "5.1-preview.1", nil, queryParams, nil, "", "application/octet-stream", nil)
Expand All @@ -77,10 +77,10 @@ type DownloadLogArgs struct {
func (client *ClientImpl) QueryLog(ctx context.Context, args QueryLogArgs) (*AuditLogQueryResult, error) {
queryParams := url.Values{}
if args.StartTime != nil {
queryParams.Add("startTime", (*args.StartTime).String())
queryParams.Add("startTime", (*args.StartTime).AsQueryParameter())
}
if args.EndTime != nil {
queryParams.Add("endTime", (*args.EndTime).String())
queryParams.Add("endTime", (*args.EndTime).AsQueryParameter())
}
if args.BatchSize != nil {
queryParams.Add("batchSize", strconv.Itoa(*args.BatchSize))
Expand Down
12 changes: 6 additions & 6 deletions azuredevops/build/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -1524,10 +1524,10 @@ func (client *ClientImpl) GetBuilds(ctx context.Context, args GetBuildsArgs) (*G
queryParams.Add("buildNumber", *args.BuildNumber)
}
if args.MinTime != nil {
queryParams.Add("minTime", (*args.MinTime).String())
queryParams.Add("minTime", (*args.MinTime).AsQueryParameter())
}
if args.MaxTime != nil {
queryParams.Add("maxTime", (*args.MaxTime).String())
queryParams.Add("maxTime", (*args.MaxTime).AsQueryParameter())
}
if args.RequestedFor != nil {
queryParams.Add("requestedFor", *args.RequestedFor)
Expand Down Expand Up @@ -1889,7 +1889,7 @@ func (client *ClientImpl) GetDefinition(ctx context.Context, args GetDefinitionA
queryParams.Add("revision", strconv.Itoa(*args.Revision))
}
if args.MinMetricsTime != nil {
queryParams.Add("minMetricsTime", (*args.MinMetricsTime).String())
queryParams.Add("minMetricsTime", (*args.MinMetricsTime).AsQueryParameter())
}
if args.PropertyFilters != nil {
listAsString := strings.Join((*args.PropertyFilters)[:], ",")
Expand Down Expand Up @@ -1939,7 +1939,7 @@ func (client *ClientImpl) GetDefinitionMetrics(ctx context.Context, args GetDefi

queryParams := url.Values{}
if args.MinMetricsTime != nil {
queryParams.Add("minMetricsTime", (*args.MinMetricsTime).String())
queryParams.Add("minMetricsTime", (*args.MinMetricsTime).AsQueryParameter())
}
locationId, _ := uuid.Parse("d973b939-0ce0-4fec-91d8-da3940fa1827")
resp, err := client.Client.Send(ctx, http.MethodGet, locationId, "5.1-preview.1", routeValues, queryParams, nil, "", "application/json", nil)
Expand Down Expand Up @@ -2090,7 +2090,7 @@ func (client *ClientImpl) GetDefinitions(ctx context.Context, args GetDefinition
queryParams.Add("continuationToken", *args.ContinuationToken)
}
if args.MinMetricsTime != nil {
queryParams.Add("minMetricsTime", (*args.MinMetricsTime).String())
queryParams.Add("minMetricsTime", (*args.MinMetricsTime).AsQueryParameter())
}
if args.DefinitionIds != nil {
var stringList []string
Expand Down Expand Up @@ -2454,7 +2454,7 @@ func (client *ClientImpl) GetProjectMetrics(ctx context.Context, args GetProject

queryParams := url.Values{}
if args.MinMetricsTime != nil {
queryParams.Add("minMetricsTime", (*args.MinMetricsTime).String())
queryParams.Add("minMetricsTime", (*args.MinMetricsTime).AsQueryParameter())
}
locationId, _ := uuid.Parse("7433fae7-a6bc-41dc-a6e2-eef9005ce41a")
resp, err := client.Client.Send(ctx, http.MethodGet, locationId, "5.1-preview.1", routeValues, queryParams, nil, "", "application/json", nil)
Expand Down
5 changes: 5 additions & 0 deletions azuredevops/models.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,11 @@ func (t *Time) MarshalJSON() ([]byte, error) {
return json.Marshal(t.Time)
}

// AsQueryParameter formats time value for query parameter usage.
func (t Time) AsQueryParameter() string {
return t.Time.Format(time.RFC3339)
}

func (t Time) String() string {
return t.Time.String()
}
Expand Down
15 changes: 15 additions & 0 deletions azuredevops/models_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,21 @@ func TestModels_Marshal_Unmarshal_Time(t *testing.T) {
}
}

func TestModels_Time_AsQueryParameter(t *testing.T) {
tt := &Time{
// NOTE: set nsec to 0 to avoid precision loss
Time: time.Date(2006, 1, 2, 3, 4, 5, 0, time.UTC),
}
queryParameterValue := tt.AsQueryParameter()
parsedTime, err := time.Parse(time.RFC3339, queryParameterValue)
if err != nil {
t.Errorf("invalid query parameter %s value for time: %s", tt.Time, queryParameterValue)
}
if !tt.Time.Equal(parsedTime) {
t.Errorf("should convert back to original value: %s %s", tt.Time, parsedTime)
}
}

type TestModel struct {
Id *uuid.UUID `json:"id,omitempty"`
Time1 *Time `json:"time1,omitempty"`
Expand Down
4 changes: 2 additions & 2 deletions azuredevops/notification/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -289,10 +289,10 @@ func (client *ClientImpl) ListLogs(ctx context.Context, args ListLogsArgs) (*[]I

queryParams := url.Values{}
if args.StartTime != nil {
queryParams.Add("startTime", (*args.StartTime).String())
queryParams.Add("startTime", (*args.StartTime).AsQueryParameter())
}
if args.EndTime != nil {
queryParams.Add("endTime", (*args.EndTime).String())
queryParams.Add("endTime", (*args.EndTime).AsQueryParameter())
}
locationId, _ := uuid.Parse("991842f3-eb16-4aea-ac81-81353ef2b75c")
resp, err := client.Client.Send(ctx, http.MethodGet, locationId, "5.1", routeValues, queryParams, nil, "", "application/json", nil)
Expand Down
12 changes: 6 additions & 6 deletions azuredevops/release/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -402,10 +402,10 @@ func (client *ClientImpl) GetDeployments(ctx context.Context, args GetDeployment
queryParams.Add("createdBy", *args.CreatedBy)
}
if args.MinModifiedTime != nil {
queryParams.Add("minModifiedTime", (*args.MinModifiedTime).String())
queryParams.Add("minModifiedTime", (*args.MinModifiedTime).AsQueryParameter())
}
if args.MaxModifiedTime != nil {
queryParams.Add("maxModifiedTime", (*args.MaxModifiedTime).String())
queryParams.Add("maxModifiedTime", (*args.MaxModifiedTime).AsQueryParameter())
}
if args.DeploymentStatus != nil {
queryParams.Add("deploymentStatus", string(*args.DeploymentStatus))
Expand All @@ -429,10 +429,10 @@ func (client *ClientImpl) GetDeployments(ctx context.Context, args GetDeployment
queryParams.Add("createdFor", *args.CreatedFor)
}
if args.MinStartedTime != nil {
queryParams.Add("minStartedTime", (*args.MinStartedTime).String())
queryParams.Add("minStartedTime", (*args.MinStartedTime).AsQueryParameter())
}
if args.MaxStartedTime != nil {
queryParams.Add("maxStartedTime", (*args.MaxStartedTime).String())
queryParams.Add("maxStartedTime", (*args.MaxStartedTime).AsQueryParameter())
}
if args.SourceBranch != nil {
queryParams.Add("sourceBranch", *args.SourceBranch)
Expand Down Expand Up @@ -954,10 +954,10 @@ func (client *ClientImpl) GetReleases(ctx context.Context, args GetReleasesArgs)
queryParams.Add("environmentStatusFilter", strconv.Itoa(*args.EnvironmentStatusFilter))
}
if args.MinCreatedTime != nil {
queryParams.Add("minCreatedTime", (*args.MinCreatedTime).String())
queryParams.Add("minCreatedTime", (*args.MinCreatedTime).AsQueryParameter())
}
if args.MaxCreatedTime != nil {
queryParams.Add("maxCreatedTime", (*args.MaxCreatedTime).String())
queryParams.Add("maxCreatedTime", (*args.MaxCreatedTime).AsQueryParameter())
}
if args.QueryOrder != nil {
queryParams.Add("queryOrder", string(*args.QueryOrder))
Expand Down
6 changes: 3 additions & 3 deletions azuredevops/workitemtracking/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -1715,7 +1715,7 @@ func (client *ClientImpl) GetReportingLinksByLinkType(ctx context.Context, args
queryParams.Add("continuationToken", *args.ContinuationToken)
}
if args.StartDateTime != nil {
queryParams.Add("startDateTime", (*args.StartDateTime).String())
queryParams.Add("startDateTime", (*args.StartDateTime).AsQueryParameter())
}
locationId, _ := uuid.Parse("b5b5b6d0-0308-40a1-b3f4-b9bb3c66878f")
resp, err := client.Client.Send(ctx, http.MethodGet, locationId, "5.1", routeValues, queryParams, nil, "", "application/json", nil)
Expand Down Expand Up @@ -2774,7 +2774,7 @@ func (client *ClientImpl) ReadReportingRevisionsGet(ctx context.Context, args Re
queryParams.Add("continuationToken", *args.ContinuationToken)
}
if args.StartDateTime != nil {
queryParams.Add("startDateTime", (*args.StartDateTime).String())
queryParams.Add("startDateTime", (*args.StartDateTime).AsQueryParameter())
}
if args.IncludeIdentityRef != nil {
queryParams.Add("includeIdentityRef", strconv.FormatBool(*args.IncludeIdentityRef))
Expand Down Expand Up @@ -2851,7 +2851,7 @@ func (client *ClientImpl) ReadReportingRevisionsPost(ctx context.Context, args R
queryParams.Add("continuationToken", *args.ContinuationToken)
}
if args.StartDateTime != nil {
queryParams.Add("startDateTime", (*args.StartDateTime).String())
queryParams.Add("startDateTime", (*args.StartDateTime).AsQueryParameter())
}
if args.Expand != nil {
queryParams.Add("$expand", string(*args.Expand))
Expand Down