filter

package
v2.262.0 Latest Latest
Warning

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

Go to latest
Published: Nov 11, 2024 License: MIT Imports: 18 Imported by: 33

Documentation

Index

Constants

View Source
const (
	EventFilterOutputQueryStart  = "FilterOutputQueryStart"
	EventFilterOutputQueryEnd    = "FilterOutputQueryEnd"
	EventFilterOutputCSVGenStart = "FilterOutputCSVGenStart"
	EventFilterOutputCSVGenEnd   = "FilterOutputCSVGenEnd"
)

Variables

View Source
var (
	ErrBatchETagMismatch      = errors.New("ETag value changed from one batch to another")
	ErrBatchUnexpectedType    = errors.New("batch processor was called with an unexpected type of items")
	ErrInvalidPaginationQuery = errors.New("negative offsets or limits are not allowed")
)

error definitions that are not related to invalid responses

Functions

This section is empty.

Types

type AuthHeaders added in v2.117.0

type AuthHeaders struct {
	UserAuthToken    string
	ServiceAuthToken string
	CollectionID     string
}

AuthHeaders represents the common set of headers required for making authorized requests

type Client

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

Client is a filter api client which can be used to make requests to the server

func New

func New(filterAPIURL string) *Client

New creates a new instance of Client with a given filter api url

func NewWithHealthClient

func NewWithHealthClient(hcCli *healthcheck.Client) *Client

NewWithHealthClient creates a new instance of Client, reusing the URL and Clienter from the provided health check client.

func (*Client) AddDimension

func (c *Client) AddDimension(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, id, name, ifMatch string) (eTag string, err error)

AddDimension adds a new dimension to a filter job

func (*Client) AddDimensionValue

func (c *Client) AddDimensionValue(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name, value, ifMatch string) (eTag string, err error)

AddDimensionValue adds a particular value to a filter job for a given filterID and dimension name

func (*Client) AddDimensionValues

func (c *Client) AddDimensionValues(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name string, values []string, batchSize int, ifMatch string) (latestETag string, err error)

AddDimensionValues adds the provided values to a dimension option list. This is performed in batches of size up to batchSize

func (*Client) AddEvent

func (c *Client) AddEvent(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, filterJobID string, event *Event) error

AddEvent performs a POST operation to update the filter with the provided event

func (*Client) AddFlexDimension added in v2.102.0

func (c *Client) AddFlexDimension(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, id, name string, options []string, isAreaType bool, ifMatch string) (eTag string, err error)

AddFlexDimension adds a new dimension to a filter job, with additional Cantabular-only fields

func (*Client) Checker

func (c *Client) Checker(ctx context.Context, check *health.CheckState) error

Checker calls filter api health endpoint and returns a check object to the caller.

func (*Client) CreateBlueprint

func (c *Client) CreateBlueprint(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, collectionID, datasetID, edition, version string, names []string) (filterID, eTag string, err error)

CreateBlueprint creates a filter blueprint and returns the associated filterID and eTag

func (*Client) CreateCustomFilter added in v2.206.3

func (c *Client) CreateCustomFilter(ctx context.Context, userAuthToken, serviceAuthToken, populationType string) (filterID string, err error)

func (*Client) CreateFlexibleBlueprint added in v2.98.0

func (c *Client) CreateFlexibleBlueprint(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, collectionID, datasetID, edition, version string, dimensions []ModelDimension, population_type string) (filterID, eTag string, err error)

CreateFlexibleBlueprint creates a flexible filter blueprint and returns the associated filterID and eTag

func (*Client) CreateFlexibleBlueprintCustom added in v2.206.3

func (c *Client) CreateFlexibleBlueprintCustom(ctx context.Context, uAuthToken, svcAuthToken, dlServiceToken string, req CreateFlexBlueprintCustomRequest) (filterID, eTag string, err error)

CreateFlexibleBlueprintCustom creates a flexible filter blueprint with the 'custom' flag set to true and returns the associated filterID and eTag

func (*Client) DeleteDimensionOptions added in v2.152.0

func (c *Client) DeleteDimensionOptions(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name string) (string, error)

DeleteDimensionOptions completely removes the options array from a given dimension

func (*Client) GetDimension

func (c *Client) GetDimension(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name string) (dim Dimension, eTag string, err error)

GetDimension returns information on a requested dimension name for a given filterID unmarshalled as a Dimension struct

func (*Client) GetDimensionBytes

func (c *Client) GetDimensionBytes(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name string) (body []byte, eTag string, err error)

GetDimensionBytes returns information on a requested dimension name for a given filterID as a byte array

func (*Client) GetDimensionOptions

func (c *Client) GetDimensionOptions(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name string, q *QueryParams) (opts DimensionOptions, eTag string, err error)

GetDimensionOptions retrieves a list of the dimension options unmarshalled as an array of DimensionOption structs

func (*Client) GetDimensionOptionsBatchProcess

func (c *Client) GetDimensionOptionsBatchProcess(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name string, processBatch DimensionOptionsBatchProcessor, batchSize, maxWorkers int, checkETag bool) (eTag string, err error)

GetDimensionOptionsBatchProcess gets the filter options for a dimension from filter API in batches, and calls the provided function for each batch. If checkETag is true, then the ETag will be validated for each batch call. If it changes from one batch to another, an ErrBatchETagMismatch error will be returned. Unless your processBatch function performs some call to modify the same filter, it is recommended to set checkETag to true, and you may retry this call if it fails with ErrBatchETagMismatch

func (*Client) GetDimensionOptionsBytes

func (c *Client) GetDimensionOptionsBytes(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name string, q *QueryParams) (body []byte, eTag string, err error)

GetDimensionOptionsBytes retrieves a list of the dimension options as a byte array

func (*Client) GetDimensionOptionsInBatches

func (c *Client) GetDimensionOptionsInBatches(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name string, batchSize, maxWorkers int) (opts DimensionOptions, eTag string, err error)

GetDimensionOptionsInBatches retrieves a list of the dimension options in concurrent batches and accumulates the results. If the ETag changes from one batch to another, the process will be aborted and an ErrBatchETagMismatch error will be returned. You may retry the call in this case.

func (*Client) GetDimensions

func (c *Client) GetDimensions(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID string, q *QueryParams) (dims Dimensions, eTag string, err error)

GetDimensions will return the dimensions associated with the provided filter id as an array of Dimension structs

func (*Client) GetDimensionsBytes

func (c *Client) GetDimensionsBytes(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID string, q *QueryParams) (body []byte, eTag string, err error)

GetDimensionsBytes will return the dimensions associated with the provided filter id as a byte array

func (*Client) GetFilter added in v2.117.0

func (c *Client) GetFilter(ctx context.Context, input GetFilterInput) (*GetFilterResponse, error)

GetFilter makes an authorised request to GET /filters

func (*Client) GetJobState

func (c *Client) GetJobState(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, collectionID, filterID string) (m Model, eTag string, err error)

GetJobState will return the current state of the filter job unmarshalled as a Model struct

func (*Client) GetJobStateBytes

func (c *Client) GetJobStateBytes(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, collectionID, filterID string) ([]byte, string, error)

GetJobStateBytes will return the current state of the filter job as a byte array

func (*Client) GetOutput

func (c *Client) GetOutput(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, collectionID, filterOutputID string) (m Model, err error)

GetOutput returns a filter output job for a given filter output id, unmarshalled as a Model struct

func (*Client) GetOutputBytes

func (c *Client) GetOutputBytes(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, collectionID, filterOutputID string) ([]byte, error)

GetOutputBytes returns a filter output job for a given filter output id as a byte array

func (*Client) GetPreview

func (c *Client) GetPreview(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, collectionID, filterOutputID string) (p Preview, err error)

GetPreview attempts to retrieve a preview for a given filterOutputID unmarshalled as a Preview struct

func (*Client) GetPreviewBytes

func (c *Client) GetPreviewBytes(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, collectionID, filterOutputID string) ([]byte, error)

GetPreviewBytes attempts to retrieve a preview for a given filterOutputID as a byte array

func (*Client) PatchDimensionValues

func (c *Client) PatchDimensionValues(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name string, addValues, removeValues []string, batchSize int, ifMatch string) (latestETag string, err error)

PatchDimensionValues adds and removes values from a dimension option list. If the same item is provided in the add and remove list, it will be removed. Duplicates in the same list will have no effect.

func (*Client) RemoveDimension

func (c *Client) RemoveDimension(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name, ifMatch string) (eTag string, err error)

RemoveDimension removes a given dimension from a filter job

func (*Client) RemoveDimensionValue

func (c *Client) RemoveDimensionValue(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name, value, ifMatch string) (eTag string, err error)

RemoveDimensionValue removes a particular value to a filter job for a given filterID and name

func (*Client) RemoveDimensionValues

func (c *Client) RemoveDimensionValues(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name string, values []string, batchSize int, ifMatch string) (latestETag string, err error)

RemoveDimensionValues removes the provided values from a dimension option list. This is performed with PATCH operations in batches of size up to batchSize.

func (*Client) SetDimensionValues

func (c *Client) SetDimensionValues(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, filterID, name string, options []string, ifMatch string) (eTag string, err error)

SetDimensionValues creates or overwrites the options for a filter job dimension

func (*Client) SubmitFilter added in v2.115.0

func (c *Client) SubmitFilter(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, ifMatch string, sfr SubmitFilterRequest) (*SubmitFilterResponse, string, error)

SubmitFilter function to submit the request to submit a filter for a cantabular dataset. Should POST to /filters/{filterid}/submit in dp-cantabular-filter-flex-api microservice.

func (*Client) UpdateBlueprint

func (c *Client) UpdateBlueprint(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, collectionID string, m Model, doSubmit bool, ifMatch string) (Model, string, error)

UpdateBlueprint will update a blueprint with a given filter model, providing the required IfMatch value to be sure the update is done in the expected object

func (*Client) UpdateDimensions added in v2.115.0

func (c *Client) UpdateDimensions(ctx context.Context, userAuthToken, serviceAuthToken, collectionID, id, name, ifMatch string, dimension Dimension) (dim Dimension, eTag string, err error)

func (*Client) UpdateFilterOutput

func (c *Client) UpdateFilterOutput(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, filterJobID string, model *Model) error

UpdateFilterOutput performs a PUT operation to update the filter with the provided filterOutput model

func (*Client) UpdateFilterOutputBytes

func (c *Client) UpdateFilterOutputBytes(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, filterJobID string, b []byte) error

UpdateFilterOutputBytes performs a PUT operation to update the filter with the provided byte array

func (*Client) UpdateFlexBlueprint added in v2.106.0

func (c *Client) UpdateFlexBlueprint(ctx context.Context, userAuthToken, serviceAuthToken, downloadServiceToken, collectionID string, m Model, doSubmit bool, populationType string, ifMatch string) (Model, string, error)

UpdateFlexBlueprint will update a blueprint with a given filter model, providing the required IfMatch value to be sure the update is done in the expected object

type Config

type Config struct {
	InternalToken string
	FlorenceToken string
}

Config contains any configuration required to send requests to the filter api

type CreateFlexBlueprintCustomRequest added in v2.206.3

type CreateFlexBlueprintCustomRequest struct {
	Dataset        Dataset          `json:"dataset"`
	Dimensions     []ModelDimension `json:"dimensions"`
	PopulationType string           `json:"population_type"`
	CollectionID   string           `json:"-"`
}

CreateFlexBlueprintRequest holds the input required for CreateFlexBlueprint

type Dataset

type Dataset struct {
	DatasetID string `json:"id"`
	Edition   string `json:"edition"`
	Version   int    `json:"version"`
}

Dataset represents the dataset fields required to create a filter blueprint

type Dimension

type Dimension struct {
	Name                  string   `json:"name"`
	ID                    string   `json:"id,omitempty"`
	Label                 string   `json:"label,omitempty"`
	URI                   string   `json:"dimension_url"`
	IsAreaType            *bool    `json:"is_area_type,omitempty"`
	Options               []string `json:"options,omitempty"`
	DefaultCategorisation string   `json:"default_categorisation"`
	FilterByParent        string   `json:"filter_by_parent,omitempty"`
	QualityStatementText  string   `json:"quality_statement_text,omitempty"`
	QualitySummaryURL     string   `json:"quality_summary_url,omitempty"`
}

Dimension represents a dimension response from the filter api

type DimensionOption

type DimensionOption struct {
	DimensionOptionsURL string `json:"dimension_option_url"`
	Option              string `json:"option"`
}

DimensionOption represents a dimension option from the filter api

type DimensionOptions

type DimensionOptions struct {
	Items      []DimensionOption `json:"items"`
	Count      int               `json:"count"`
	Offset     int               `json:"offset"`
	Limit      int               `json:"limit"`
	TotalCount int               `json:"total_count"`
}

DimensionOptions represents a list of dimension options from the filter api

type DimensionOptionsBatchProcessor

type DimensionOptionsBatchProcessor func(opts DimensionOptions, eTag string) (abort bool, err error)

DimensionOptionsBatchProcessor is the type corresponding to a batch processing function for filter DimensionOptions

type Dimensions

type Dimensions struct {
	Items      []Dimension `json:"items"`
	Count      int         `json:"count"`
	Offset     int         `json:"offset"`
	Limit      int         `json:"limit"`
	TotalCount int         `json:"total_count"`
}

Dimensions represents a dimensions response from the filter api

type Download

type Download struct {
	URL     string `json:"href"`
	Size    string `json:"size"`
	Public  string `json:"public,omitempty"`
	Private string `json:"private,omitempty"`
	Skipped bool   `json:"skipped,omitempty"`
}

Download represents a download within a filter from api response

