Advertisement
kervi

Untitled

Sep 7th, 2021
1,150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.20 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "bytes"
  5.     "encoding/json"
  6.     "log"
  7.     "net/http"
  8.     "sync"
  9.     "time"
  10. )
  11.  
  12. const (
  13.     TIMEOUT = 50 // Timeout for HTTP request
  14.     URL     = "https://example.com/data.json"
  15.     REQUEST = "https://example.com/update"
  16. )
  17.  
  18.  
  19. var client = http.Client{Timeout: TIMEOUT * time.Millisecond}
  20.  
  21. type (
  22.     Data struct {
  23.         Jwt  string `json:"jwt"`
  24.         Items []GetItem `json:"items"`
  25.     }
  26.     GetItem struct {
  27.         Name string `json:"name"`
  28.         Code string `json:"code"`
  29.     }
  30.     RequestItem struct {
  31.         Jwt string `json:"jwt"`
  32.         Code string `json:"code"`
  33.     }
  34. )
  35.  
  36.  
  37. func main() {
  38.     callMethod()
  39. }
  40.  
  41. func callMethod() {
  42.     var wg sync.WaitGroup
  43.     data, err := getJSON()
  44.     if err != nil {
  45.         log.Fatal(err)
  46.     }
  47.     jwt := data.Jwt
  48.     for _, item := range data.Items {
  49.         r, _ := json.Marshal(RequestItem{
  50.             jwt, item.Code,
  51.         })
  52.         wg.Add(1)
  53.         go func (item []byte) {
  54.             _,_ = client.Post(REQUEST, "application/json", bytes.NewBuffer(item))
  55.             wg.Done()
  56.         }(r)
  57.     }
  58.     wg.Wait()
  59.  
  60. }
  61.  
  62. func getJSON() (*Data, error) {
  63.     var result Data
  64.     response, err := http.Get(URL)
  65.     if err != nil {
  66.         return nil, err
  67.     }
  68.     err = json.NewDecoder(response.Body).Decode(&result)
  69.     if err != nil {
  70.         return nil, err
  71.     }
  72.     return &result, nil
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement