Home / Function/ doRedirectsWithClient() — fiber Function Reference

doRedirectsWithClient() — fiber Function Reference

Architecture documentation for the doRedirectsWithClient() function in transport.go from the fiber codebase.

Entity Profile

Dependency Diagram

graph TD
  973b023d_d4d8_36a4_1c37_32dd70b4b0c5["doRedirectsWithClient()"]
  cfe2515b_ab6b_e576_a031_f986d4835acf["transport.go"]
  973b023d_d4d8_36a4_1c37_32dd70b4b0c5 -->|defined in| cfe2515b_ab6b_e576_a031_f986d4835acf
  af9bc46a_b42c_7b43_469d_8b3a6d336038["composeRedirectURL()"]
  973b023d_d4d8_36a4_1c37_32dd70b4b0c5 -->|calls| af9bc46a_b42c_7b43_469d_8b3a6d336038
  style 973b023d_d4d8_36a4_1c37_32dd70b4b0c5 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

client/transport.go lines 299–348

func doRedirectsWithClient(req *fasthttp.Request, resp *fasthttp.Response, maxRedirects int, client redirectClient) error {
	currentURL := req.URI().String()
	redirects := 0
	singleRequestOnly := maxRedirects <= 0

	if maxRedirects < 0 {
		maxRedirects = defaultRedirectLimit
		singleRequestOnly = false
	}

	for {
		req.SetRequestURI(currentURL)

		if err := client.Do(req, resp); err != nil {
			return err
		}

		statusCode := resp.Header.StatusCode()
		if !fasthttp.StatusCodeIsRedirect(statusCode) {
			return nil
		}

		if singleRequestOnly {
			return nil
		}

		redirects++
		if redirects > maxRedirects {
			return fasthttp.ErrTooManyRedirects
		}

		location := resp.Header.Peek("Location")
		if len(location) == 0 {
			return fasthttp.ErrMissingLocation
		}

		nextURL, err := composeRedirectURL(currentURL, location, req.DisableRedirectPathNormalizing)
		if err != nil {
			return err
		}
		currentURL = nextURL

		if req.Header.IsPost() && (statusCode == fasthttp.StatusMovedPermanently || statusCode == fasthttp.StatusFound || statusCode == fasthttp.StatusSeeOther) {
			req.Header.SetMethod(fasthttp.MethodGet)
			req.SetBody(nil)
			req.Header.Del(fasthttp.HeaderContentType)
			req.Header.Del(fasthttp.HeaderContentLength)
		}
	}
}

Domain

Subdomains

Defined In

Frequently Asked Questions

What does doRedirectsWithClient() do?
doRedirectsWithClient() is a function in the fiber codebase, defined in client/transport.go.
Where is doRedirectsWithClient() defined?
doRedirectsWithClient() is defined in client/transport.go at line 299.
What does doRedirectsWithClient() call?
doRedirectsWithClient() calls 1 function(s): composeRedirectURL.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free