-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
99 lines (82 loc) · 2.63 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package main
import (
"flag"
"fmt"
"log"
"net/http"
"net/url"
"strings"
"github.com/PuerkitoBio/goquery"
)
const URL = "http://simpator.kaltimprov.go.id/cari.php"
var (
vehicleNumberFlag = flag.String("nomor", "default", "-nomor=1234")
vehicleTypeFlag = flag.String("seri", "default", "-seri=ABCD")
)
// Fetch request to URL so we can get
// the HTML return response
func fetch(vehicleNumberFlag string, vehicleTypeFlag string) *http.Response {
form := url.Values{
"kt": {"KT"},
"nomor": {vehicleNumberFlag},
"seri": {vehicleTypeFlag},
}
req, err := http.NewRequest(http.MethodPost, URL, strings.NewReader(form.Encode()))
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
if err != nil {
log.Fatalln(err)
}
defer req.Body.Close()
client := &http.Client{}
response, err := client.Do(req)
if err != nil {
log.Fatalln(err)
}
return response
}
// Get input value from HTML document response
// returning array of map input HTML ID
func getValueFromScrapedResult(doc *goquery.Document, htmlIDs []string) map[string]string {
inputValues := map[string]string{}
for _, htmlID := range htmlIDs {
value, _ := doc.Find("#" + htmlID).Attr("value")
inputValues[htmlID] += value
}
return inputValues
}
func main() {
flag.Parse()
response := fetch(*vehicleNumberFlag, *vehicleTypeFlag)
doc, err := goquery.NewDocumentFromReader(response.Body)
if err != nil {
log.Fatalln(err)
}
htmlIDs := []string{"nopol", "kode", "nama",
"alamat", "merk", "tipe",
"thn", "milik", "noka",
"nosin", "tg_pkb", "tg_stnk",
"pkb_pok", "pkb_den", "swd_pok",
"swd_den", "pnbp", "tnkb",
"total",
}
results := getValueFromScrapedResult(doc, htmlIDs)
fmt.Println("\nNomor Polisi :", results["nopol"])
fmt.Println("Kode Bayar :", results["kode"])
fmt.Println("Nama Pemilik :", results["nama"])
fmt.Println("Alamat Pemilik :", results["alamat"])
fmt.Println("Merek Kendaraan :", results["merk"])
fmt.Println("Tipe/Model Kendaraan :", results["tipe"])
fmt.Println("Tahun Rakitan :", results["thn"])
fmt.Println("Kepemilikian Kendaraan Ke :", results["milik"])
fmt.Println("Nomor Rangka :", results["noka"])
fmt.Println("Nomor Mesin :", results["nosin"])
fmt.Println("Masa Pajak :", results["tg_pkb"])
fmt.Println("Masa Berlaku STNK :", results["tg_stnk"])
fmt.Println("Biaya Pokok PKB :", results["pkb_pok"])
fmt.Println("Biaya Denda PKB :", results["pkb_den"])
fmt.Println("Biaya Pokok SWDKLLJ :", results["swd_pok"])
fmt.Println("Biaya Denda SWDKLLJ :", results["swd_den"])
fmt.Println("PNBP STNK :", results["pnbp"])
fmt.Println("PNBP Plat :", results["tnkb"])
fmt.Println("Total Bayar :", results["total"])
}