Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ba94a1d17f | |||
| fb2ba22f72 |
@@ -5,11 +5,10 @@ import (
|
|||||||
|
|
||||||
"git.ego.freeddns.org/egommerce/api-entities/basket"
|
"git.ego.freeddns.org/egommerce/api-entities/basket"
|
||||||
basket "git.ego.freeddns.org/egommerce/api-entities/basket/dto"
|
basket "git.ego.freeddns.org/egommerce/api-entities/basket/dto"
|
||||||
"github.com/go-redis/redis/v8"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewBasketAPI(ua string, redis *redis.Client) *BasketAPI {
|
func NewBasketAPI() *BasketAPI {
|
||||||
return &BasketAPI{NewHttpClient(ua, redis)}
|
return &BasketAPI{NewHttpClient()}
|
||||||
}
|
}
|
||||||
|
|
||||||
type BasketAPI struct {
|
type BasketAPI struct {
|
||||||
@@ -18,7 +17,7 @@ type BasketAPI struct {
|
|||||||
|
|
||||||
func (a *BasketAPI) GetBasket(basketID string) (*basket.GetBasketResponseDTO, error) {
|
func (a *BasketAPI) GetBasket(basketID string) (*basket.GetBasketResponseDTO, error) {
|
||||||
req := &basket.GetBasketRequestDTO{BasketID: basketID}
|
req := &basket.GetBasketRequestDTO{BasketID: basketID}
|
||||||
res := new(basket.GetBasketResponse)
|
res := new(basket.GetBasketResponseDTO)
|
||||||
if err := a.httpClient.SendGet("basket-svc", "/api/v1/basket", req, res); err != nil {
|
if err := a.httpClient.SendGet("basket-svc", "/api/v1/basket", req, res); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -27,9 +26,11 @@ func (a *BasketAPI) GetBasket(basketID string) (*basket.GetBasketResponseDTO, er
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *BasketAPI) GetBasketItems(basketID string) ([]*basket.GetBasketItemsResponseDTO, error) {
|
func (a *BasketAPI) GetBasketItems(basketID string) ([]*basket.GetBasketItemsResponseDTO, error) {
|
||||||
url := fmt.Sprintf("/api/v1/basket/%s/items", basketID)
|
url := fmt.Sprintf("/api/v1/basket/items")
|
||||||
|
req := basket.GetBasketItemsRequestDTO{BasketID: basketID}
|
||||||
var res []*basket.GetBasketItemsResponseDTO
|
var res []*basket.GetBasketItemsResponseDTO
|
||||||
if err := a.httpClient.SendGet("basket-svc", url, nil, &res); err != nil {
|
|
||||||
|
if err := a.httpClient.SendGet("basket-svc", url, req, &res); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,12 +59,12 @@ func (c *HttpClient) sendRequest(api, url, method string, data any) (*http.Respo
|
|||||||
}
|
}
|
||||||
|
|
||||||
req.Header.Set("Content-Type", "application/json")
|
req.Header.Set("Content-Type", "application/json")
|
||||||
req.Header.Set("User-Agent", c.ua)
|
req.Header.Set("User-Agent", c.userAgent)
|
||||||
res, err := client.Do(req)
|
res, err := client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
// defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
|
|
||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,10 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
def "git.pbiernat.io/egommerce/api-entities/http"
|
def "git.pbiernat.io/egommerce/api-entities/http"
|
||||||
"github.com/go-redis/redis/v8"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewPricingAPI(ua string, redis *redis.Client) *PricingAPI {
|
func NewPricingAPI() *PricingAPI {
|
||||||
return &PricingAPI{NewHttpClient(ua, redis)}
|
return &PricingAPI{NewHttpClient()}
|
||||||
}
|
}
|
||||||
|
|
||||||
type PricingAPI struct {
|
type PricingAPI struct {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package postgresql
|
package postgresql
|
||||||
|
|
||||||
// DB Operations helper
|
// Jackc/pgx helper
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|||||||
@@ -1,104 +0,0 @@
|
|||||||
package rabbitmq
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"log"
|
|
||||||
|
|
||||||
amqp "github.com/rabbitmq/amqp091-go"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Message map[string]interface{}
|
|
||||||
|
|
||||||
func Connect(url string) (*amqp.Connection, *amqp.Channel, error) {
|
|
||||||
conn, err := amqp.Dial(url)
|
|
||||||
if err != nil {
|
|
||||||
return nil, nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
ch, err := conn.Channel()
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("Failed to open a channel: %v\n", err)
|
|
||||||
return nil, nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return conn, ch, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func Close(conn *amqp.Connection) error {
|
|
||||||
return conn.Close()
|
|
||||||
}
|
|
||||||
|
|
||||||
func Serialize(msg any) (string, error) { // FIXME move to separate service
|
|
||||||
var b bytes.Buffer
|
|
||||||
encoder := json.NewEncoder(&b)
|
|
||||||
err := encoder.Encode(msg)
|
|
||||||
|
|
||||||
return b.String(), err
|
|
||||||
}
|
|
||||||
|
|
||||||
func Deserialize(b []byte) (Message, error) { // FIXME move to separate service
|
|
||||||
var msg Message
|
|
||||||
buf := bytes.NewBuffer(b)
|
|
||||||
decoder := json.NewDecoder(buf)
|
|
||||||
err := decoder.Decode(&msg)
|
|
||||||
|
|
||||||
return msg, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewExchange(chn *amqp.Channel, name string) error {
|
|
||||||
err := chn.ExchangeDeclare(
|
|
||||||
name,
|
|
||||||
"direct", // type
|
|
||||||
true, // durable
|
|
||||||
false, // auto-deleted
|
|
||||||
false, // internal
|
|
||||||
false, // no-wait
|
|
||||||
nil, // arguments
|
|
||||||
)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func Publish(chn *amqp.Channel, name, routingKey string, msg any) error {
|
|
||||||
jsonData, err := Serialize(msg)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
msgBody := fmt.Sprintf(`{"event":"%T","data":%s}`, msg, jsonData)
|
|
||||||
chn.Publish(
|
|
||||||
name, // exchange name
|
|
||||||
routingKey, // routing key
|
|
||||||
false, // mandatory
|
|
||||||
false, // immediate
|
|
||||||
amqp.Publishing{
|
|
||||||
ContentType: "application/json",
|
|
||||||
Body: []byte(msgBody),
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func BindQueueToExchange(chn *amqp.Channel, queueName, exchName, routingKey string) error {
|
|
||||||
err := chn.QueueBind(
|
|
||||||
queueName, // queue name
|
|
||||||
routingKey, // routing key
|
|
||||||
exchName, // exchange name
|
|
||||||
false,
|
|
||||||
nil,
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("Failed to bind a queue: %s\n", queueName)
|
|
||||||
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user