88 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package ozon
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"net/http"
 | 
						|
 | 
						|
	core "git.denco.store/fakz9/ozon-api-client"
 | 
						|
)
 | 
						|
 | 
						|
type Polygons struct {
 | 
						|
	client *core.Client
 | 
						|
}
 | 
						|
 | 
						|
type CreateDeliveryPolygonParams struct {
 | 
						|
	// Delivery polygon coordinates in [[[lat long]]] format
 | 
						|
	Coordinates string `json:"coordinates"`
 | 
						|
}
 | 
						|
 | 
						|
type CreateDeliveryPolygonResponse struct {
 | 
						|
	core.CommonResponse
 | 
						|
 | 
						|
	// Polygon identifier
 | 
						|
	PolygonId int64 `json:"polygon_id"`
 | 
						|
}
 | 
						|
 | 
						|
// You can link a polygon to the delivery method.
 | 
						|
//
 | 
						|
// Create a polygon getting its coordinates on https://geojson.io: mark at least 3 points on the map and connect them
 | 
						|
func (c Polygons) CreateDelivery(ctx context.Context, params *CreateDeliveryPolygonParams) (*CreateDeliveryPolygonResponse, error) {
 | 
						|
	url := "/v1/polygon/create"
 | 
						|
 | 
						|
	resp := &CreateDeliveryPolygonResponse{}
 | 
						|
 | 
						|
	response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						|
 | 
						|
	return resp, nil
 | 
						|
}
 | 
						|
 | 
						|
type LinkDeliveryMethodToPolygonParams struct {
 | 
						|
	// Delivery method identifier
 | 
						|
	DeliveryMethodId int32 `json:"delivery_method_id"`
 | 
						|
 | 
						|
	// Polygons list
 | 
						|
	Polygons []LinkDeliveryMethodToPolygonPolygon `json:"polygons"`
 | 
						|
 | 
						|
	// Warehouse location
 | 
						|
	WarehouseLocation LinkDeliveryMethodToPolygonWarehouse `json:"warehouse_location"`
 | 
						|
}
 | 
						|
 | 
						|
type LinkDeliveryMethodToPolygonPolygon struct {
 | 
						|
	// Polygon identifier
 | 
						|
	PolygonId int64 `json:"polygon_id"`
 | 
						|
 | 
						|
	// Delivery time within polygon in minutes
 | 
						|
	Time int64 `json:"time"`
 | 
						|
}
 | 
						|
 | 
						|
type LinkDeliveryMethodToPolygonWarehouse struct {
 | 
						|
	// Warehouse location latitude
 | 
						|
	Latitude string `json:"lat"`
 | 
						|
 | 
						|
	// Warehouse location longitude
 | 
						|
	Longitude string `json:"log"`
 | 
						|
}
 | 
						|
 | 
						|
type LinkDeliveryMethodToPolygonResponse struct {
 | 
						|
	core.CommonResponse
 | 
						|
}
 | 
						|
 | 
						|
// Link delivery method to a delivery polygon
 | 
						|
func (c Polygons) Link(ctx context.Context, params *LinkDeliveryMethodToPolygonParams) (*LinkDeliveryMethodToPolygonResponse, error) {
 | 
						|
	url := "/v1/polygon/bind"
 | 
						|
 | 
						|
	resp := &LinkDeliveryMethodToPolygonResponse{}
 | 
						|
 | 
						|
	response, err := c.client.Request(ctx, http.MethodPost, url, params, resp, nil)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	response.CopyCommonResponse(&resp.CommonResponse)
 | 
						|
 | 
						|
	return resp, nil
 | 
						|
}
 |