225 lines
5.8 KiB
Plaintext
225 lines
5.8 KiB
Plaintext
////// import (
|
|
//////
|
|
////// "Sipro-Marketplaces/internal/marketplace"
|
|
////// ozon_products "Sipro-Marketplaces/internal/ozon/products"
|
|
////// "fmt"
|
|
////// "google.golang.org/grpc"
|
|
////// "net"
|
|
//////
|
|
////// )
|
|
//////
|
|
////// func createGrpcServer() {
|
|
//////
|
|
////// lis, err := net.Listen("tcp", ":8080")
|
|
////// if err != nil {
|
|
////// fmt.Printf("failed to listen: %v\n", err)
|
|
////// return
|
|
////// }
|
|
////// grpcServer := grpc.NewServer()
|
|
//////
|
|
////// repo, err := marketplace.RegisterAdapterGRPC(grpcServer)
|
|
////// if err != nil {
|
|
////// fmt.Printf("failed to register gRPC server: %v\n", err)
|
|
////// return
|
|
////// }
|
|
////// _, err = ozon_products.RegisterAdapterGRPC(grpcServer, *repo)
|
|
////// if err != nil {
|
|
////// fmt.Printf("failed to register Ozon Products gRPC server: %v\n", err)
|
|
////// return
|
|
////// }
|
|
//////
|
|
////// fmt.Println("gRPC server registered successfully.")
|
|
////// // Start serving gRPC requests
|
|
////// fmt.Println("gRPC server is starting on port 8080...")
|
|
//////
|
|
////// if err := grpcServer.Serve(lis); err != nil {
|
|
////// fmt.Printf("failed to serve: %v\n", err)
|
|
////// }
|
|
////// fmt.Println("gRPC server created.")
|
|
////// }
|
|
//////
|
|
////// func main() {
|
|
////// fmt.Println("Starting Sipro-Marketplaces server...")
|
|
////// createGrpcServer()
|
|
////// }
|
|
////package main
|
|
////
|
|
////import (
|
|
//// "Sipro-Marketplaces/internal/marketplace"
|
|
//// "Sipro-Marketplaces/internal/ozon"
|
|
//// "context"
|
|
//// "encoding/json"
|
|
//// "fmt"
|
|
//// api "git.denco.store/fakz9/ozon-api-client/ozon"
|
|
//// "github.com/jackc/pgx/v5"
|
|
//// "time"
|
|
////)
|
|
////
|
|
////func main() {
|
|
////
|
|
//// startTime := time.Now()
|
|
////
|
|
//// ctx := context.Background()
|
|
////
|
|
//// conn, err := pgx.Connect(ctx, "postgresql://postgres:GjitkeYf%5Beq@/sipro?host=/run/postgresql")
|
|
//// if err != nil {
|
|
//// panic(err)
|
|
//// }
|
|
//// defer conn.Close(ctx)
|
|
//// mpRepo := marketplace.NewDBRepository(conn)
|
|
//// mp, err := mpRepo.GetMarketplaceByID(ctx, 262)
|
|
//// if err != nil {
|
|
//// panic(err)
|
|
//// }
|
|
//// client, err := ozon.GetClientFromMarketplace(mp)
|
|
//// if err != nil {
|
|
//// panic(err)
|
|
//// }
|
|
////
|
|
//// productIdsChan := make(chan []int64)
|
|
////
|
|
//// go func() {
|
|
//// defer close(productIdsChan)
|
|
////
|
|
//// var lastId string
|
|
////
|
|
//// for {
|
|
//// rsp, err := client.Products().GetListOfProducts(
|
|
//// ctx,
|
|
//// &api.GetListOfProductsParams{
|
|
//// Filter: api.GetListOfProductsFilter{
|
|
//// Visibility: "ALL",
|
|
//// },
|
|
//// LastId: lastId,
|
|
//// Limit: 1000,
|
|
//// },
|
|
//// )
|
|
//// if err != nil {
|
|
//// // You may want to send error on another channel or handle differently
|
|
//// panic(err)
|
|
//// }
|
|
////
|
|
//// items := rsp.Result.Items
|
|
//// if len(items) == 0 {
|
|
//// break
|
|
//// }
|
|
////
|
|
//// productIds := make([]int64, len(items))
|
|
//// for i, item := range items {
|
|
//// productIds[i] = item.ProductId
|
|
//// }
|
|
////
|
|
//// productIdsChan <- productIds
|
|
////
|
|
//// lastId = rsp.Result.LastId
|
|
//// if lastId == "" {
|
|
//// break
|
|
//// }
|
|
//// }
|
|
//// }()
|
|
////
|
|
//// productsChan := make(chan []string)
|
|
//// go func() {
|
|
//// defer close(productsChan)
|
|
//// for productIds := range productIdsChan {
|
|
//// go func(ids []int64) {
|
|
//// products, err := client.Products().ListProductsByIDs(
|
|
//// ctx, &api.ListProductsByIDsParams{
|
|
//// OfferId: nil,
|
|
//// ProductId: ids,
|
|
//// SKU: nil,
|
|
//// })
|
|
//// if err != nil {
|
|
//// // Handle error appropriately, e.g., log it or send it to an error channel
|
|
//// panic(err)
|
|
//// }
|
|
//// productsEncoded := make([]string, len(products.Items))
|
|
//// for i, product := range products.Items {
|
|
//// jsonString, err := json.Marshal(product)
|
|
//// if err != nil {
|
|
//// // Handle error appropriately, e.g., log it or send it to an error channel
|
|
//// panic(err)
|
|
//// }
|
|
//// productsEncoded[i] = string(jsonString)
|
|
//// }
|
|
//// productsChan <- productsEncoded
|
|
//// }(productIds)
|
|
//// }
|
|
////
|
|
//// }()
|
|
//// total := 0
|
|
//// for products := range productsChan {
|
|
//// for _ = range products {
|
|
//// // Here you can process each product, e.g., save to database or print
|
|
//// // For demonstration, we will just print the product
|
|
//// total += 1
|
|
//// }
|
|
//// if len(products) == 0 {
|
|
//// fmt.Println("No more products to process.")
|
|
//// break
|
|
//// }
|
|
//// }
|
|
//// elapsedTime := time.Since(startTime)
|
|
//// println("Total time taken:", elapsedTime.String())
|
|
//// println("Total products processed:", total)
|
|
////
|
|
////}
|
|
//
|
|
//package main
|
|
//
|
|
//import (
|
|
// "context"
|
|
// "fmt"
|
|
// "time"
|
|
//
|
|
// "github.com/redis/rueidis"
|
|
//)
|
|
//
|
|
//func main() {
|
|
// fmt.Println("Hello, World!")
|
|
// client, err := rueidis.NewClient(rueidis.ClientOption{
|
|
// InitAddress: []string{"localhost:6379"},
|
|
// Password: "ELdhsgqJt5QZUSWKU5vY3D9CXa1a0teIceeHqvCtoPkrDJ0Lge7XIe8187gFjd0qZLv9zwhGr62MqY",
|
|
// })
|
|
// if err != nil {
|
|
// fmt.Printf("Failed to create Redis client: %v\n", err)
|
|
// return
|
|
// }
|
|
// defer client.Close()
|
|
// script := rueidis.NewLuaScript(`
|
|
// local key = KEYS[1]
|
|
// local now = tonumber(ARGV[1])
|
|
// local window = tonumber(ARGV[2])
|
|
// local limit = tonumber(ARGV[3])
|
|
//
|
|
// redis.call('ZREMRANGEBYSCORE', key, '-inf', now - window)
|
|
// local count = redis.call('ZCARD', key)
|
|
//
|
|
// if count < limit then
|
|
// redis.call('ZADD', key, now, now)
|
|
// redis.call('EXPIRE', key, math.ceil(window / 1000000000))
|
|
// return 1
|
|
// end
|
|
// return 0
|
|
// `)
|
|
// ctx := context.Background()
|
|
// windowSize := time.Second
|
|
// for i := 0; i < 51; i++ {
|
|
// now := time.Now().UnixNano()
|
|
// result, err := script.Exec(ctx, client, []string{"2282"}, []string{
|
|
// fmt.Sprintf("%d", now),
|
|
// fmt.Sprintf("%d", int64(windowSize)),
|
|
// fmt.Sprintf("%d", 50),
|
|
// }).ToInt64()
|
|
// if err != nil {
|
|
// fmt.Printf("Failed to execute script: %v\n", err)
|
|
// return
|
|
// }
|
|
// if result == 1 {
|
|
// //fmt.Println("Request allowed")
|
|
// } else {
|
|
// fmt.Println("Rate limit exceeded")
|
|
// }
|
|
// }
|
|
//
|
|
//} |