add fileActions

This commit is contained in:
dom 2021-02-20 14:32:23 +01:00
parent ff62d0576b
commit 923eddbec0
2 changed files with 109 additions and 0 deletions

86
fileActions.go Normal file
View File

@ -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
}

23
fileActions_test.go Normal file
View File

@ -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)
}