53 lines
1.0 KiB
Go
53 lines
1.0 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
"log"
|
||
|
"net"
|
||
|
"net/http"
|
||
|
"strings"
|
||
|
"time"
|
||
|
|
||
|
"srs.epita.fr/fic-server/libfic"
|
||
|
)
|
||
|
|
||
|
var generatorSocket string
|
||
|
|
||
|
func appendGenQueue(gs fic.GenStruct) error {
|
||
|
buf, err := json.Marshal(gs)
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("Something is wrong with JSON encoder: %w", err)
|
||
|
}
|
||
|
|
||
|
sockType := "unix"
|
||
|
if strings.Contains(generatorSocket, ":") {
|
||
|
sockType = "tcp"
|
||
|
}
|
||
|
|
||
|
socket, err := net.Dial(sockType, generatorSocket)
|
||
|
if err != nil {
|
||
|
log.Printf("Unable to contact generator at: %s, retring in 1 second", generatorSocket)
|
||
|
time.Sleep(time.Second)
|
||
|
return appendGenQueue(gs)
|
||
|
}
|
||
|
defer socket.Close()
|
||
|
|
||
|
httpClient := &http.Client{
|
||
|
Transport: &http.Transport{
|
||
|
Dial: func(network, addr string) (net.Conn, error) {
|
||
|
return socket, nil
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
resp, err := httpClient.Post("http://localhost/enqueue", "application/json", bytes.NewReader(buf))
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("Unable to enqueue new generation event: %w", err)
|
||
|
}
|
||
|
resp.Body.Close()
|
||
|
|
||
|
return nil
|
||
|
}
|