2022-08-13 22:41:01 +08:00
package client
import (
"crypto/tls"
"net"
"net/http"
"time"
2022-08-17 14:25:14 +08:00
"gitea.com/gitea/proto-go/ping/v1/pingv1connect"
"gitea.com/gitea/proto-go/runner/v1/runnerv1connect"
2022-08-13 22:41:01 +08:00
"golang.org/x/net/http2"
)
// New returns a new runner client.
2022-10-15 20:03:33 +08:00
func New ( endpoint string , opts ... Option ) * HTTPClient {
2022-09-25 18:54:00 +08:00
cfg := & config { }
2022-08-13 22:41:01 +08:00
2022-08-14 10:59:09 +08:00
// Loop through each option
for _ , opt := range opts {
// Call the option giving the instantiated
2022-09-25 18:54:00 +08:00
opt . apply ( cfg )
2022-08-14 10:59:09 +08:00
}
2022-09-25 18:54:00 +08:00
if cfg . httpClient == nil {
cfg . httpClient = & http . Client {
Timeout : 1 * time . Minute ,
CheckRedirect : func ( * http . Request , [ ] * http . Request ) error {
return http . ErrUseLastResponse
} ,
Transport : & http2 . Transport {
AllowHTTP : true ,
DialTLS : func ( netw , addr string , cfg * tls . Config ) ( net . Conn , error ) {
return net . Dial ( netw , addr )
} ,
2022-08-13 22:41:01 +08:00
} ,
2022-09-25 18:54:00 +08:00
}
2022-08-13 22:41:01 +08:00
}
2022-09-25 18:54:00 +08:00
if cfg . skipVerify {
cfg . httpClient = & http . Client {
2022-08-13 22:41:01 +08:00
CheckRedirect : func ( * http . Request , [ ] * http . Request ) error {
return http . ErrUseLastResponse
} ,
Transport : & http . Transport {
Proxy : http . ProxyFromEnvironment ,
TLSClientConfig : & tls . Config {
InsecureSkipVerify : true ,
} ,
} ,
}
}
2022-09-25 18:54:00 +08:00
return & HTTPClient {
PingServiceClient : pingv1connect . NewPingServiceClient (
cfg . httpClient ,
endpoint ,
cfg . opts ... ,
) ,
RunnerServiceClient : runnerv1connect . NewRunnerServiceClient (
cfg . httpClient ,
endpoint ,
cfg . opts ... ,
) ,
}
2022-08-13 22:41:01 +08:00
}
2022-08-28 14:05:56 +08:00
var _ Client = ( * HTTPClient ) ( nil )
2022-08-13 22:41:01 +08:00
// An HTTPClient manages communication with the runner API.
type HTTPClient struct {
2022-09-25 18:54:00 +08:00
pingv1connect . PingServiceClient
runnerv1connect . RunnerServiceClient
2022-09-03 20:57:32 +08:00
}