service

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 26, 2024 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Overview

Package service provides an HTTP client with features for logging, metrics, and resilience.It supports various functionalities like health checks, circuit-breaker and various authentication.

Package service is a generated GoMock package.

Package service is a generated GoMock package.

Index

Constants

View Source
const (
	ClosedState = iota
	OpenState
)

circuitBreaker states.

Variables

View Source
var (
	// ErrCircuitOpen indicates that the circuit breaker is open.
	ErrCircuitOpen                        = errors.New("unable to connect to server at host")
	ErrUnexpectedCircuitBreakerResultType = errors.New("unexpected result type from circuit breaker")
)

Functions

func NewCircuitBreaker

func NewCircuitBreaker(config CircuitBreakerConfig, h HTTP) *circuitBreaker

NewCircuitBreaker creates a new circuitBreaker instance based on the provided config.

Types

type APIKeyConfig

type APIKeyConfig struct {
	APIKey string
}

func (*APIKeyConfig) AddOption

func (a *APIKeyConfig) AddOption(h HTTP) HTTP

type BasicAuthConfig

type BasicAuthConfig struct {
	UserName string
	Password string
}

func (*BasicAuthConfig) AddOption

func (a *BasicAuthConfig) AddOption(h HTTP) HTTP

type CircuitBreakerConfig

type CircuitBreakerConfig struct {
	Threshold int           // Threshold represents the max no of retry before switching the circuit breaker state.
	Interval  time.Duration // Interval represents the time interval duration between hitting the HealthURL
}

CircuitBreakerConfig holds the configuration for the circuitBreaker.

func (*CircuitBreakerConfig) AddOption

func (cb *CircuitBreakerConfig) AddOption(h HTTP) HTTP

type DefaultHeaders

type DefaultHeaders struct {
	Headers map[string]string
}

func (*DefaultHeaders) AddOption

func (a *DefaultHeaders) AddOption(h HTTP) HTTP

type ErrorLog

type ErrorLog struct {
	*Log
	ErrorMessage string `json:"errorMessage"`
}

func (*ErrorLog) PrettyPrint

func (el *ErrorLog) PrettyPrint(writer io.Writer)

type HTTP

type HTTP interface {

	// HealthCheck to get the service health and report it to the current application
	HealthCheck(ctx context.Context) *Health
	// contains filtered or unexported methods
}

func NewHTTPService

func NewHTTPService(serviceAddress string, logger Logger, metrics Metrics, options ...Options) HTTP

NewHTTPService function creates a new instance of the httpService struct, which implements the HTTP interface. It initializes the http.Client, url, Tracer, and Logger fields of the httpService struct with the provided values.

type Health

type Health struct {
	Status  string                 `json:"status"`
	Details map[string]interface{} `json:"details"`
}

type HealthConfig

type HealthConfig struct {
	HealthEndpoint string
	Timeout        int
}

func (*HealthConfig) AddOption

func (h *HealthConfig) AddOption(svc HTTP) HTTP

type Log

type Log struct {
	Timestamp     time.Time `json:"timestamp"`
	ResponseTime  int64     `json:"latency"`
	CorrelationID string    `json:"correlationId"`
	ResponseCode  int       `json:"responseCode"`
	HTTPMethod    string    `json:"httpMethod"`
	URI           string    `json:"uri"`
}

func (*Log) PrettyPrint

func (l *Log) PrettyPrint(writer io.Writer)

type Logger

type Logger interface {
	Log(args ...interface{})
}

type Metrics

type Metrics interface {
	RecordHistogram(ctx context.Context, name string, value float64, labels ...string)
}

type MockHTTP

type MockHTTP struct {
	// contains filtered or unexported fields
}

MockHTTP is a mock of HTTP interface.

func NewMockHTTP

func NewMockHTTP(ctrl *gomock.Controller) *MockHTTP

NewMockHTTP creates a new mock instance.

func (*MockHTTP) Delete

func (m *MockHTTP) Delete(ctx context.Context, api string, body []byte) (*http.Response, error)

