Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type HTTPRequest ¶
type HTTPRequest interface {
// WithJson creates a new HTTP request with JSON payload.
//
// This function abstracts the complexities of request creation and provides a simple interface for
// developers to craft and execute HTTP requests with JSON payloads.
//
// Parameters:
// requestModel: An interface{} representing the request model to be serialized to JSON.
//
// Returns:
// An HTTPRequest interface representing the generated HTTP request.
//
// Example:
// // Creating a POST request with JSON payload
// request := WithJSON(requestModel{"key": "value"})
WithJson(requestModel interface{}) HTTPRequest
// WithXml creates a new HTTP request with XML payload.
//
// This function abstracts the complexities of request creation and provides a simple interface for
// developers to craft and execute HTTP requests with XML payloads.
//
// Parameters:
// requestModel: An interface{} representing the request model to be serialized to XML.
//
// Returns:
// An HTTPRequest interface representing the generated HTTP request.
//
// Example:
// // Creating a POST request with XML payload
// request := WithXML(requestModel{"key": "value"})
WithXml(requestModel interface{}) HTTPRequest
// WithFromURLEncoded creates a new HTTPRequest configured to send form data encoded in URL form.
// The formData parameter is a map[string]interface{} containing the form data to be sent.
// Each key-value pair in the map represents a form field and its corresponding value.
// The values in formData can be of any type, as they will be converted to strings.
//
// Example:
// // Create a new HTTPRequest with form data encoded in URL form
// req := WithFromURLEncoded(map[string]interface{}{
// "username": "john_doe",
// "password": "password123",
// "age": 30,
// })
//
WithFromURLEncoded(formData map[string]interface{}) HTTPRequest
WithContext(context context.Context) HTTPRequest
WithBasicAuth(username string, password string) HTTPRequest
WithJWTAuth(token string) HTTPRequest
// WithQueryParameters creates a new HTTPRequest with query parameters.
// The queryParam parameter is a map[string]string containing the query parameters to be added to the request URL.
// Each key-value pair in the map represents a query parameter key and its corresponding value.
// Query parameters are commonly used in HTTP requests to pass additional data to the server.
//
// Example:
// // Create a new HTTPRequest with query parameters
// queryParams := map[string]string{
// "page": "1",
// "limit": "10",
// }
// req := WithQueryParameters(queryParams)
WithQueryParameters(queryParam map[string]string) HTTPRequest
// WithOAuth creates a new HTTPRequest with OAuth 2.0 authentication.
// The token parameter represents the OAuth token used for authentication.
// OAuth 2.0 is an authorization framework widely used for secure authorization and authentication.
// It enables third-party applications to obtain limited access to an HTTP service on behalf of a resource owner.
//
// Example:
// // Create a new HTTPRequest with OAuth 2.0 authentication
// req := WithOAuth("Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBHb3VwZXIiLCJpYXQiOjE1MTYyMzkwMjJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c")
WithOauth(token string) HTTPRequest
// AddHeaders creates a new HTTPRequest with additional custom headers.
// The key parameter represents the name of the header, and the value parameter represents its corresponding value.
// Custom headers can be used to include additional information in the HTTP request headers.
//
// Example:
// // Create a new HTTPRequest with custom headers
// req := AddHeaders("Authorization", "Bearer token123").
// AddHeaders("Content-Type", "application/json").
// AddHeaders("X-Custom-Header", "custom-value")
AddHeaders(key string, value string) HTTPRequest
// AddCookies creates a new HTTPRequest with additional cookies.
// The cookies parameter represents the cookie(s) to be added to the request.
// Cookies are small pieces of data sent from a server and stored on the client side.
// They are commonly used for session management, authentication, and tracking.
//
// Example:
// // Create a new HTTPRequest with additional cookies
// cookie := &http.Cookie{
// Name: "sessionID",
// Value: "abcdef123456",
// }
// req := AddCookies(cookie)
AddCookies(cookies *http.Cookie) HTTPRequest
// GetResponseAs retrieves the HTTP response and deserializes it into the provided response model based on the response Content-Type.
// The responseModel parameter represents the model into which the HTTP response will be deserialized.
// It should be a pointer to the struct or a variable with the appropriate type to store the response data.
// This method automatically detects the response Content-Type and deserializes the response body accordingly.
//
// Example:
// // Define a struct representing the expected response model
// type User struct {
// ID int `json:"id"`
// Username string `json:"username"`
// }
// // Create a new HTTPRequest and send it to retrieve user data
// err := NewRequest().GetResponseAs(&user)
// if err != nil {
// // Handle error
// }
// // Now 'user' contains the parsed response data
//
// Note:
// The responseModel parameter should be a pointer to a struct or variable with the appropriate type to store the response data.
// If responseModel itself is a string, the method returns the response body as a string.
// If responseModel itself is a []byte, the method returns the response body as a []byte.
// If the response Content-Type is "application/xml", the method deserializes the XML response body into the provided response model.
// If the response Content-Type is "application/json", the method deserializes the JSON response body into the provided response model.
// Ensure that the response body is in a format compatible with the provided response model.
// Error handling should be implemented to handle deserialization errors or unexpected response formats.
GetResponseAs(responseModel interface{}) HTTPRequest
// GetResponseStatusCodeAs retrieves the HTTP response status code and stores it in the provided integer pointer.
// The httpStatusCode parameter is a pointer to an integer variable where the HTTP response status code will be stored.
// This method is useful for retrieving the HTTP status code without parsing the entire response body.
//
// Example:
// // Create a new HTTPRequest and send it to retrieve the response status code
// req := NewRequest()
// var statusCode int
// err := req.GetResponseStatusCodeAs(&statusCode)
// if err != nil {
// // Handle error
// }
// // Now 'statusCode' contains the HTTP response status code
GetResponseStatusCodeAs(httpStatusCode *int) HTTPRequest
// GetResponseCookiesAs retrieves the HTTP response cookies and stores them in the provided slice of *http.Cookie pointers.
// The cookies parameter is a pointer to a slice of *http.Cookie where the HTTP response cookies will be stored.
// This method is useful for extracting cookies from an HTTP response for further processing.
//
// Example:
// // Create a new HTTPRequest and send it to retrieve the response cookies
// req := NewRequest()
// var responseCookies []*http.Cookie
// err := req.GetResponseCookiesAs(&responseCookies)
// if err != nil {
// // Handle error
// }
// // Now 'responseCookies' contains the cookies from the HTTP response
//
GetResponseCookiesAs(cookies *[]*http.Cookie) HTTPRequest
// GetResponseHeadersAs retrieves the HTTP response headers and stores them in the provided map of string slices.
// The respHeaders parameter is a pointer to a map[string][]string where the HTTP response headers will be stored.
// This method is useful for extracting headers from an HTTP response for further processing.
//
// Example:
// // Create a new HTTPRequest and send it to retrieve the response headers
// req := NewRequest()
// var responseHeaders map[string][]string
// err := req.GetResponseHeadersAs(&responseHeaders)
// if err != nil {
// // Handle error
// }
// // Now 'responseHeaders' contains the headers from the HTTP response
GetResponseHeadersAs(respHeaders *map[string][]string) HTTPRequest
// GET sends a GET request to the specified URL.
// If a response model is provided, the function binds the response body, headers, and status code to the model.
// It returns an error if the request fails or if the response status code is not in the 2xx range.
//
// Parameters:
// - url: The URL to which the GET request will be sent.
//
// Example:
// // Create a new HTTPRequest and send it to retrieve the response status code.
// var statusCode int
// err := NewRequest().GetResponseStatusCodeAs(&statusCode).GET("https://example.com")
// if err != nil {
// // Handle error
// }
// // Now 'statusCode' contains the HTTP response status code.
//
// Note:
// This function is a convenient wrapper for sending simple GET requests.
// If a response model is provided, the function binds the response body, headers, and status code to the model.
// Error handling should be implemented to handle communication errors or unexpected responses.
GET(url string) error
// POST sends a POST request to the specified URL.
// It returns an error if the request fails or if the response status code is not in the 2xx range.
//
// Parameters:
// - url: The URL to which the POST request will be sent.
//
// Example:
// // Send a POST request to the specified URL and retrieve the response status code
// var statusCode int
// err := NewRequest().GetResponseStatusCodeAs(&statusCode).POST("https://example.com")
// if err != nil {
// // Handle error
// }
//
// Note:
// This function is a convenient wrapper for sending simple POST requests.
// Error handling should be implemented to handle communication errors or unexpected responses.
POST(url string) error
// PUT sends a PUT request to the specified URL.
// It returns an error if the request fails or if the response status code is not in the 2xx range.
//
// Parameters:
// - url: The URL to which the PUT request will be sent.
//
// Example:
// // Send a PUT request to the specified URL and retrieve the response status code
// var statusCode int
// err := NewRequest().GetResponseStatusCodeAs(&statusCode).PUT("https://example.com")
// if err != nil {
// // Handle error
// }
//
// Note:
// This function is a convenient wrapper for sending simple PUT requests.
// Error handling should be implemented to handle communication errors or unexpected responses.
PUT(url string) error
// PATCH sends a PATCH request to the specified URL.
// It returns an error if the request fails or if the response status code is not in the 2xx range.
//
// Parameters:
// - url: The URL to which the PATCH request will be sent.
//
// Example:
// // Send a PATCH request to the specified URL and retrieve the response status code
// var statusCode int
// err := NewRequest().GetResponseStatusCodeAs(&statusCode).PATCH("https://example.com")
// if err != nil {
// // Handle error
// }
//
// Note:
// This function is a convenient wrapper for sending simple PATCH requests.
// Error handling should be implemented to handle communication errors or unexpected responses.
PATCH(url string) error
// DELETE sends a DELETE request to the specified URL.
// It returns an error if the request fails or if the response status code is not in the 2xx range.
//
// Parameters:
// - url: The URL to which the DELETE request will be sent.
//
// Example:
// // Send a DELETE request to the specified URL and retrieve the response status code
// var statusCode int
// err := NewRequest().GetResponseStatusCodeAs(&statusCode).DELETE("https://example.com")
// if err != nil {
// // Handle error
// }
//
// Note:
// This function is a convenient wrapper for sending simple DELETE requests.
// Error handling should be implemented to handle communication errors or unexpected responses.
DELETE(url string) error
// Execute sends an HTTP request with the specified method and URL.
// It returns an error if the request fails or encounters any issues during execution.
//
// Parameters:
// - Method: The HTTP method to use for the request (e.g., "GET", "POST", "PUT").
// - url: The URL to which the HTTP request will be sent.
//
// Example:
// // Send a POST request to the specified URL
// err := req.Execute("POST", "https://example.com")
// if err != nil {
// // Handle error
// }
//
// Note:
// This method allows for sending HTTP requests with custom HTTP methods (e.g., "PUT", "DELETE").
// For a convenient wrapper for sending simple POST requests, see the POST method.
// Error handling should be implemented to handle communication errors or unexpected responses.
Execute(Method string, url string) error
// Error returns an error.
Error() error
}
type RestClient ¶
type RestClient interface {
// NewRequest generates a new HTTP request object implementing the HTTPRequest interface.
//
// This function abstracts the complexities of request creation and provides a simple interface for
// developers to craft and execute HTTP requests programmatically.
NewRequest() HTTPRequest
// NewRequestWithRetries creates a new HTTPRequest with retry functionality.
// It retries the request for a maximum number of times specified by maxNoOfRetries
// if the API fails with any of the expected status codes specified in statusCodes.
//
// Parameters:
// - maxNoOfRetries: The maximum number of retries allowed for the request if it fails.
// - statusCodes: A slice of integers representing the HTTP status codes on which
// retrying the request is desired.
//
// Example:
//
// // Create a new HTTPRequest with retry functionality
// req := NewRequestWithRetries(3, []int{500, 502})
// // Perform the request with retries
// resp, err := req.Send(url)
//
// Note:
//
// The statusCodes parameter should contain the HTTP status codes for which
// retries are desired. If the request fails with any of the specified status codes,
// it will be retried up to maxNoOfRetries times.
NewRequestWithRetries(maxNoOfRetries uint, statusCodes []int) HTTPRequest
}
func NewRestClient ¶
func NewRestClient(httpClient client.HttpClient) RestClient
Click to show internal directories.
Click to hide internal directories.