Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "bytes"
- "encoding/json"
- "log"
- "net/http"
- "sync"
- "time"
- )
- const (
- TIMEOUT = 50 // Timeout for HTTP request
- URL = "https://example.com/data.json"
- REQUEST = "https://example.com/update"
- )
- var client = http.Client{Timeout: TIMEOUT * time.Millisecond}
- type (
- Data struct {
- Jwt string `json:"jwt"`
- Items []GetItem `json:"items"`
- }
- GetItem struct {
- Name string `json:"name"`
- Code string `json:"code"`
- }
- RequestItem struct {
- Jwt string `json:"jwt"`
- Code string `json:"code"`
- }
- )
- func main() {
- callMethod()
- }
- func callMethod() {
- var wg sync.WaitGroup
- data, err := getJSON()
- if err != nil {
- log.Fatal(err)
- }
- jwt := data.Jwt
- for _, item := range data.Items {
- r, _ := json.Marshal(RequestItem{
- jwt, item.Code,
- })
- wg.Add(1)
- go func (item []byte) {
- _,_ = client.Post(REQUEST, "application/json", bytes.NewBuffer(item))
- wg.Done()
- }(r)
- }
- wg.Wait()
- }
- func getJSON() (*Data, error) {
- var result Data
- response, err := http.Get(URL)
- if err != nil {
- return nil, err
- }
- err = json.NewDecoder(response.Body).Decode(&result)
- if err != nil {
- return nil, err
- }
- return &result, nil
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement