hcaptcha: github.com/kataras/hcaptcha Index | Files

package hcaptcha

import "github.com/kataras/hcaptcha"


Package Files



var (
    // ResponseContextKey is the default request's context key that response of a hcaptcha request is kept.
    ResponseContextKey interface{} = "hcaptcha"
    // DefaultFailureHandler is the default HTTP handler that is fired on hcaptcha failures. See `Client.FailureHandler`.
    DefaultFailureHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        http.Error(w, http.StatusText(http.StatusTooManyRequests), http.StatusTooManyRequests)

    // PostMaxMemory is the max memory for a form, defaults to 32MB
    PostMaxMemory int64 = 32 << 20
var HTMLForm = "" /* 203 byte string literal not displayed */

HTMLForm is the default HTML form for clients. It's totally optional, use your own code for the best possible result depending on your web application. See `ParseForm` and `RenderForm` for more.

func ParseForm Uses

func ParseForm(dataSiteKey, postActionRelativePath string) string

ParseForm parses the `HTMLForm` with the necessary parameters and returns its result for render.

func RenderForm Uses

func RenderForm(w http.ResponseWriter, dataSiteKey, postActionRelativePath string) (int, error)

RenderForm writes the `HTMLForm` to "w" response writer. See `_examples/basic/register_form.html` example for a custom form instead.

type Client Uses

type Client struct {
    HTTPClient *http.Client

    // FailureHandler if specified, fired when user does not complete hcaptcha successfully.
    // Failure and error codes information are kept as `Response` type
    // at the Request's Context key of "hcaptcha".
    // Defaults to a handler that writes a status code of 429 (Too Many Requests)
    // and without additional information.
    FailureHandler http.Handler
    // contains filtered or unexported fields

Client represents the hcaptcha client. It contains the underline HTTPClient which can be modified before API calls.

func New Uses

func New(secret string) *Client

New accepts a hpcatcha secret key and returns a new hcaptcha HTTP Client.

Instructions at: https://docs.hcaptcha.com/.

See its `Handler` and `SiteVerify` for details.

func (*Client) Handler Uses

func (c *Client) Handler(next http.Handler) http.Handler

Handler is the HTTP route middleware featured hcaptcha validation. It calls the `SiteVerify` method and fires the "next" when user completed the hcaptcha successfully,

otherwise it calls the Client's `FailureHandler`.

The hcaptcha's `Response` (which contains any `ErrorCodes`) is saved on the Request's Context (see `GetResponseFromContext`).

func (*Client) HandlerFunc Uses

func (c *Client) HandlerFunc(next func(http.ResponseWriter, *http.Request)) http.HandlerFunc

HandlerFunc same as `Handler` but it accepts and returns a type of `http.HandlerFunc` instead.

func (*Client) SiteVerify Uses

func (c *Client) SiteVerify(r *http.Request) (response Response)

SiteVerify accepts a "r" Request and a secret key (https://dashboard.hcaptcha.com/settings). It returns the hcaptcha's `Response`. The `response.Success` reports whether the validation passed. Any errors are passed through the `response.ErrorCodes` field.

type Response Uses

type Response struct {
    ChallengeTS string   `json:"challenge_ts"`
    Hostname    string   `json:"hostname"`
    ErrorCodes  []string `json:"error-codes,omitempty"`
    Success     bool     `json:"success"`
    Credit      bool     `json:"credit,omitempty"`

Response is the hcaptcha JSON response.

func Get Uses

func Get(r *http.Request) (Response, bool)

Get returns the hcaptcha `Response` of the current "r" request and reports whether was found or not.

Package hcaptcha imports 6 packages (graph). Updated 2020-05-02. Refresh now. Tools for package owners.