feat: handle multiple providers
This commit is contained in:
112
internal/providers/huawei.go
Normal file
112
internal/providers/huawei.go
Normal file
@@ -0,0 +1,112 @@
|
||||
package providers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/go-rod/rod"
|
||||
)
|
||||
|
||||
type Huawei struct {
|
||||
usernameID string
|
||||
userpasswordID string
|
||||
loginText string
|
||||
skipText string
|
||||
netID string
|
||||
netWlanID string
|
||||
mainFrameID string
|
||||
wlanEnableID string
|
||||
page *rod.Page
|
||||
}
|
||||
|
||||
func NewHuawei(page *rod.Page) Huawei {
|
||||
return Huawei{
|
||||
usernameID: "#username",
|
||||
userpasswordID: "#userpassword",
|
||||
loginText: "Login",
|
||||
skipText: "Skip",
|
||||
netID: "#Net",
|
||||
netWlanID: "#Net-WLAN",
|
||||
mainFrameID: "#mainFrame",
|
||||
wlanEnableID: "#wlanEnable",
|
||||
page: page,
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Huawei) Login(user, pass string) error {
|
||||
username, err := p.page.Element(p.usernameID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.userpasswordID, err)
|
||||
}
|
||||
username.MustInput(user)
|
||||
log.Println(p.usernameID, "DONE")
|
||||
|
||||
userpassword, err := p.page.Element(p.userpasswordID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.userpasswordID, err)
|
||||
}
|
||||
userpassword.MustInput(pass)
|
||||
log.Println(p.userpasswordID, "DONE")
|
||||
|
||||
login, err := p.page.Element(`input[value="` + p.loginText + `"]`)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.loginText, err)
|
||||
}
|
||||
login.MustClick()
|
||||
log.Println(p.loginText, "DONE")
|
||||
|
||||
skip, err := p.page.Element(`input[value="` + p.skipText + `"]`)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.skipText, err)
|
||||
}
|
||||
skip.MustClick()
|
||||
log.Println(p.skipText, "DONE")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p Huawei) SwitchWIFI() error {
|
||||
net, err := p.page.Element(p.netID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.netID, err)
|
||||
}
|
||||
net.MustClick()
|
||||
log.Println(p.netID, "DONE")
|
||||
|
||||
netWlan, err := p.page.Element(p.netWlanID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.netWlanID, err)
|
||||
}
|
||||
netWlan.MustClick()
|
||||
log.Println(p.netWlanID, "DONE")
|
||||
|
||||
frameElement, err := p.page.Element(p.mainFrameID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.mainFrameID, err)
|
||||
}
|
||||
|
||||
mainFrame, err := frameElement.Frame()
|
||||
if err != nil {
|
||||
return fmt.Errorf("frameElement.Frame: %s", err)
|
||||
}
|
||||
|
||||
wlanEnable, err := mainFrame.Element(p.wlanEnableID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("mainFrame.Element %s: %s", p.wlanEnableID, err)
|
||||
}
|
||||
wlanEnable.MustClick()
|
||||
log.Println(p.wlanEnableID, "DONE")
|
||||
|
||||
sysSubmitID := "#sysSubmit"
|
||||
sysSubmit, err := mainFrame.Element(sysSubmitID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("mainFrame.Element %s: %s", sysSubmitID, err)
|
||||
}
|
||||
sysSubmit.MustClick()
|
||||
log.Println(sysSubmitID, "DONE")
|
||||
|
||||
// TODO: improve this and wait until something should happens (refresh)
|
||||
time.Sleep(time.Second * 3)
|
||||
return nil
|
||||
}
|
||||
129
internal/providers/nucom.go
Normal file
129
internal/providers/nucom.go
Normal file
@@ -0,0 +1,129 @@
|
||||
package providers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/go-rod/rod"
|
||||
)
|
||||
|
||||
type Nucom struct {
|
||||
usernameName string
|
||||
passwordName string
|
||||
loginSubmitID string
|
||||
wirelessTabID string
|
||||
wirelessMenuText string
|
||||
configureWarningID string
|
||||
wifiRadioID string
|
||||
saveID string
|
||||
radioOff string
|
||||
radioOn string
|
||||
page *rod.Page
|
||||
}
|
||||
|
||||
func NewNucom(page *rod.Page) Nucom {
|
||||
return Nucom{
|
||||
usernameName: "loginUser",
|
||||
passwordName: "loginPass",
|
||||
loginSubmitID: "btnApply",
|
||||
wirelessTabID: "menu_wireless",
|
||||
wirelessMenuText: "Básico",
|
||||
configureWarningID: "Configurar ahora",
|
||||
wifiRadioID: "radiohiddenButton",
|
||||
radioOff: "Apagada",
|
||||
radioOn: "Encendida",
|
||||
saveID: "basicApply",
|
||||
page: page,
|
||||
}
|
||||
}
|
||||
|
||||
func (p Nucom) Login(user, pass string) error {
|
||||
username, err := p.page.Element(`input[name="` + p.usernameName + `"]`)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.passwordName, err)
|
||||
}
|
||||
username.MustInput(user)
|
||||
log.Println(p.usernameName, "DONE")
|
||||
|
||||
userpassword, err := p.page.Element(`input[name="` + p.passwordName + `"]`)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.passwordName, err)
|
||||
}
|
||||
userpassword.MustInput(pass)
|
||||
log.Println(p.passwordName, "DONE")
|
||||
|
||||
login, err := p.page.Element(`input[id="` + p.loginSubmitID + `"]`)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.loginSubmitID, err)
|
||||
}
|
||||
login.MustClick()
|
||||
log.Println(p.loginSubmitID, "DONE")
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p Nucom) SwitchWIFI() error {
|
||||
wirelessMenu, err := p.page.Element(`a[id="` + p.wirelessTabID + `"]`)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.wirelessTabID, err)
|
||||
}
|
||||
wirelessMenu.MustClick()
|
||||
log.Println(p.wirelessTabID, "DONE")
|
||||
time.Sleep(time.Millisecond * 500)
|
||||
log.Println(p.page.MustInfo().URL)
|
||||
|
||||
isOn, _, err := p.page.Has(`[id="basicRadioButton"]`)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.wifiRadioID, err)
|
||||
}
|
||||
log.Println("is on", isOn)
|
||||
if !isOn {
|
||||
warningButton, err := p.page.Element(`[value="` + p.configureWarningID + `"]`)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.configureWarningID, err)
|
||||
}
|
||||
warningButton.MustClick()
|
||||
log.Println(warningButton, "DONE")
|
||||
}
|
||||
wifiRadios, err := p.page.Elements(`[name="radiohiddenButton"]`)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.wifiRadioID, err)
|
||||
}
|
||||
|
||||
if len(wifiRadios) != 2 {
|
||||
return fmt.Errorf("radios not found")
|
||||
}
|
||||
offChecked := wifiRadios[0].MustProperty("checked")
|
||||
|
||||
log.Println("wifiRadios[0]", wifiRadios[0].MustProperty("checked"))
|
||||
log.Println("wifiRadios[1]", wifiRadios[1].MustProperty("checked"))
|
||||
log.Println("offChecked.Bool()", offChecked.Bool())
|
||||
if offChecked.Bool() {
|
||||
wifiRadios[1].MustClick()
|
||||
} else {
|
||||
wifiRadios[0].MustClick()
|
||||
}
|
||||
|
||||
wifiRadios, err = p.page.Elements(`[name="radiohiddenButton"]`)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.wifiRadioID, err)
|
||||
}
|
||||
offChecked, err = wifiRadios[0].Property("checked")
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.wifiRadioID, err)
|
||||
}
|
||||
|
||||
log.Println("offChecked.Bool() AFTER CHECK", offChecked.Bool())
|
||||
log.Println(p.wifiRadioID, "DONE")
|
||||
|
||||
time.Sleep(time.Millisecond * 500)
|
||||
|
||||
saveButton, err := p.page.Element(`input[id="` + p.saveID + `"]`)
|
||||
if err != nil {
|
||||
return fmt.Errorf("page.Element %s: %s", p.saveID, err)
|
||||
}
|
||||
saveButton.MustClick()
|
||||
log.Println(p.saveID, "DONE")
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user