moved file based functions into new file fileActions.go
This commit is contained in:
parent
3af92fa056
commit
2a776d5c5f
|
@ -0,0 +1,147 @@
|
||||||
|
package paxan
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/csv"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"golang.org/x/text/encoding/charmap"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SpricelistEntry - One entry in the spricelist
|
||||||
|
type SpricelistEntry struct {
|
||||||
|
Sortiment string
|
||||||
|
Warengruppe string
|
||||||
|
Untergruppe string
|
||||||
|
Artnr int
|
||||||
|
Itemname1 string
|
||||||
|
Itemname2 string
|
||||||
|
Hersteller string
|
||||||
|
Qualitaet string
|
||||||
|
Herkunft string
|
||||||
|
Einheit string
|
||||||
|
Aktion bool
|
||||||
|
Menge1 float64
|
||||||
|
Einzelpreis1 float64
|
||||||
|
Vpepreis1 float64
|
||||||
|
Menge2 string
|
||||||
|
Einzelpreis2 string
|
||||||
|
Vpepreis2 string
|
||||||
|
Menge3 string
|
||||||
|
Einzelpreis3 string
|
||||||
|
Vpepreis3 string
|
||||||
|
Menge4 string
|
||||||
|
Einzelpreis4 string
|
||||||
|
Vpepreis4 string
|
||||||
|
Empfvk float64
|
||||||
|
Mwst float64
|
||||||
|
Ean string
|
||||||
|
Glutenfrei bool
|
||||||
|
Laktosefrei bool
|
||||||
|
Vegan bool
|
||||||
|
Regional bool
|
||||||
|
Fairtrade bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// DownloadPricelists - Download both price lists
|
||||||
|
func DownloadPricelists(client *http.Client) error {
|
||||||
|
// Download preisliste
|
||||||
|
r, err := client.Get("https://www.hakopaxan-shop.de/csv/preisliste.csv")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
downloadFile(("preisliste-" + time.Now().Format("20060102150405") + ".csv"), r)
|
||||||
|
|
||||||
|
// Download spreisliste
|
||||||
|
r, err = client.Get("https://www.hakopaxan-shop.de/csv/spreisliste.csv")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
downloadFile(("spreisliste-" + time.Now().Format("20060102150405") + ".csv"), r)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DownloadBnnlists - Download both price lists. The lists are public so we do not necessarily login before downloading.
|
||||||
|
func DownloadBnnlists(client *http.Client) error {
|
||||||
|
// Download PL.BNN
|
||||||
|
r, err := client.Get("https://static.paxan.de/2016/PL.BNN")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
downloadFile(("PL-" + time.Now().Format("20060102150405") + ".BNN"), r)
|
||||||
|
|
||||||
|
// Download PLF.BNN
|
||||||
|
r, err = client.Get("https://static.paxan.de/2016/PLF.BNN")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
downloadFile(("PLF-" + time.Now().Format("20060102150405") + ".BNN"), r)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// RetrievePricelist - Downloads and converts pricelist into an array
|
||||||
|
func RetrievePricelist(client *http.Client) ([]SpricelistEntry, error) {
|
||||||
|
// Download spreisliste
|
||||||
|
resp, err := client.Get("https://www.hakopaxan-shop.de/csv/spreisliste.csv")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
dr := charmap.ISO8859_1.NewDecoder().Reader(resp.Body)
|
||||||
|
|
||||||
|
r := csv.NewReader(dr)
|
||||||
|
r.Comma = ';'
|
||||||
|
records, err := r.ReadAll()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var priceList []SpricelistEntry
|
||||||
|
|
||||||
|
for i, line := range records {
|
||||||
|
if i == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
var priceListEntry SpricelistEntry
|
||||||
|
|
||||||
|
priceListEntry.Sortiment = line[0]
|
||||||
|
priceListEntry.Warengruppe = line[1]
|
||||||
|
priceListEntry.Untergruppe = line[2]
|
||||||
|
priceListEntry.Artnr = convertStringToInt(line[3])
|
||||||
|
priceListEntry.Itemname1 = line[4]
|
||||||
|
priceListEntry.Itemname2 = line[5]
|
||||||
|
priceListEntry.Hersteller = line[6]
|
||||||
|
priceListEntry.Qualitaet = line[7]
|
||||||
|
priceListEntry.Herkunft = line[8]
|
||||||
|
priceListEntry.Einheit = line[9]
|
||||||
|
priceListEntry.Aktion = convertStringToBool(line[10])
|
||||||
|
priceListEntry.Menge1 = convertStringToFloat(line[11])
|
||||||
|
priceListEntry.Einzelpreis1 = convertStringToFloat(line[12])
|
||||||
|
priceListEntry.Vpepreis1 = convertStringToFloat(line[13])
|
||||||
|
priceListEntry.Menge2 = line[14]
|
||||||
|
priceListEntry.Einzelpreis2 = line[15]
|
||||||
|
priceListEntry.Vpepreis2 = line[16]
|
||||||
|
priceListEntry.Menge3 = line[17]
|
||||||
|
priceListEntry.Einzelpreis3 = line[18]
|
||||||
|
priceListEntry.Vpepreis3 = line[19]
|
||||||
|
priceListEntry.Menge4 = line[20]
|
||||||
|
priceListEntry.Einzelpreis4 = line[21]
|
||||||
|
priceListEntry.Vpepreis4 = line[22]
|
||||||
|
priceListEntry.Empfvk = convertStringToFloat(line[23])
|
||||||
|
priceListEntry.Mwst = convertStringToFloat(line[24])
|
||||||
|
priceListEntry.Ean = line[25]
|
||||||
|
priceListEntry.Glutenfrei = convertStringToBool(line[26])
|
||||||
|
priceListEntry.Laktosefrei = convertStringToBool(line[27])
|
||||||
|
priceListEntry.Vegan = convertStringToBool(line[28])
|
||||||
|
priceListEntry.Regional = convertStringToBool(line[29])
|
||||||
|
priceListEntry.Fairtrade = convertStringToBool(line[30])
|
||||||
|
|
||||||
|
priceList = append(priceList, priceListEntry)
|
||||||
|
}
|
||||||
|
|
||||||
|
return priceList, nil
|
||||||
|
|
||||||
|
}
|
139
webActions.go
139
webActions.go
|
@ -1,7 +1,6 @@
|
||||||
package paxan
|
package paxan
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/csv"
|
|
||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -13,7 +12,6 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/PuerkitoBio/goquery"
|
"github.com/PuerkitoBio/goquery"
|
||||||
"golang.org/x/text/encoding/charmap"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type paxanWebOrder struct {
|
type paxanWebOrder struct {
|
||||||
|
@ -35,41 +33,6 @@ type paxanWebOrderEntry struct {
|
||||||
Total2 string
|
Total2 string
|
||||||
}
|
}
|
||||||
|
|
||||||
// SpricelistEntry - One entry in the spricelist
|
|
||||||
type SpricelistEntry struct {
|
|
||||||
Sortiment string
|
|
||||||
Warengruppe string
|
|
||||||
Untergruppe string
|
|
||||||
Artnr int
|
|
||||||
Itemname1 string
|
|
||||||
Itemname2 string
|
|
||||||
Hersteller string
|
|
||||||
Qualitaet string
|
|
||||||
Herkunft string
|
|
||||||
Einheit string
|
|
||||||
Aktion bool
|
|
||||||
Menge1 float64
|
|
||||||
Einzelpreis1 float64
|
|
||||||
Vpepreis1 float64
|
|
||||||
Menge2 string
|
|
||||||
Einzelpreis2 string
|
|
||||||
Vpepreis2 string
|
|
||||||
Menge3 string
|
|
||||||
Einzelpreis3 string
|
|
||||||
Vpepreis3 string
|
|
||||||
Menge4 string
|
|
||||||
Einzelpreis4 string
|
|
||||||
Vpepreis4 string
|
|
||||||
Empfvk float64
|
|
||||||
Mwst float64
|
|
||||||
Ean string
|
|
||||||
Glutenfrei bool
|
|
||||||
Laktosefrei bool
|
|
||||||
Vegan bool
|
|
||||||
Regional bool
|
|
||||||
Fairtrade bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func convertStringToBool(value string) bool {
|
func convertStringToBool(value string) bool {
|
||||||
if value == "X" {
|
if value == "X" {
|
||||||
return true
|
return true
|
||||||
|
@ -149,108 +112,6 @@ func CloseClient(client *http.Client) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// DownloadPricelists - Download both price lists
|
|
||||||
func DownloadPricelists(client *http.Client) error {
|
|
||||||
// Download preisliste
|
|
||||||
r, err := client.Get("https://www.hakopaxan-shop.de/csv/preisliste.csv")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
downloadFile(("preisliste-" + time.Now().Format("20060102150405") + ".csv"), r)
|
|
||||||
|
|
||||||
// Download spreisliste
|
|
||||||
r, err = client.Get("https://www.hakopaxan-shop.de/csv/spreisliste.csv")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
downloadFile(("spreisliste-" + time.Now().Format("20060102150405") + ".csv"), r)
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// DownloadBnnlists - Download both price lists. The lists are public so we do not necessarily login before downloading.
|
|
||||||
func DownloadBnnlists(client *http.Client) error {
|
|
||||||
// Download PL.BNN
|
|
||||||
r, err := client.Get("https://static.paxan.de/2016/PL.BNN")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
downloadFile(("PL-" + time.Now().Format("20060102150405") + ".BNN"), r)
|
|
||||||
|
|
||||||
// Download PLF.BNN
|
|
||||||
r, err = client.Get("https://static.paxan.de/2016/PLF.BNN")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
downloadFile(("PLF-" + time.Now().Format("20060102150405") + ".BNN"), r)
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// RetrievePricelist - Downloads and converts pricelist into an array
|
|
||||||
func RetrievePricelist(client *http.Client) ([]SpricelistEntry, error) {
|
|
||||||
// Download spreisliste
|
|
||||||
resp, err := client.Get("https://www.hakopaxan-shop.de/csv/spreisliste.csv")
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
dr := charmap.ISO8859_1.NewDecoder().Reader(resp.Body)
|
|
||||||
|
|
||||||
r := csv.NewReader(dr)
|
|
||||||
r.Comma = ';'
|
|
||||||
records, err := r.ReadAll()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
var priceList []SpricelistEntry
|
|
||||||
|
|
||||||
for i, line := range records {
|
|
||||||
if i == 0 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
var priceListEntry SpricelistEntry
|
|
||||||
|
|
||||||
priceListEntry.Sortiment = line[0]
|
|
||||||
priceListEntry.Warengruppe = line[1]
|
|
||||||
priceListEntry.Untergruppe = line[2]
|
|
||||||
priceListEntry.Artnr = convertStringToInt(line[3])
|
|
||||||
priceListEntry.Itemname1 = line[4]
|
|
||||||
priceListEntry.Itemname2 = line[5]
|
|
||||||
priceListEntry.Hersteller = line[6]
|
|
||||||
priceListEntry.Qualitaet = line[7]
|
|
||||||
priceListEntry.Herkunft = line[8]
|
|
||||||
priceListEntry.Einheit = line[9]
|
|
||||||
priceListEntry.Aktion = convertStringToBool(line[10])
|
|
||||||
priceListEntry.Menge1 = convertStringToFloat(line[11])
|
|
||||||
priceListEntry.Einzelpreis1 = convertStringToFloat(line[12])
|
|
||||||
priceListEntry.Vpepreis1 = convertStringToFloat(line[13])
|
|
||||||
priceListEntry.Menge2 = line[14]
|
|
||||||
priceListEntry.Einzelpreis2 = line[15]
|
|
||||||
priceListEntry.Vpepreis2 = line[16]
|
|
||||||
priceListEntry.Menge3 = line[17]
|
|
||||||
priceListEntry.Einzelpreis3 = line[18]
|
|
||||||
priceListEntry.Vpepreis3 = line[19]
|
|
||||||
priceListEntry.Menge4 = line[20]
|
|
||||||
priceListEntry.Einzelpreis4 = line[21]
|
|
||||||
priceListEntry.Vpepreis4 = line[22]
|
|
||||||
priceListEntry.Empfvk = convertStringToFloat(line[23])
|
|
||||||
priceListEntry.Mwst = convertStringToFloat(line[24])
|
|
||||||
priceListEntry.Ean = line[25]
|
|
||||||
priceListEntry.Glutenfrei = convertStringToBool(line[26])
|
|
||||||
priceListEntry.Laktosefrei = convertStringToBool(line[27])
|
|
||||||
priceListEntry.Vegan = convertStringToBool(line[28])
|
|
||||||
priceListEntry.Regional = convertStringToBool(line[29])
|
|
||||||
priceListEntry.Fairtrade = convertStringToBool(line[30])
|
|
||||||
|
|
||||||
priceList = append(priceList, priceListEntry)
|
|
||||||
}
|
|
||||||
|
|
||||||
return priceList, nil
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func paxanGetOrders(client *http.Client) ([]paxanWebOrder, error) {
|
func paxanGetOrders(client *http.Client) ([]paxanWebOrder, error) {
|
||||||
var list []paxanWebOrder
|
var list []paxanWebOrder
|
||||||
kvs := make(map[string]string)
|
kvs := make(map[string]string)
|
||||||
|
|
Loading…
Reference in New Issue