123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- // Copyright 2020 gf Author(https://github.com/gogf/gf). All Rights Reserved.
- //
- // This Source Code Form is subject to the terms of the MIT License.
- // If a copy of the MIT was not distributed with this file,
- // You can obtain one at https://github.com/gogf/gf.
- package ghttp
- import (
- "context"
- "time"
- )
- // Prefix is a chaining function,
- // which sets the URL prefix for next request of this client.
- func (c *Client) Prefix(prefix string) *Client {
- newClient := c
- if c.parent == nil {
- newClient = c.Clone()
- }
- newClient.SetPrefix(prefix)
- return newClient
- }
- // Header is a chaining function,
- // which sets custom HTTP headers with map for next request.
- func (c *Client) Header(m map[string]string) *Client {
- newClient := c
- if c.parent == nil {
- newClient = c.Clone()
- }
- newClient.SetHeaderMap(m)
- return newClient
- }
- // Header is a chaining function,
- // which sets custom HTTP header using raw string for next request.
- func (c *Client) HeaderRaw(headers string) *Client {
- newClient := c
- if c.parent == nil {
- newClient = c.Clone()
- }
- newClient.SetHeaderRaw(headers)
- return newClient
- }
- // Cookie is a chaining function,
- // which sets cookie items with map for next request.
- func (c *Client) Cookie(m map[string]string) *Client {
- newClient := c
- if c.parent == nil {
- newClient = c.Clone()
- }
- newClient.SetCookieMap(m)
- return newClient
- }
- // ContentType is a chaining function,
- // which sets HTTP content type for the next request.
- func (c *Client) ContentType(contentType string) *Client {
- newClient := c
- if c.parent == nil {
- newClient = c.Clone()
- }
- newClient.SetContentType(contentType)
- return newClient
- }
- // ContentJson is a chaining function,
- // which sets the HTTP content type as "application/json" for the next request.
- //
- // Note that it also checks and encodes the parameter to JSON format automatically.
- func (c *Client) ContentJson() *Client {
- newClient := c
- if c.parent == nil {
- newClient = c.Clone()
- }
- newClient.SetContentType("application/json")
- return newClient
- }
- // ContentXml is a chaining function,
- // which sets the HTTP content type as "application/xml" for the next request.
- //
- // Note that it also checks and encodes the parameter to XML format automatically.
- func (c *Client) ContentXml() *Client {
- newClient := c
- if c.parent == nil {
- newClient = c.Clone()
- }
- newClient.SetContentType("application/xml")
- return newClient
- }
- // TimeOut is a chaining function,
- // which sets the timeout for next request.
- func (c *Client) Timeout(t time.Duration) *Client {
- newClient := c
- if c.parent == nil {
- newClient = c.Clone()
- }
- newClient.SetTimeout(t)
- return newClient
- }
- // BasicAuth is a chaining function,
- // which sets HTTP basic authentication information for next request.
- func (c *Client) BasicAuth(user, pass string) *Client {
- newClient := c
- if c.parent == nil {
- newClient = c.Clone()
- }
- newClient.SetBasicAuth(user, pass)
- return newClient
- }
- // Ctx is a chaining function,
- // which sets context for next request of this client.
- func (c *Client) Ctx(ctx context.Context) *Client {
- newClient := c
- if c.parent == nil {
- newClient = c.Clone()
- }
- newClient.SetCtx(ctx)
- return newClient
- }
- // Retry is a chaining function,
- // which sets retry count and interval when failure for next request.
- func (c *Client) Retry(retryCount int, retryInterval time.Duration) *Client {
- newClient := c
- if c.parent == nil {
- newClient = c.Clone()
- }
- newClient.SetRetry(retryCount, retryInterval)
- return c
- }
- // Proxy is a chaining function,
- // which sets proxy for next request.
- // Make sure you pass the correct `proxyURL`.
- // The correct pattern is like `http://USER:PASSWORD@IP:PORT` or `socks5://USER:PASSWORD@IP:PORT`.
- // Only `http` and `socks5` proxies are supported currently.
- func (c *Client) Proxy(proxyURL string) *Client {
- newClient := c
- if c.parent == nil {
- newClient = c.Clone()
- }
- newClient.SetProxy(proxyURL)
- return c
- }
- // RedirectLimit is a chaining function,
- // which sets the redirect limit the number of jumps for the request.
- func (c *Client) RedirectLimit(redirectLimit int) *Client {
- newClient := c
- if c.parent == nil {
- newClient = c.Clone()
- }
- newClient.SetRedirectLimit(redirectLimit)
- return c
- }
|