sarga_updater/helpers/helper.go

113 lines
2.1 KiB
Go

package helpers
import (
"context"
"log"
"net"
"net/http"
"os"
models "sarga_updater/trendyol_models"
"time"
)
func CheckDBExists(endpoint string) bool {
const ConnectMaxWaitTime = 30 * time.Second
const RequestMaxWaitTime = 60 * time.Second
client := http.Client{
Transport: &http.Transport{
DialContext: (&net.Dialer{
Timeout: ConnectMaxWaitTime,
}).DialContext,
},
}
ctx, cancel := context.WithTimeout(context.Background(), RequestMaxWaitTime)
defer cancel()
req, err := http.NewRequestWithContext(ctx, "GET", endpoint, nil)
req.Proto = "HTTP/1.0"
if err != nil {
log.Println(err.Error())
return false
}
q := req.URL.Query()
req.URL.RawQuery = q.Encode()
req.Header.Set("Connection", "close")
req.Close = true
client.CloseIdleConnections()
response, err := client.Do(req)
// handle timeout
if e, ok := err.(net.Error); ok && e.Timeout() {
if response != nil {
response.Body.Close()
}
log.Println(err.Error())
return false
} else if err != nil {
if response != nil {
response.Body.Close()
}
log.Println(err.Error())
return false
}
if response != nil {
response.Body.Close()
}
if response.StatusCode == http.StatusOK {
return true
} else {
return false
}
}
func GetCategoryWeight(slug string) string {
db, err := CdbServer.Get(os.Getenv("db_ty_categories"))
if err != nil {
Error("can not get db. Err: " + err.Error())
return "0.5"
}
doc, err := db.Get(slug, nil)
if err != nil {
Error("can not get by slug. Err: " + err.Error())
return "0.5"
}
return doc["weight"].(string)
}
func IsLCWSizeVariantsAdded(items []models.Variant, keyItem models.Variant) bool {
for _, option := range items {
if option.ItemNumber == keyItem.ItemNumber {
return true
}
}
return false
}
func IsImageAdded(images []string, image string) bool {
for _, img := range images {
if img == image {
return true
}
}
return false
}
func IsVariantsAdded(variants []models.Variant, itemNumber int) bool {
for _, variant := range variants {
if variant.ItemNumber == itemNumber {
return true
}
}
return false
}