Compare commits

..

10 Commits

Author SHA1 Message Date
dom 8510e7fbe0 add webclient with wishlist func 2021-02-12 21:50:59 +01:00
dom 37fad282e6 change m and atime 2020-07-26 20:26:35 +02:00
dom 751ce5bf6a fix bug only fist file is been downloaded 2020-07-26 20:25:56 +02:00
dom a356f0346f remove debug logging 2020-07-26 20:24:47 +02:00
dom 6421d3e5a0 ignore directories 2020-07-26 20:23:34 +02:00
dom fbe8f72668 remove debug output 2020-07-25 12:24:17 +02:00
dom 8cf67d00e0 set root path 2020-07-18 09:25:00 +02:00
dom 1adfc456be add logging 2020-07-18 09:22:44 +02:00
dom 880d06b1b8 fix path.join undefined 2020-07-18 09:09:55 +02:00
dom ad10456a4a add ftpActions 2020-07-18 08:55:51 +02:00
2 changed files with 110 additions and 90 deletions

57
ftpActions.go Normal file
View File

@ -0,0 +1,57 @@
package paxan
import (
"io"
"os"
"path/filepath"
"time"
"github.com/jlaffaye/ftp"
)
func DownloadFTP(user string, password string, path string) error {
c, err := ftp.Dial("paxan-shop.de:21", ftp.DialWithTimeout(5*time.Second))
if err != nil {
return err
}
err = c.Login(user, password)
if err != nil {
return err
}
defer c.Quit()
//c.ChangeDir("desiredDir")
files, err := c.List("/")
if err != nil {
return err
}
for _, file := range files {
if file.Type != ftp.EntryTypeFile {
continue
}
res, err := c.Retr(file.Name)
if err != nil {
return err
}
outFile, err := os.Create(filepath.Join(path, file.Name))
if err != nil {
return err
}
defer outFile.Close()
_, err = io.Copy(outFile, res)
if err != nil {
return err
}
res.Close()
err = os.Chtimes(filepath.Join(path, file.Name), file.Time, file.Time)
}
return nil
}

View File

@ -33,26 +33,6 @@ type paxanWebOrderEntry struct {
Total2 string Total2 string
} }
// WebOrder -
type WebOrder struct {
InvoiceNumber int
Type string
Date string
Items2 []paxanWebOrderEntry
/*Items []struct {
Position string
ArticleNumber int
Description string
ProductLink string
Amount string
Price string
Total string
Amount2 string
Price2 string
Total2 string
}*/
}
func convertStringToBool(value string) bool { func convertStringToBool(value string) bool {
if value == "X" { if value == "X" {
return true return true
@ -290,88 +270,71 @@ func ExportNewOrders(client *http.Client, lastOrder int) error {
return nil return nil
} }
// GetOrders - Get orders type paxanWebClient struct {
func GetOrders(client *http.Client, lastOrder int) ([]WebOrder, error) { client *http.Client
orders, err := paxanGetOrders(client) baseUrl string
if err != nil {
return nil, err
}
var objects []WebOrder
for _, order := range orders {
if order.InvoiceNumber <= lastOrder {
continue
}
orderDetails, err := paxanGetOrderDetails(client, order.InvoiceNumber)
if err != nil {
return nil, err
}
objects = append(objects, WebOrder{
order.InvoiceNumber, order.Type, order.Date, orderDetails,
})
}
return nil, nil
} }
//TODO make it more like a class -> func (p *paxan) something(foo) {} func Connect(user string, password string) (paxanWebClient, error) {
/* var pwc paxanWebClient
func selectWishlist(client *http.Client, wishlistNumber int) error { // New http client with cookie
url := "https://www.hakopaxan-shop.de/html/customerDocument-customerDocumentId-" + strconv.Itoa(orderNumber) + "-customerDocumentListId-invoice-requestedPeriod-365.html" cookieJar, _ := cookiejar.New(nil)
r, err := client.Get(url) pwc.client = &http.Client{
Jar: cookieJar,
}
pwc.baseUrl = "https://www.hakopaxan-shop.de/html"
loginvalues := make(url.Values)
loginvalues.Set("performAction", "processLogin")
loginvalues.Set("personlogin", user)
loginvalues.Set("personpwd", password)
loginvalues.Set("firma", "paxan")
_, err := pwc.client.PostForm("https://www.hakopaxan-shop.de/html/login.html", loginvalues)
if err != nil { if err != nil {
return nil, err return paxanWebClient{}, err
} }
doc, err := goquery.NewDocumentFromReader(io.Reader(r.Body)) return pwc, nil
}
func (w *paxanWebClient) Disconnect() error {
_, err := w.client.Get("https://www.hakopaxan-shop.de/html/logout-performAction-processLogout.html")
if err != nil { if err != nil {
return nil, err return err
} }
// Go through table row by row
doc.Find(".tableRowGroup").Each(func(i int, s *goquery.Selection) {
var row []string
s.Find(".tableCell").Each(func(j int, s *goquery.Selection) {
text := s.Contents().Text()
// Column 3 contains some more info
if j == 2 {
text = s.Find(".lineItemName").Text()
// Search for the link to the product page
linkTag := s.Find("a")
link, _ := linkTag.Attr("href")
row = append(row, link)
}
text = strings.Replace(text, "\n", "", -1)
text = strings.TrimSpace(text)
row = append(row, text)
})
num, _ := strconv.Atoi(row[1])
n := paxanWebOrderEntry{Position: row[0],
ArticleNumber: num,
Description: row[3],
ProductLink: row[2],
Amount: row[4],
Price: row[5],
Total: row[6],
Amount2: row[7],
Price2: row[8],
Total2: row[9]}
list = append(list, n)
})
return nil return nil
} }
func AddArticleWishlist(client *http.Client, wishlistNumber int, articleNumber int) error { func (w *paxanWebClient) selectWishlist(id string) error {
// select wishlist (if not already selected) _, err := w.client.Get("https://www.hakopaxan-shop.de/html/wishlist-wishlist__switch-" + id + ".html")
if err != nil {
return err
}
return nil return nil
} }
*/
func (w *paxanWebClient) AddToWishlist(artnr string, wishlist string) error {
//w.getWishList()
w.selectWishlist("10")
//w.client.PostForm()
formvalues := make(url.Values)
//formvalues.Set("x", "10")
//formvalues.Set("y", "8")
formvalues.Set("itemId", artnr)
formvalues.Set("wishlist_add_position", "true")
formvalues.Set("wvarid", artnr)
formvalues.Set("qty", "1")
formvalues.Set("me", "0")
_, err := w.client.PostForm("https://www.hakopaxan-shop.de/html/item.html", formvalues)
if err != nil {
return err
}
return nil
//set to old wishlist
}