mirror of
https://gitgud.io/yats/libkiwi.git
synced 2026-06-18 09:05:29 -04:00
49 lines
757 B
Go
49 lines
757 B
Go
package libkiwi
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io"
|
|
"net/url"
|
|
|
|
"gitgud.io/yats/cerberus"
|
|
)
|
|
|
|
func (kf *KF) solveKiwiFlare(ctx context.Context, page io.Reader) error {
|
|
var (
|
|
c cerberus.Challenge
|
|
err error
|
|
|
|
host = fmt.Sprintf("https://%s/", kf.domain.Hostname())
|
|
)
|
|
|
|
switch {
|
|
case page != nil:
|
|
c, err = cerberus.ParseChallenge(page, host)
|
|
default:
|
|
c, err = cerberus.NewChallenge(ctx, kf.client, host)
|
|
}
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
s, err := cerberus.Solve(ctx, c)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
_, err = cerberus.Submit(ctx, kf.client, s, "/")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (kf *KF) urlFromPath(path string) *url.URL {
|
|
return &url.URL{
|
|
Scheme: "https",
|
|
Host: kf.domain.Hostname(),
|
|
Path: path,
|
|
}
|
|
}
|