aplus/aplus.go

77 lines
1.5 KiB
Go

package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
"strings"
)
func get_aplus(token string, link string, client http.Client) string {
resp, err := client.Get(link)
if err != nil {
fmt.Println("Error performing GET request to initial link.")
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
var aplus Aplus
json.Unmarshal(body, &aplus)
return aplus.URL
}
func get_form_from_request_body(req_body []byte) string {
body_str := string(req_body)
form_start := strings.Index(body_str, "<form")
form_end := strings.Index(body_str, "</form>") + 7
form_html := req_body[form_start:form_end]
return string(form_html)
}
// parse_form extracts form fields and values from the given HTML form string.
func parse_form(form_html string) url.Values {
form_values := make(url.Values)
inputs := strings.Split(form_html, "<input")
for _, input := range inputs {
// Extract field name and value
name := extract_attribute(input, "name")
value := extract_attribute(input, "value")
if name != "" {
form_values.Add(name, value)
}
}
return form_values
}
func extract_attribute(input string, attribute string) string {
start := strings.Index(input, attribute+"=\"")
if start == -1 {
start = strings.Index(input, attribute+"='")
}
if start == -1 {
return ""
}
start += len(attribute) + 2
end := strings.Index(input[start:], "\"")
if end == -1 {
end = strings.Index(input[start:], "'")
}
if end == -1 {
return ""
}
return input[start : start+end]
}