diff --git a/.gitignore b/.gitignore index 7e550ae..d78bbd3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .env properties.html -park \ No newline at end of file +park +forms/* \ No newline at end of file diff --git a/README.md b/README.md index df7b15e..2abb196 100644 --- a/README.md +++ b/README.md @@ -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. - Another command can register your email and acquire an email confirmation. -### Syntax - -``` -/register -/location -/email -``` - ## Feature Ideas - Register commands in new guilds automatically diff --git a/scan.go b/scan.go new file mode 100644 index 0000000..e13fb92 --- /dev/null +++ b/scan.go @@ -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") + } + } +}