Skip to content

Commit

Permalink
custom date type for /v1/analytics/data
Browse files Browse the repository at this point in the history
  • Loading branch information
o.tyurin committed Apr 27, 2024
1 parent 7ff9e4b commit 4c3799e
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 6 deletions.
31 changes: 31 additions & 0 deletions core.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"net/http"
"reflect"
"strconv"
"strings"
"testing"
"time"
)
Expand Down Expand Up @@ -162,3 +163,33 @@ func TimeFromString(t *testing.T, format, datetime string) time.Time {
}
return dt
}

const LayoutRequestDateDefault = "2006-01-02"

type RequestDate struct {
time.Time
layout string
}

func NewRequestDate(t time.Time, layout string) *RequestDate {
return &RequestDate{
Time: t,
layout: layout,
}
}

func (rd *RequestDate) UnmarshalJSON(b []byte) (err error) {
s := strings.Trim(string(b), `"`) // remove quotes
if s == "null" {
return
}
rd.Time, err = time.Parse(rd.layout, s)
return
}

func (rd *RequestDate) MarshalJSON() ([]byte, error) {
if rd.Time.IsZero() {
return nil, nil
}
return []byte(fmt.Sprintf(`"%s"`, rd.Time.Format(rd.layout))), nil
}
5 changes: 2 additions & 3 deletions ozon/analytics.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package ozon
import (
"context"
"net/http"
"time"

core "github.com/diphantxm/ozon-api-client"
)
Expand All @@ -14,10 +13,10 @@ type Analytics struct {

type GetAnalyticsDataParams struct {
// Date from which the data will be in the report
DateFrom time.Time `json:"date_from"`
DateFrom *core.RequestDate `json:"date_from"`

// Date up to which the data will be in the report
DateTo time.Time `json:"date_to"`
DateTo *core.RequestDate `json:"date_to"`

// Items Enum: "unknownDimension" "sku" "spu" "day" "week" "month" "year" "category1" "category2" "category3" "category4" "brand" "modelID"
// Data grouping available to all sellers:
Expand Down
5 changes: 3 additions & 2 deletions ozon/analytics_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"net/http"
"testing"
"time"

core "github.com/diphantxm/ozon-api-client"
)
Expand All @@ -22,8 +23,8 @@ func TestGetAnalyticsData(t *testing.T) {
http.StatusOK,
map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"},
&GetAnalyticsDataParams{
DateFrom: core.TimeFromString(t, "2006-01-02", "2020-09-01"),
DateTo: core.TimeFromString(t, "2006-01-02", "2021-10-15"),
DateFrom: core.NewRequestDate(time.Now().Add(time.Duration(30)*24*time.Hour), core.LayoutRequestDateDefault),
DateTo: core.NewRequestDate(time.Now(), core.LayoutRequestDateDefault),
Dimension: []GetAnalyticsDataDimension{SKUDimension, DayDimension},
Metrics: []GetAnalyticsDataFilterMetric{HistViewPDP},
Sort: []GetAnalyticsDataSort{
Expand Down
4 changes: 3 additions & 1 deletion ozon/common.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package ozon

import "time"
import (
"time"
)

const (
testTimeout = 5 * time.Second
Expand Down

0 comments on commit 4c3799e

Please sign in to comment.