Delete mocks base method.

func (*MockHTTP) DeleteWithHeaders

func (m *MockHTTP) DeleteWithHeaders(ctx context.Context, api string, body []byte, headers map[string]string) (*http.Response, error)

DeleteWithHeaders mocks base method.

func (*MockHTTP) EXPECT

func (m *MockHTTP) EXPECT() *MockHTTPMockRecorder

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockHTTP) Get

func (m *MockHTTP) Get(ctx context.Context, api string, queryParams map[string]any) (*http.Response, error)

Get mocks base method.

func (*MockHTTP) GetWithHeaders

func (m *MockHTTP) GetWithHeaders(ctx context.Context, path string, queryParams map[string]any, headers map[string]string) (*http.Response, error)

GetWithHeaders mocks base method.

func (*MockHTTP) HealthCheck

func (m *MockHTTP) HealthCheck(ctx context.Context) *Health

HealthCheck mocks base method.

func (*MockHTTP) Patch

func (m *MockHTTP) Patch(ctx context.Context, api string, queryParams map[string]any, body []byte) (*http.Response, error)

Patch mocks base method.

func (*MockHTTP) PatchWithHeaders

func (m *MockHTTP) PatchWithHeaders(ctx context.Context, api string, queryParams map[string]any, body []byte, headers map[string]string) (*http.Response, error)

PatchWithHeaders mocks base method.

func (*MockHTTP) Post

func (m *MockHTTP) Post(ctx context.Context, path string, queryParams map[string]any, body []byte) (*http.Response, error)

Post mocks base method.

func (*MockHTTP) PostWithHeaders

func (m *MockHTTP) PostWithHeaders(ctx context.Context, path string, queryParams map[string]any, body []byte, headers map[string]string) (*http.Response, error)

PostWithHeaders mocks base method.

func (*MockHTTP) Put

func (m *MockHTTP) Put(ctx context.Context, api string, queryParams map[string]any, body []byte) (*http.Response, error)

Put mocks base method.

func (*MockHTTP) PutWithHeaders

func (m *MockHTTP) PutWithHeaders(ctx context.Context, api string, queryParams map[string]any, body []byte, headers map[string]string) (*http.Response, error)

PutWithHeaders mocks base method.

type MockHTTPMockRecorder

type MockHTTPMockRecorder struct {
	// contains filtered or unexported fields
}

MockHTTPMockRecorder is the mock recorder for MockHTTP.

func (*MockHTTPMockRecorder) Delete

func (mr *MockHTTPMockRecorder) Delete(ctx, api, body any) *gomock.Call

Delete indicates an expected call of Delete.

func (*MockHTTPMockRecorder) DeleteWithHeaders

func (mr *MockHTTPMockRecorder) DeleteWithHeaders(ctx, api, body, headers any) *gomock.Call

DeleteWithHeaders indicates an expected call of DeleteWithHeaders.

func (*MockHTTPMockRecorder) Get

func (mr *MockHTTPMockRecorder) Get(ctx, api, queryParams any) *gomock.Call

Get indicates an expected call of Get.

func (*MockHTTPMockRecorder) GetWithHeaders

func (mr *MockHTTPMockRecorder) GetWithHeaders(ctx, path, queryParams, headers any) *gomock.Call

GetWithHeaders indicates an expected call of GetWithHeaders.

func (*MockHTTPMockRecorder) HealthCheck

func (mr *MockHTTPMockRecorder) HealthCheck(ctx any) *gomock.Call

HealthCheck indicates an expected call of HealthCheck.

func (*MockHTTPMockRecorder) Patch

func (mr *MockHTTPMockRecorder) Patch(ctx, api, queryParams, body any) *gomock.Call

Patch indicates an expected call of Patch.

func (*MockHTTPMockRecorder) PatchWithHeaders

func (mr *MockHTTPMockRecorder) PatchWithHeaders(ctx, api, queryParams, body, headers any) *gomock.Call

PatchWithHeaders indicates an expected call of PatchWithHeaders.

func (*MockHTTPMockRecorder) Post

func (mr *MockHTTPMockRecorder) Post(ctx, path, queryParams, body any) *gomock.Call

Post indicates an expected call of Post.

func (*MockHTTPMockRecorder) PostWithHeaders

func (mr *MockHTTPMockRecorder) PostWithHeaders(ctx, path, queryParams, body, headers any) *gomock.Call

PostWithHeaders indicates an expected call of PostWithHeaders.

func (*MockHTTPMockRecorder) Put

func (mr *MockHTTPMockRecorder) Put(ctx, api, queryParams, body any) *gomock.Call

Put indicates an expected call of Put.

func (*MockHTTPMockRecorder) PutWithHeaders

func (mr *MockHTTPMockRecorder) PutWithHeaders(ctx, api, queryParams, body, headers any) *gomock.Call

PutWithHeaders indicates an expected call of PutWithHeaders.

type MockMetrics

type MockMetrics struct {
	// contains filtered or unexported fields
}

MockMetrics is a mock of Metrics interface.

func NewMockMetrics

func NewMockMetrics(ctrl *gomock.Controller) *MockMetrics

NewMockMetrics creates a new mock instance.

func (*MockMetrics) EXPECT

func (m *MockMetrics) EXPECT() *MockMetricsMockRecorder

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockMetrics) RecordHistogram

func (m *MockMetrics) RecordHistogram(ctx context.Context, name string, value float64, labels ...string)

RecordHistogram mocks base method.

type MockMetricsMockRecorder

type MockMetricsMockRecorder struct {
	// contains filtered or unexported fields
}

MockMetricsMockRecorder is the mock recorder for MockMetrics.

func (*MockMetricsMockRecorder) RecordHistogram

func (mr *MockMetricsMockRecorder) RecordHistogram(ctx, name, value any, labels ...any) *gomock.Call

RecordHistogram indicates an expected call of RecordHistogram.

type MockhttpClient

type MockhttpClient struct {
	// contains filtered or unexported fields
}

MockhttpClient is a mock of httpClient interface.

func NewMockhttpClient

func NewMockhttpClient(ctrl *gomock.Controller) *MockhttpClient

NewMockhttpClient creates a new mock instance.

func (*MockhttpClient) Delete

func (m *MockhttpClient) Delete(ctx context.Context, api string, body []byte) (*http.Response, error)

Delete mocks base method.

func (*MockhttpClient) DeleteWithHeaders

func (m *MockhttpClient) DeleteWithHeaders(ctx context.Context, api string, body []byte, headers map[string]string) (*http.Response, error)

DeleteWithHeaders mocks base method.

func (*MockhttpClient) EXPECT

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockhttpClient) Get

func (m *MockhttpClient) Get(ctx context.Context, api string, queryParams map[string]any) (*http.Response, error)

Get mocks base method.

func (*MockhttpClient) GetWithHeaders

func (m *MockhttpClient) GetWithHeaders(ctx context.Context, path string, queryParams map[string]any, headers map[string]string) (*http.Response, error)

GetWithHeaders mocks base method.

func (*MockhttpClient) Patch

func (m *MockhttpClient) Patch(ctx context.Context, api string, queryParams map[string]any, body []byte) (*http.Response, error)

Patch mocks base method.

func (*MockhttpClient) PatchWithHeaders

func (m *MockhttpClient) PatchWithHeaders(ctx context.Context, api string, queryParams map[string]any, body []byte, headers map[string]string) (*http.Response, error)

PatchWithHeaders mocks base method.

func (*MockhttpClient) Post

func (m *MockhttpClient) Post(ctx context.Context, path string, queryParams map[string]any, body []byte) (*http.Response, error)

Post mocks base method.

func (*MockhttpClient) PostWithHeaders

func (m *MockhttpClient) PostWithHeaders(ctx context.Context, path string, queryParams map[string]any, body []byte, headers map[string]string) (*http.Response, error)

PostWithHeaders mocks base method.

func (*MockhttpClient) Put

