add webhook util for onpoint

This commit is contained in:
Sinh 2022-09-19 14:34:55 +07:00
parent 5f58965975
commit 26390c4633
4 changed files with 62 additions and 14 deletions

View File

@ -11,6 +11,9 @@ const (
headerXAPIKey = "x-api-key"
headerXTimestamp = "x-timestamp"
headerXSignature = "x-signature"
webhookEventUpdateOrderStatus = "update_order_status"
webhookEventUpdateInventory = "update_inventory"
)
var (

View File

@ -1,6 +1,10 @@
package onpoint
import "time"
import (
"time"
"github.com/Selly-Modules/3pl/util/pjson"
)
/*
* Request payload
@ -55,13 +59,6 @@ type CancelOrderRequest struct {
* WEBHOOK ONPOINT
*/
// WebhookPayload ...
type WebhookPayload struct {
Event string `json:"event"`
RequestedAt time.Time `json:"requested_at"`
Data interface{} `json:"data"`
}
// WebhookDataUpdateInventory ...
type WebhookDataUpdateInventory struct {
Sku string `json:"sku"`
@ -81,3 +78,40 @@ type WebhookDataUpdateOrderStatus struct {
DeliveryStatus string `json:"delivery_status"`
UpdatedAt time.Time `json:"updated_at"`
}
// WebhookPayload ...
type WebhookPayload struct {
Event string `json:"event"`
RequestedAt time.Time `json:"requested_at"`
Data interface{} `json:"data"`
}
// GetDataEventUpdateOrderStatus ...
func (p WebhookPayload) GetDataEventUpdateOrderStatus() (data *WebhookDataUpdateOrderStatus, ok bool) {
if p.Event != webhookEventUpdateOrderStatus {
return nil, false
}
b, err := pjson.Marshal(p.Data)
if err != nil {
return nil, false
}
if err = pjson.Unmarshal(b, &data); err != nil {
return nil, false
}
return data, true
}
// GetDataEventUpdateInventory ...
func (p WebhookPayload) GetDataEventUpdateInventory() (data *WebhookDataUpdateInventory, ok bool) {
if p.Event != webhookEventUpdateInventory {
return nil, false
}
b, err := pjson.Marshal(p.Data)
if err != nil {
return nil, false
}
if err = pjson.Unmarshal(b, &data); err != nil {
return nil, false
}
return data, true
}

15
util/pjson/marshal.go Normal file
View File

@ -0,0 +1,15 @@
package pjson
import (
"encoding/json"
"log"
)
// Marshal ...
func Marshal(data interface{}) ([]byte, error) {
b, err := json.Marshal(data)
if err != nil {
log.Printf("3pl/util/pjson.Marshal: err %v, payload %v", err, data)
}
return b, err
}

View File

@ -2,18 +2,14 @@ package pjson
import (
"encoding/json"
"github.com/Selly-Modules/logger"
"log"
)
// Unmarshal ...
func Unmarshal(b []byte, resultP interface{}) error {
err := json.Unmarshal(b, resultP)
if err != nil {
logger.Error("pjson.Unmarshal", logger.LogData{
"raw": string(b),
"err": err.Error(),
})
log.Printf("3pl/util/pjson.Unmarshal: err %v, payload %s", err, string(b))
}
return err
}