Context is needed to limit time of execution of a method. Previously, context was passed to structure and it was stored inside structure which is a bad practice. Now we need to pass context to function, which is a best practice
95 lines
2.7 KiB
Markdown
95 lines
2.7 KiB
Markdown
# Ozon Seller API Client
|
|
A Ozon Seller API client written in Golang
|
|
|
|
[](https://coveralls.io/github/diPhantxm/ozon-api-client)
|
|

|
|
|
|
[Ozon](https://ozon.ru) is a marketplace for small and medium enterprises to launch and grow their businesses in Russia.
|
|
|
|
Read full [documentation](https://docs.ozon.ru/api/seller/en/#tag/Introduction)
|
|
|
|
You can check [list of supported endpoints](ENDPOINTS.md)
|
|
|
|
## How to start
|
|
### API
|
|
Get Client-Id and Api-Key in your seller profile [here](https://seller.ozon.ru/app/settings/api-keys?locale=en)
|
|
|
|
Just add dependency to your project and you're ready to go.
|
|
```bash
|
|
go get github.com/diphantxm/ozon-api-client
|
|
```
|
|
A simple example on how to use this library:
|
|
```Golang
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/diphantxm/ozon-api-client/ozon"
|
|
)
|
|
|
|
func main() {
|
|
// Create a client with your Client-Id and Api-Key
|
|
// [Documentation]: https://docs.ozon.ru/api/seller/en/#tag/Auth
|
|
client := ozon.NewClient("my-client-id", "my-api-key")
|
|
|
|
// Send request with parameters
|
|
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
|
|
resp, err := client.Products().GetProductDetails(&ozon.GetProductDetailsParams{
|
|
ProductId: 123456789,
|
|
})
|
|
if err != nil || resp.StatusCode != http.StatusOK {
|
|
log.Fatalf("error when getting product details: %s", err)
|
|
}
|
|
|
|
// Do some stuff
|
|
for _, d := range resp.Result.Barcodes {
|
|
fmt.Printf("Barcode %s\n", d)
|
|
}
|
|
}
|
|
```
|
|
|
|
### Notifications
|
|
Ozon can send push-notifications to your REST server. There is an implementation of REST server that handles notifications in this library.
|
|
|
|
[Official documentation](https://docs.ozon.ru/api/seller/en/#tag/push_intro)
|
|
|
|
How to use:
|
|
```Golang
|
|
package main
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/diphantxm/ozon-api-client/ozon/notifications"
|
|
)
|
|
|
|
func main() {
|
|
// Create server
|
|
port := 5000
|
|
server := notifications.NewNotificationServer(port)
|
|
|
|
// Register handlers passing message type and handler itself
|
|
server.Register(notifications.ChatClosedType, func(req interface{}) error {
|
|
notification := req.(*notifications.ChatClosed)
|
|
|
|
// Do something with the notification here...
|
|
log.Printf("chat %s has been closed\n", notification.ChatId)
|
|
|
|
return nil
|
|
})
|
|
|
|
// Run server
|
|
if err := server.Run(); err != nil {
|
|
log.Printf("error while running notification server: %s", err)
|
|
}
|
|
}
|
|
```
|
|
|
|
## Contribution
|
|
If you need some endpoints ASAP, create an issue and list all the endpoints. I will add them to library soon.
|
|
|
|
Or you can implement them and contribute to the project. Contribution to the project is welcome.
|