func (m *MockhttpClient) Put(ctx context.Context, api string, queryParams map[string]any, body []byte) (*http.Response, error)

Put mocks base method.

func (*MockhttpClient) PutWithHeaders

func (m *MockhttpClient) PutWithHeaders(ctx context.Context, api string, queryParams map[string]any, body []byte, headers map[string]string) (*http.Response, error)

PutWithHeaders mocks base method.

type MockhttpClientMockRecorder

type MockhttpClientMockRecorder struct {
	// contains filtered or unexported fields
}

MockhttpClientMockRecorder is the mock recorder for MockhttpClient.

func (*MockhttpClientMockRecorder) Delete

func (mr *MockhttpClientMockRecorder) Delete(ctx, api, body any) *gomock.Call

Delete indicates an expected call of Delete.

func (*MockhttpClientMockRecorder) DeleteWithHeaders

func (mr *MockhttpClientMockRecorder) DeleteWithHeaders(ctx, api, body, headers any) *gomock.Call

DeleteWithHeaders indicates an expected call of DeleteWithHeaders.

func (*MockhttpClientMockRecorder) Get

func (mr *MockhttpClientMockRecorder) Get(ctx, api, queryParams any) *gomock.Call

Get indicates an expected call of Get.

func (*MockhttpClientMockRecorder) GetWithHeaders

func (mr *MockhttpClientMockRecorder) GetWithHeaders(ctx, path, queryParams, headers any) *gomock.Call

GetWithHeaders indicates an expected call of GetWithHeaders.

func (*MockhttpClientMockRecorder) Patch

func (mr *MockhttpClientMockRecorder) Patch(ctx, api, queryParams, body any) *gomock.Call

Patch indicates an expected call of Patch.

func (*MockhttpClientMockRecorder) PatchWithHeaders

func (mr *MockhttpClientMockRecorder) PatchWithHeaders(ctx, api, queryParams, body, headers any) *gomock.Call

PatchWithHeaders indicates an expected call of PatchWithHeaders.

func (*MockhttpClientMockRecorder) Post

func (mr *MockhttpClientMockRecorder) Post(ctx, path, queryParams, body any) *gomock.Call

Post indicates an expected call of Post.

func (*MockhttpClientMockRecorder) PostWithHeaders

func (mr *MockhttpClientMockRecorder) PostWithHeaders(ctx, path, queryParams, body, headers any) *gomock.Call

PostWithHeaders indicates an expected call of PostWithHeaders.

func (*MockhttpClientMockRecorder) Put

func (mr *MockhttpClientMockRecorder) Put(ctx, api, queryParams, body any) *gomock.Call

Put indicates an expected call of Put.

func (*MockhttpClientMockRecorder) PutWithHeaders

func (mr *MockhttpClientMockRecorder) PutWithHeaders(ctx, api, queryParams, body, headers any) *gomock.Call

PutWithHeaders indicates an expected call of PutWithHeaders.

type OAuthConfig

type OAuthConfig struct {
	// ClientID is the application's ID.
	ClientID string

	// ClientSecret is the application's secret.
	ClientSecret string

	// TokenURL is the resource server's token endpoint
	// URL. This is a constant specific to each server.
	TokenURL string

	// Scope specifies optional requested permissions.
	Scopes []string

	// EndpointParams specifies additional parameters for requests to the token endpoint.
	EndpointParams url.Values
}

OAuthConfig describes a 2-legged OAuth2 flow, with both the client application information and the server's endpoint URLs.

func (*OAuthConfig) AddOption

func (h *OAuthConfig) AddOption(svc HTTP) HTTP

type Options

type Options interface {
	AddOption(h HTTP) HTTP
}

type Response

type Response struct {
	Body       []byte
	StatusCode int
	// contains filtered or unexported fields
}

func (*Response) GetHeader

func (r *Response) GetHeader(key string) string

type RetryConfig

type RetryConfig struct {
	MaxRetries int
}

func (*RetryConfig) AddOption

func (r *RetryConfig) AddOption(h HTTP) HTTP

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL