add fileActions
This commit is contained in:
parent
ff62d0576b
commit
923eddbec0
|
@ -0,0 +1,86 @@
|
||||||
|
package pural
|
||||||
|
|
||||||
|
import (
|
||||||
|
"archive/zip"
|
||||||
|
"bytes"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
bnn "gitea.statsd.de/dom/goBnn"
|
||||||
|
)
|
||||||
|
|
||||||
|
func downloadFile(filepath string, resp *http.Response) error {
|
||||||
|
// Create the file
|
||||||
|
file, err := os.Create(filepath)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
// Write the body to file
|
||||||
|
_, err = io.Copy(file, resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DownloadBnnlists - Download both price lists. The lists are public so we do not necessarily login before downloading.
|
||||||
|
func DownloadPublicBnnlists() error {
|
||||||
|
client := &http.Client{}
|
||||||
|
|
||||||
|
// https://www.pural.de/handler-bereich
|
||||||
|
|
||||||
|
// Download PLStk .BNN
|
||||||
|
r, err := client.Get("https://www.pural.de/wp-content/uploads/2021/02/PL-Stk-Mae-2021.bnn_.zip")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
downloadFile(("PL-Stk-" + time.Now().Format("20060102150405") + ".BNN.zip"), r)
|
||||||
|
|
||||||
|
// Download PL-Krt .BNN
|
||||||
|
r, err = client.Get("https://www.pural.de/wp-content/uploads/2021/02/PL-Krt-Mae-2021.bnn_.zip")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
downloadFile(("PL-Krt" + time.Now().Format("20060102150405") + ".BNN.zip"), r)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// RetrievePublicBnnlistStk - Downloads list PL and converts bnn list into an array
|
||||||
|
func RetrievePublicBnnlistStk() (bnn.Bnn, error) {
|
||||||
|
// Download bnn
|
||||||
|
resp, err := http.Get("https://www.pural.de/wp-content/uploads/2021/02/PL-Stk-Mae-2021.bnn_.zip")
|
||||||
|
if err != nil {
|
||||||
|
return bnn.Bnn{}, err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
body, err := ioutil.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
return bnn.Bnn{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
zipReader, err := zip.NewReader(bytes.NewReader(body), int64(len(body)))
|
||||||
|
if err != nil {
|
||||||
|
return bnn.Bnn{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
fileReader, err := zipReader.File[0].Open()
|
||||||
|
if err != nil {
|
||||||
|
return bnn.Bnn{}, err
|
||||||
|
}
|
||||||
|
defer fileReader.Close()
|
||||||
|
|
||||||
|
b, err := bnn.ReadBnn(fileReader)
|
||||||
|
if err != nil {
|
||||||
|
return bnn.Bnn{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return b, nil
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package pural
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestDownloadPublicBnnFile(t *testing.T) {
|
||||||
|
err := DownloadPublicBnnlists()
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("%s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
//t.Logf("%v", f)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRetrievePublicBnnlistStk(t *testing.T) {
|
||||||
|
f, err := RetrievePublicBnnlistStk()
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("%s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Logf("%v", f)
|
||||||
|
}
|
Loading…
Reference in New Issue