|
- package pwn
-
- import (
- "context"
- "io"
- "net/http"
- )
-
- const (
- libVersion = "0.0.3"
- userAgent = "go.jolheiser.com/pwn v" + libVersion
- )
-
- // Client is a HaveIBeenPwned client
- type Client struct {
- ctx context.Context
- http *http.Client
- }
-
- // New returns a new HaveIBeenPwned Client
- func New(options ...ClientOption) *Client {
- client := &Client{
- ctx: context.Background(),
- http: http.DefaultClient,
- }
-
- for _, opt := range options {
- opt(client)
- }
-
- return client
- }
-
- // ClientOption is a way to modify a new Client
- type ClientOption func(*Client)
-
- // WithHTTP will set the http.Client of a Client
- func WithHTTP(httpClient *http.Client) func(pwnClient *Client) {
- return func(pwnClient *Client) {
- pwnClient.http = httpClient
- }
- }
-
- // WithContext will set the context.Context of a Client
- func WithContext(ctx context.Context) func(pwnClient *Client) {
- return func(pwnClient *Client) {
- pwnClient.ctx = ctx
- }
- }
-
- func newRequest(ctx context.Context, method, url string, body io.ReadCloser) (*http.Request, error) {
- req, err := http.NewRequestWithContext(ctx, method, url, body)
- if err != nil {
- return nil, err
- }
- req.Header.Add("User-Agent", userAgent)
- return req, nil
- }
|