61 lines
1.3 KiB
Go
61 lines
1.3 KiB
Go
|
package generation
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
"io"
|
||
|
"net"
|
||
|
"net/http"
|
||
|
"strings"
|
||
|
|
||
|
"srs.epita.fr/fic-server/libfic"
|
||
|
)
|
||
|
|
||
|
var GeneratorSocket string
|
||
|
|
||
|
func doGeneration(uri string, contenttype string, buf io.Reader) (*http.Response, error) {
|
||
|
sockType := "unix"
|
||
|
if strings.Contains(GeneratorSocket, ":") {
|
||
|
sockType = "tcp"
|
||
|
}
|
||
|
|
||
|
socket, err := net.Dial(sockType, GeneratorSocket)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
defer socket.Close()
|
||
|
|
||
|
httpClient := &http.Client{
|
||
|
Transport: &http.Transport{
|
||
|
Dial: func(network, addr string) (net.Conn, error) {
|
||
|
return socket, nil
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
return httpClient.Post("http://localhost"+uri, contenttype, buf)
|
||
|
}
|
||
|
|
||
|
func EnqueueGeneration(gs fic.GenStruct) (*http.Response, error) {
|
||
|
buf, err := json.Marshal(gs)
|
||
|
if err != nil {
|
||
|
return nil, fmt.Errorf("Something is wrong with JSON encoder: %w", err)
|
||
|
}
|
||
|
|
||
|
return doGeneration("/enqueue", "application/json", bytes.NewReader(buf))
|
||
|
}
|
||
|
|
||
|
func PerformGeneration(gs fic.GenStruct) (*http.Response, error) {
|
||
|
buf, err := json.Marshal(gs)
|
||
|
if err != nil {
|
||
|
return nil, fmt.Errorf("Something is wrong with JSON encoder: %w", err)
|
||
|
}
|
||
|
|
||
|
return doGeneration("/perform", "application/json", bytes.NewReader(buf))
|
||
|
}
|
||
|
|
||
|
func FullGeneration() (*http.Response, error) {
|
||
|
return doGeneration("/full", "application/json", nil)
|
||
|
}
|