Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Execute ¶
func Execute[T HTTPResponser](ctx context.Context, engine *Engine, requester HTTPRequester) (T, error)
Execute sends an HTTP request using the provided requester and handles the response using the provided responser.
Types ¶
type Date ¶
Date is a type alias for time.Time, used to represent date values in the API.
func (Date) MarshalJSON ¶
MarshalJSON encodes the Date as a string in the format "2006-01-02".
func (Date) MarshalText ¶
MarshalText encodes the Date as a string in the format "2006-01-02".
func (Date) String ¶
String returns the string representation of the Date in the format "2006-01-02".
func (*Date) UnmarshalJSON ¶
UnmarshalJSON decodes a JSON string into a Date type.
func (*Date) UnmarshalText ¶
UnmarshalText decodes a text string into a Date type. This is required when using Date type as a map key.
type Engine ¶
type Engine struct {
// contains filtered or unexported fields
}
Engine is the main structure that handles communication with the Teamwork API.
func NewEngine ¶
func NewEngine(session Session, opts ...EngineOption) *Engine
NewEngine creates a new Engine instance with the provided HTTP client and session.
type EngineOption ¶
type EngineOption func(*Engine)
EngineOption is a function that modifies the Engine configuration.
func WithHTTPClient ¶
func WithHTTPClient(client *http.Client) EngineOption
WithHTTPClient sets the HTTP client for the Engine. By default, it uses http.DefaultClient.
func WithLogger ¶
func WithLogger(logger *slog.Logger) EngineOption
WithLogger sets the logger for the Engine. By default, it uses slog.Default().
func WithRequestMiddleware ¶ added in v0.0.3
func WithRequestMiddleware(middleware func(HTTPRequester) HTTPRequester) EngineOption
WithRequestMiddleware adds a request middleware to the Engine. Middlewares are applied in the order they are added.
func WithResponseMiddleware ¶ added in v0.0.3
func WithResponseMiddleware(middleware func(HTTPResponser) HTTPResponser) EngineOption
WithResponseMiddleware adds a response middleware to the Engine. Middlewares are applied in the order they are added.
type HTTPError ¶ added in v0.0.3
HTTPError represents an error response from the API.
func NewHTTPError ¶ added in v0.0.3
NewHTTPError creates a new HTTPError from an http.Response.
type HTTPRequester ¶
type HTTPRequester interface {
HTTPRequest(ctx context.Context, server string) (*http.Request, error)
}
HTTPRequester knows how to create an HTTP request for a specific entity.
type HTTPResponser ¶
HTTPResponser knows how to handle an HTTP response for a specific entity.
type OptionalDateTime ¶
OptionalDateTime is a type alias for time.Time, used to represent date and time values in the API. The difference is that it will accept empty strings as valid values.
func (OptionalDateTime) MarshalJSON ¶
func (d OptionalDateTime) MarshalJSON() ([]byte, error)
MarshalJSON encodes the OptionalDateTime as a string in the format "2006-01-02T15:04:05Z07:00".
func (*OptionalDateTime) UnmarshalJSON ¶
func (d *OptionalDateTime) UnmarshalJSON(data []byte) error
UnmarshalJSON decodes a JSON string into an OptionalDateTime type.
type Relationship ¶ added in v0.0.3
type Relationship struct {
ID int64 `json:"id"`
Type string `json:"type"`
Meta map[string]any `json:"meta,omitempty"`
}
Relationship describes the relation between the main entity and a sideload type.
type Session ¶
type Session interface {
Authenticate(ctx context.Context, req *http.Request) error
Server() string
}
Session is an interface that defines the methods required for a session to authenticate requests to the Teamwork Engine.
type Time ¶
Time is a type alias for time.Time, used to represent time values in the API.
func (Time) MarshalJSON ¶
MarshalJSON encodes the Time as a string in the format "15:04:05".
func (Time) MarshalText ¶
MarshalText encodes the Time as a string in the format "15:04:05".
func (*Time) UnmarshalJSON ¶
UnmarshalJSON decodes a JSON string into a Date type.
func (*Time) UnmarshalText ¶
UnmarshalText decodes a text string into a Time type. This is required when using Time type as a map key.