Add scan function for downloading every form variation

This commit is contained in:
2023-12-12 05:17:04 -06:00
parent c970ee4ef8
commit a23d9e881f
3 changed files with 67 additions and 9 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
.env .env
properties.html properties.html
park park
forms/*

View File

@@ -6,14 +6,6 @@ A Discord bot for easily registering parking at the Register2Park parking system
- Register against the location using the make, model, and plate. - Register against the location using the make, model, and plate.
- Another command can register your email and acquire an email confirmation. - Another command can register your email and acquire an email confirmation.
### Syntax
```
/register <make> <model> <plate>
/location <location>
/email <email>
```
## Feature Ideas ## Feature Ideas
- Register commands in new guilds automatically - Register commands in new guilds automatically

65
scan.go Normal file
View File

@@ -0,0 +1,65 @@
package main
import (
"bytes"
"errors"
"fmt"
"io"
"log"
"os"
"path/filepath"
)
func Scan() {
locations := GetLocations()
total := len(locations)
for i, location := range locations {
log.Printf("[%6.2f] Fetching \"%s\" ", float64(i+1)/float64(total)*100, location.name)
body := fmt.Sprintf("propertyIdSelected=%d&propertySource=parking-snap", location.id)
req := BuildRequestWithBody("POST", "/register-get-vehicle-form", nil, bytes.NewBufferString(body))
SetTypicalHeaders(req, nil, nil, false)
onRequest(req)
res, _ := client.Do(req)
onResponse(res)
html, _ := io.ReadAll(res.Body)
html_path := filepath.Join("./forms", fmt.Sprintf("%d.html", location.id))
// Check that file exists and has more than 16 bytes
stats, err := os.Stat(html_path)
if err != nil && errors.Is(err, os.ErrNotExist) {
// File does not exist, create it
file, err := os.Create(html_path)
if err != nil {
panic(err)
}
defer file.Close()
_, err = file.Write(html)
if err != nil {
panic(err)
}
log.Println("DONE")
} else if stats.Size() < 16 {
// File exists, but is empty
file, err := os.OpenFile(html_path, os.O_WRONLY, 0644)
if err != nil {
panic(err)
}
defer file.Close()
_, err = file.Write(html)
if err != nil {
panic(err)
}
log.Println("OVERWRITE")
} else {
// File exists and is not empty, do nothing
log.Println("SKIP")
}
}
}