71 lines
1.3 KiB
Go

package jar
import (
"errors"
"io"
"net/http"
"os"
"strings"
"gitea.com/logicamp/lc"
api "github.com/logi-camp/go-flink-client"
gonanoid "github.com/matoous/go-nanoid/v2"
"go.uber.org/zap"
)
type JarFile struct {
uri string
filePath string
}
func NewJarFile(URI string) (*JarFile, error) {
jarFile := &JarFile{
uri: URI,
}
err := jarFile.Download()
if err != nil {
return nil, err
}
return jarFile, nil
}
func (JarFile *JarFile) Upload(flinkClient *api.Client) (fileName string, err error) {
resp, err := flinkClient.UploadJar(JarFile.filePath)
if err != nil {
lc.Logger.Error("[main] error uploading jar", zap.Error(err))
}
filePathParts := strings.Split(resp.FileName, "/")
fileName = filePathParts[len(filePathParts)-1]
if resp.Status != "success" {
err = errors.New("jar upload was not success")
}
return
}
func (jarFile *JarFile) Download() error {
fileName, _ := gonanoid.New()
jarFile.filePath = fileName + ".jar"
out, err := os.Create(jarFile.filePath)
if err != nil {
return err
}
defer out.Close()
resp, err := http.Get(jarFile.uri)
if err != nil {
return err
}
defer resp.Body.Close()
_, err = io.Copy(out, resp.Body)
if err != nil {
return err
}
return nil
}
func (jarFile *JarFile) Delete() error {
return os.Remove(jarFile.filePath)
}