type ErrInvalidFilterAPIResponse

type ErrInvalidFilterAPIResponse struct {
	ExpectedCode int
	ActualCode   int
	URI          string
}

ErrInvalidFilterAPIResponse is returned when the filter api does not respond with a valid status

func (ErrInvalidFilterAPIResponse) Code

Code returns the status code received from filter api if an error is returned

func (ErrInvalidFilterAPIResponse) Error

Error should be called by the user to print out the stringified version of the error

type Event

type Event struct {
	Time time.Time `json:"time"`
	Type string    `json:"type"`
}

Event represents an event from a filter api response

type FilterLinks struct {
	Dimensions Link `json:"dimensions,omitempty"`
	Self       Link `json:"self,omitempty"`
	Version    Link `json:"version,omitempty"`
}

FilterLinks represents the links object for /filters related endpoints

type GetFilterInput added in v2.117.0

type GetFilterInput struct {
	FilterID string
	AuthHeaders
}

getFilterInput holds the required fields for making the GET /filters API call

type GetFilterResponse added in v2.117.0

type GetFilterResponse struct {
	ID             string      `json:"id"`
	FilterID       string      `json:"filter_id"`
	InstanceID     string      `json:"instance_id"`
	Links          FilterLinks `json:"links"`
	Dataset        Dataset     `json:"dataset,omitempty"`
	State          string      `json:"state"`
	Published      bool        `json:"published"`
	PopulationType string      `json:"population_type,omitempty"`
	Custom         *bool       `json:"custom,omitempty"`
	ETag           string      `json:"-"`
}

getFilterResponse is the response body for GET /filters

type Link struct {
	ID   string `json:"id"`
	HRef string `json:"href"`
}

Link represents a single link within a links object

type Links struct {
	Version         Link `json:"version,omitempty"`
	FilterOutputs   Link `json:"filter_output,omitempty"`
	FilterBlueprint Link `json:"filter_blueprint,omitempty"`
}

Links represents a links object on the filter api response

type Model

type Model struct {
	FilterID       string              `json:"filter_id"`
	InstanceID     string              `json:"instance_id"`
	Links          Links               `json:"links"`
	DatasetID      string              `json:"dataset_id"`
	Dataset        Dataset             `json:"dataset,omitempty"`
	Edition        string              `json:"edition"`
	Version        string              `json:"version"`
	State          string              `json:"state"`
	Dimensions     []ModelDimension    `json:"dimensions,omitempty"`
	Downloads      map[string]Download `json:"downloads,omitempty"`
	Events         []Event             `json:"events,omitempty"`
	IsPublished    bool                `json:"published"`
	PopulationType string              `json:"population_type,omitempty"`
	Type           string              `json:"type"`
	Custom         *bool               `json:"custom,omitempty"`
}

Model represents a model returned from the filter api

type ModelDimension

type ModelDimension struct {
	Name                 string   `json:"name"`
	ID                   string   `json:"id"`
	Label                string   `json:"label"`
	URI                  string   `json:"dimension_url,omitempty"`
	IsAreaType           *bool    `json:"is_area_type,omitempty"`
	Options              []string `json:"options"`
	Values               []string `json:"values"`
	FilterByParent       string   `json:"filter_by_parent,omitempty"`
	QualityStatementText string   `json:"quality_statement_text,omitempty"`
	QualitySummaryURL    string   `json:"quality_summary_url,omitempty"`
}

ModelDimension represents a dimension to be filtered upon

type Preview

type Preview struct {
	Headers         []string   `json:"headers"`
	NumberOfRows    int        `json:"number_of_rows"`
	NumberOfColumns int        `json:"number_of_columns"`
	Rows            [][]string `json:"rows"`
}

Preview represents a preview document returned from the filter api

type QueryParams

type QueryParams struct {
	Offset int
	Limit  int
}

QueryParams represents the possible query parameters that a caller can provide

func (QueryParams) Validate

func (q QueryParams) Validate() error

Validate validates that no negative values are provided for limit or offset

type SubmitFilterRequest added in v2.115.0

type SubmitFilterRequest struct {
	FilterID       string             `json:"filter_id"`
	Dimensions     []DimensionOptions `json:"dimension_options,omitempty"`
	PopulationType string             `json:"population_type"`
}

type SubmitFilterResponse added in v2.115.0

type SubmitFilterResponse struct {
	InstanceID     string      `json:"instance_id"`
	FilterOutputID string      `json:"filter_output_id"`
	Dataset        Dataset     `json:"dataset"`
	Links          FilterLinks `json:"links"`
	PopulationType string      `json:"population_type"`
}

Jump to

Keyboard shortcuts

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