dataconnections

package
v0.20231002.1065327 Latest Latest
Warning

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

Go to latest
Published: Oct 2, 2023 License: MPL-2.0 Imports: 11 Imported by: 0

README

github.com/hashicorp/go-azure-sdk/resource-manager/kusto/2023-08-15/dataconnections Documentation

The dataconnections SDK allows for interaction with the Azure Resource Manager Service kusto (API Version 2023-08-15).

This readme covers example usages, but further information on using this SDK can be found in the project root.

Import Path

import "github.com/hashicorp/go-azure-sdk/resource-manager/kusto/2023-08-15/dataconnections"

Client Initialization

client := dataconnections.NewDataConnectionsClientWithBaseURI("https://management.azure.com")
client.Client.Authorizer = authorizer

Example Usage: DataConnectionsClient.CheckNameAvailability

ctx := context.TODO()
id := dataconnections.NewDatabaseID("12345678-1234-9876-4563-123456789012", "example-resource-group", "clusterValue", "databaseValue")

payload := dataconnections.DataConnectionCheckNameRequest{
	// ...
}


read, err := client.CheckNameAvailability(ctx, id, payload)
if err != nil {
	// handle the error
}
if model := read.Model; model != nil {
	// do something with the model/response object
}

Example Usage: DataConnectionsClient.CreateOrUpdate

ctx := context.TODO()
id := dataconnections.NewDataConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "clusterValue", "databaseValue", "dataConnectionValue")

payload := dataconnections.DataConnection{
	// ...
}


if err := client.CreateOrUpdateThenPoll(ctx, id, payload); err != nil {
	// handle the error
}

Example Usage: DataConnectionsClient.DataConnectionValidation

ctx := context.TODO()
id := dataconnections.NewDatabaseID("12345678-1234-9876-4563-123456789012", "example-resource-group", "clusterValue", "databaseValue")

payload := dataconnections.DataConnectionValidation{
	// ...
}


if err := client.DataConnectionValidationThenPoll(ctx, id, payload); err != nil {
	// handle the error
}

Example Usage: DataConnectionsClient.Delete

ctx := context.TODO()
id := dataconnections.NewDataConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "clusterValue", "databaseValue", "dataConnectionValue")

if err := client.DeleteThenPoll(ctx, id); err != nil {
	// handle the error
}

Example Usage: DataConnectionsClient.Get

ctx := context.TODO()
id := dataconnections.NewDataConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "clusterValue", "databaseValue", "dataConnectionValue")

read, err := client.Get(ctx, id)
if err != nil {
	// handle the error
}
if model := read.Model; model != nil {
	// do something with the model/response object
}

Example Usage: DataConnectionsClient.ListByDatabase

ctx := context.TODO()
id := dataconnections.NewDatabaseID("12345678-1234-9876-4563-123456789012", "example-resource-group", "clusterValue", "databaseValue")

read, err := client.ListByDatabase(ctx, id)
if err != nil {
	// handle the error
}
if model := read.Model; model != nil {
	// do something with the model/response object
}

Example Usage: DataConnectionsClient.Update

ctx := context.TODO()
id := dataconnections.NewDataConnectionID("12345678-1234-9876-4563-123456789012", "example-resource-group", "clusterValue", "databaseValue", "dataConnectionValue")

payload := dataconnections.DataConnection{
	// ...
}


if err := client.UpdateThenPoll(ctx, id, payload); err != nil {
	// handle the error
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func PossibleValuesForBlobStorageEventType

func PossibleValuesForBlobStorageEventType() []string

func PossibleValuesForCompression

func PossibleValuesForCompression() []string

func PossibleValuesForDataConnectionKind

func PossibleValuesForDataConnectionKind() []string

func PossibleValuesForDataConnectionType

func PossibleValuesForDataConnectionType() []string

func PossibleValuesForDatabaseRouting

func PossibleValuesForDatabaseRouting() []string

func PossibleValuesForEventGridDataFormat

func PossibleValuesForEventGridDataFormat() []string

func PossibleValuesForEventHubDataFormat

func PossibleValuesForEventHubDataFormat() []string

func PossibleValuesForIotHubDataFormat

func PossibleValuesForIotHubDataFormat() []string

func PossibleValuesForProvisioningState

func PossibleValuesForProvisioningState() []string

func PossibleValuesForReason

func PossibleValuesForReason() []string

func ValidateDataConnectionID

func ValidateDataConnectionID(input interface{}, key string) (warnings []string, errors []error)

ValidateDataConnectionID checks that 'input' can be parsed as a Data Connection ID

func ValidateDatabaseID

func ValidateDatabaseID(input interface{}, key string) (warnings []string, errors []error)

ValidateDatabaseID checks that 'input' can be parsed as a Database ID

Types

type BlobStorageEventType

type BlobStorageEventType string
const (
	BlobStorageEventTypeMicrosoftPointStoragePointBlobCreated BlobStorageEventType = "Microsoft.Storage.BlobCreated"
	BlobStorageEventTypeMicrosoftPointStoragePointBlobRenamed BlobStorageEventType = "Microsoft.Storage.BlobRenamed"
)

type CheckNameAvailabilityOperationResponse

type CheckNameAvailabilityOperationResponse struct {
	HttpResponse *http.Response
	Model        *CheckNameResult
}

type CheckNameResult

type CheckNameResult struct {
	Message       *string `json:"message,omitempty"`
	Name          *string `json:"name,omitempty"`
	NameAvailable *bool   `json:"nameAvailable,omitempty"`
	Reason        *Reason `json:"reason,omitempty"`
}

type Compression

type Compression string
const (
	CompressionGZip Compression = "GZip"
	CompressionNone Compression = "None"
)

type CosmosDbDataConnection

type CosmosDbDataConnection struct {
	Properties *CosmosDbDataConnectionProperties `json:"properties,omitempty"`

	// Fields inherited from DataConnection
	Id       *string `json:"id,omitempty"`
	Location *string `json:"location,omitempty"`
	Name     *string `json:"name,omitempty"`
	Type     *string `json:"type,omitempty"`
}

func (CosmosDbDataConnection) MarshalJSON

func (s CosmosDbDataConnection) MarshalJSON() ([]byte, error)

type CosmosDbDataConnectionProperties

type CosmosDbDataConnectionProperties struct {
	CosmosDbAccountResourceId string             `json:"cosmosDbAccountResourceId"`
	CosmosDbContainer         string             `json:"cosmosDbContainer"`
	CosmosDbDatabase          string             `json:"cosmosDbDatabase"`
	ManagedIdentityObjectId   *string            `json:"managedIdentityObjectId,omitempty"`
	ManagedIdentityResourceId string             `json:"managedIdentityResourceId"`
	MappingRuleName           *string            `json:"mappingRuleName,omitempty"`
	ProvisioningState         *ProvisioningState `json:"provisioningState,omitempty"`
	RetrievalStartDate        *string            `json:"retrievalStartDate,omitempty"`
	TableName                 string             `json:"tableName"`
}

func (*CosmosDbDataConnectionProperties) GetRetrievalStartDateAsTime

func (o *CosmosDbDataConnectionProperties) GetRetrievalStartDateAsTime() (*time.Time, error)

func (*CosmosDbDataConnectionProperties) SetRetrievalStartDateAsTime

func (o *CosmosDbDataConnectionProperties) SetRetrievalStartDateAsTime(input time.Time)

type CreateOrUpdateOperationResponse

type CreateOrUpdateOperationResponse struct {
	Poller       polling.LongRunningPoller
	HttpResponse *http.Response
}

type DataConnection

type DataConnection interface {
}

type DataConnectionCheckNameRequest

type DataConnectionCheckNameRequest struct {
	Name string             `json:"name"`
	Type DataConnectionType `json:"type"`
}

type DataConnectionId

type DataConnectionId struct {
	SubscriptionId     string
	ResourceGroupName  string
	ClusterName        string
	DatabaseName       string
	DataConnectionName string
}

DataConnectionId is a struct representing the Resource ID for a Data Connection

func NewDataConnectionID

func NewDataConnectionID(subscriptionId string, resourceGroupName string, clusterName string, databaseName string, dataConnectionName string) DataConnectionId

NewDataConnectionID returns a new DataConnectionId struct

func ParseDataConnectionID

func ParseDataConnectionID(input string) (*DataConnectionId, error)

ParseDataConnectionID parses 'input' into a DataConnectionId

func ParseDataConnectionIDInsensitively

func ParseDataConnectionIDInsensitively(input string) (*DataConnectionId, error)

ParseDataConnectionIDInsensitively parses 'input' case-insensitively into a DataConnectionId note: this method should only be used for API response data and not user input

func (DataConnectionId) ID

func (id DataConnectionId) ID() string

ID returns the formatted Data Connection ID

func (DataConnectionId) Segments

func (id DataConnectionId) Segments() []resourceids.Segment

Segments returns a slice of Resource ID Segments which comprise this Data Connection ID

func (DataConnectionId) String

func (id DataConnectionId) String() string

String returns a human-readable description of this Data Connection ID

type DataConnectionKind

type DataConnectionKind string
const (
	DataConnectionKindCosmosDb  DataConnectionKind = "CosmosDb"
	DataConnectionKindEventGrid DataConnectionKind = "EventGrid"
	DataConnectionKindEventHub  DataConnectionKind = "EventHub"
	DataConnectionKindIotHub    DataConnectionKind = "IotHub"
)

type DataConnectionListResult

type DataConnectionListResult struct {
	Value *[]DataConnection `json:"value,omitempty"`
}

func (*DataConnectionListResult) UnmarshalJSON

func (s *DataConnectionListResult) UnmarshalJSON(bytes []byte) error

type DataConnectionType

type DataConnectionType string
const (
	DataConnectionTypeMicrosoftPointKustoClustersDatabasesDataConnections DataConnectionType = "Microsoft.Kusto/clusters/databases/dataConnections"
)

type DataConnectionValidation

type DataConnectionValidation struct {
	DataConnectionName *string        `json:"dataConnectionName,omitempty"`
	Properties         DataConnection `json:"properties"`
}

func (*DataConnectionValidation) UnmarshalJSON

func (s *DataConnectionValidation) UnmarshalJSON(bytes []byte) error

type DataConnectionValidationListResult

type DataConnectionValidationListResult struct {
	Value *[]DataConnectionValidationResult `json:"value,omitempty"`
}

type DataConnectionValidationOperationResponse

type DataConnectionValidationOperationResponse struct {
	Poller       polling.LongRunningPoller
	HttpResponse *http.Response
}

type DataConnectionValidationResult

type DataConnectionValidationResult struct {
	ErrorMessage *string `json:"errorMessage,omitempty"`
}

type DataConnectionsClient

type DataConnectionsClient struct {
	Client autorest.Client
	// contains filtered or unexported fields
}

func NewDataConnectionsClientWithBaseURI

func NewDataConnectionsClientWithBaseURI(endpoint string) DataConnectionsClient

func (DataConnectionsClient) CheckNameAvailability

CheckNameAvailability ...

func (DataConnectionsClient) CreateOrUpdate

CreateOrUpdate ...

func (DataConnectionsClient) CreateOrUpdateThenPoll

func (c DataConnectionsClient) CreateOrUpdateThenPoll(ctx context.Context, id DataConnectionId, input DataConnection) error

CreateOrUpdateThenPoll performs CreateOrUpdate then polls until it's completed

func (DataConnectionsClient) DataConnectionValidation

DataConnectionValidation ...

func (DataConnectionsClient) DataConnectionValidationThenPoll

func (c DataConnectionsClient) DataConnectionValidationThenPoll(ctx context.Context, id DatabaseId, input DataConnectionValidation) error

DataConnectionValidationThenPoll performs DataConnectionValidation then polls until it's completed

func (DataConnectionsClient) Delete

Delete ...

func (DataConnectionsClient) DeleteThenPoll

func (c DataConnectionsClient) DeleteThenPoll(ctx context.Context, id DataConnectionId) error

DeleteThenPoll performs Delete then polls until it's completed

func (DataConnectionsClient) Get

Get ...

func (DataConnectionsClient) ListByDatabase

func (c DataConnectionsClient) ListByDatabase(ctx context.Context, id DatabaseId) (result ListByDatabaseOperationResponse, err error)

ListByDatabase ...

func (DataConnectionsClient) Update

Update ...

func (DataConnectionsClient) UpdateThenPoll

func (c DataConnectionsClient) UpdateThenPoll(ctx context.Context, id DataConnectionId, input DataConnection) error

UpdateThenPoll performs Update then polls until it's completed

type DatabaseId

type DatabaseId struct {
	SubscriptionId    string
	ResourceGroupName string
	ClusterName       string
	DatabaseName      string
}

DatabaseId is a struct representing the Resource ID for a Database

func NewDatabaseID

func NewDatabaseID(subscriptionId string, resourceGroupName string, clusterName string, databaseName string) DatabaseId

NewDatabaseID returns a new DatabaseId struct

func ParseDatabaseID

func ParseDatabaseID(input string) (*DatabaseId, error)

ParseDatabaseID parses 'input' into a DatabaseId

func ParseDatabaseIDInsensitively

func ParseDatabaseIDInsensitively(input string) (*DatabaseId, error)

ParseDatabaseIDInsensitively parses 'input' case-insensitively into a DatabaseId note: this method should only be used for API response data and not user input

func (DatabaseId) ID

func (id DatabaseId) ID() string

ID returns the formatted Database ID

func (DatabaseId) Segments

func (id DatabaseId) Segments() []resourceids.Segment

Segments returns a slice of Resource ID Segments which comprise this Database ID

func (DatabaseId) String

func (id DatabaseId) String() string

String returns a human-readable description of this Database ID

type DatabaseRouting

type DatabaseRouting string
const (
	DatabaseRoutingMulti  DatabaseRouting = "Multi"
	DatabaseRoutingSingle DatabaseRouting = "Single"
)

type DeleteOperationResponse

type DeleteOperationResponse struct {
	Poller       polling.LongRunningPoller
	HttpResponse *http.Response
}

type EventGridConnectionProperties

type EventGridConnectionProperties struct {
	BlobStorageEventType      *BlobStorageEventType `json:"blobStorageEventType,omitempty"`
	ConsumerGroup             string                `json:"consumerGroup"`
	DataFormat                *EventGridDataFormat  `json:"dataFormat,omitempty"`
	DatabaseRouting           *DatabaseRouting      `json:"databaseRouting,omitempty"`
	EventGridResourceId       *string               `json:"eventGridResourceId,omitempty"`
	EventHubResourceId        string                `json:"eventHubResourceId"`
	IgnoreFirstRecord         *bool                 `json:"ignoreFirstRecord,omitempty"`
	ManagedIdentityObjectId   *string               `json:"managedIdentityObjectId,omitempty"`
	ManagedIdentityResourceId *string               `json:"managedIdentityResourceId,omitempty"`
	MappingRuleName           *string               `json:"mappingRuleName,omitempty"`
	ProvisioningState         *ProvisioningState    `json:"provisioningState,omitempty"`
	StorageAccountResourceId  string                `json:"storageAccountResourceId"`
	TableName                 *string               `json:"tableName,omitempty"`
}

type EventGridDataConnection

type EventGridDataConnection struct {
	Properties *EventGridConnectionProperties `json:"properties,omitempty"`

	// Fields inherited from DataConnection
	Id       *string `json:"id,omitempty"`
	Location *string `json:"location,omitempty"`
	Name     *string `json:"name,omitempty"`
	Type     *string `json:"type,omitempty"`
}

func (EventGridDataConnection) MarshalJSON

func (s EventGridDataConnection) MarshalJSON() ([]byte, error)

type EventGridDataFormat

type EventGridDataFormat string
const (
	EventGridDataFormatAPACHEAVRO     EventGridDataFormat = "APACHEAVRO"
	EventGridDataFormatAVRO           EventGridDataFormat = "AVRO"
	EventGridDataFormatCSV            EventGridDataFormat = "CSV"
	EventGridDataFormatJSON           EventGridDataFormat = "JSON"
	EventGridDataFormatMULTIJSON      EventGridDataFormat = "MULTIJSON"
	EventGridDataFormatORC            EventGridDataFormat = "ORC"
	EventGridDataFormatPARQUET        EventGridDataFormat = "PARQUET"
	EventGridDataFormatPSV            EventGridDataFormat = "PSV"
	EventGridDataFormatRAW            EventGridDataFormat = "RAW"
	EventGridDataFormatSCSV           EventGridDataFormat = "SCSV"
	EventGridDataFormatSINGLEJSON     EventGridDataFormat = "SINGLEJSON"
	EventGridDataFormatSOHSV          EventGridDataFormat = "SOHSV"
	EventGridDataFormatTSV            EventGridDataFormat = "TSV"
	EventGridDataFormatTSVE           EventGridDataFormat = "TSVE"
	EventGridDataFormatTXT            EventGridDataFormat = "TXT"
	EventGridDataFormatWThreeCLOGFILE EventGridDataFormat = "W3CLOGFILE"
)

type EventHubConnectionProperties

type EventHubConnectionProperties struct {
	Compression               *Compression        `json:"compression,omitempty"`
	ConsumerGroup             string              `json:"consumerGroup"`
	DataFormat                *EventHubDataFormat `json:"dataFormat,omitempty"`
	DatabaseRouting           *DatabaseRouting    `json:"databaseRouting,omitempty"`
	EventHubResourceId        string              `json:"eventHubResourceId"`
	EventSystemProperties     *[]string           `json:"eventSystemProperties,omitempty"`
	ManagedIdentityObjectId   *string             `json:"managedIdentityObjectId,omitempty"`
	ManagedIdentityResourceId *string             `json:"managedIdentityResourceId,omitempty"`
	MappingRuleName           *string             `json:"mappingRuleName,omitempty"`
	ProvisioningState         *ProvisioningState  `json:"provisioningState,omitempty"`
	RetrievalStartDate        *string             `json:"retrievalStartDate,omitempty"`
	TableName                 *string             `json:"tableName,omitempty"`
}

func (*EventHubConnectionProperties) GetRetrievalStartDateAsTime

func (o *EventHubConnectionProperties) GetRetrievalStartDateAsTime() (*time.Time, error)

func (*EventHubConnectionProperties) SetRetrievalStartDateAsTime

func (o *EventHubConnectionProperties) SetRetrievalStartDateAsTime(input time.Time)

type EventHubDataConnection

type EventHubDataConnection struct {
	Properties *EventHubConnectionProperties `json:"properties,omitempty"`

	// Fields inherited from DataConnection
	Id       *string `json:"id,omitempty"`
	Location *string `json:"location,omitempty"`
	Name     *string `json:"name,omitempty"`
	Type     *string `json:"type,omitempty"`
}

func (EventHubDataConnection) MarshalJSON

func (s EventHubDataConnection) MarshalJSON() ([]byte, error)

type EventHubDataFormat

type EventHubDataFormat string
const (
	EventHubDataFormatAPACHEAVRO     EventHubDataFormat = "APACHEAVRO"
	EventHubDataFormatAVRO           EventHubDataFormat = "AVRO"
	EventHubDataFormatCSV            EventHubDataFormat = "CSV"
	EventHubDataFormatJSON           EventHubDataFormat = "JSON"
	EventHubDataFormatMULTIJSON      EventHubDataFormat = "MULTIJSON"
	EventHubDataFormatORC            EventHubDataFormat = "ORC"
	EventHubDataFormatPARQUET        EventHubDataFormat = "PARQUET"
	EventHubDataFormatPSV            EventHubDataFormat = "PSV"
	EventHubDataFormatRAW            EventHubDataFormat = "RAW"
	EventHubDataFormatSCSV           EventHubDataFormat = "SCSV"
	EventHubDataFormatSINGLEJSON     EventHubDataFormat = "SINGLEJSON"
	EventHubDataFormatSOHSV          EventHubDataFormat = "SOHSV"
	EventHubDataFormatTSV            EventHubDataFormat = "TSV"
	EventHubDataFormatTSVE           EventHubDataFormat = "TSVE"
	EventHubDataFormatTXT            EventHubDataFormat = "TXT"
	EventHubDataFormatWThreeCLOGFILE EventHubDataFormat = "W3CLOGFILE"
)

type GetOperationResponse

type GetOperationResponse struct {
	HttpResponse *http.Response
	Model        *DataConnection
}

type IotHubConnectionProperties

type IotHubConnectionProperties struct {
	ConsumerGroup          string             `json:"consumerGroup"`
	DataFormat             *IotHubDataFormat  `json:"dataFormat,omitempty"`
	DatabaseRouting        *DatabaseRouting   `json:"databaseRouting,omitempty"`
	EventSystemProperties  *[]string          `json:"eventSystemProperties,omitempty"`
	IotHubResourceId       string             `json:"iotHubResourceId"`
	MappingRuleName        *string            `json:"mappingRuleName,omitempty"`
	ProvisioningState      *ProvisioningState `json:"provisioningState,omitempty"`
	RetrievalStartDate     *string            `json:"retrievalStartDate,omitempty"`
	SharedAccessPolicyName string             `json:"sharedAccessPolicyName"`
	TableName              *string            `json:"tableName,omitempty"`
}

func (*IotHubConnectionProperties) GetRetrievalStartDateAsTime

func (o *IotHubConnectionProperties) GetRetrievalStartDateAsTime() (*time.Time, error)

func (*IotHubConnectionProperties) SetRetrievalStartDateAsTime

func (o *IotHubConnectionProperties) SetRetrievalStartDateAsTime(input time.Time)

type IotHubDataConnection

type IotHubDataConnection struct {
	Properties *IotHubConnectionProperties `json:"properties,omitempty"`

	// Fields inherited from DataConnection
	Id       *string `json:"id,omitempty"`
	Location *string `json:"location,omitempty"`
	Name     *string `json:"name,omitempty"`
	Type     *string `json:"type,omitempty"`
}

func (IotHubDataConnection) MarshalJSON

func (s IotHubDataConnection) MarshalJSON() ([]byte, error)

type IotHubDataFormat

type IotHubDataFormat string
const (
	IotHubDataFormatAPACHEAVRO     IotHubDataFormat = "APACHEAVRO"
	IotHubDataFormatAVRO           IotHubDataFormat = "AVRO"
	IotHubDataFormatCSV            IotHubDataFormat = "CSV"
	IotHubDataFormatJSON           IotHubDataFormat = "JSON"
	IotHubDataFormatMULTIJSON      IotHubDataFormat = "MULTIJSON"
	IotHubDataFormatORC            IotHubDataFormat = "ORC"
	IotHubDataFormatPARQUET        IotHubDataFormat = "PARQUET"
	IotHubDataFormatPSV            IotHubDataFormat = "PSV"
	IotHubDataFormatRAW            IotHubDataFormat = "RAW"
	IotHubDataFormatSCSV           IotHubDataFormat = "SCSV"
	IotHubDataFormatSINGLEJSON     IotHubDataFormat = "SINGLEJSON"
	IotHubDataFormatSOHSV          IotHubDataFormat = "SOHSV"
	IotHubDataFormatTSV            IotHubDataFormat = "TSV"
	IotHubDataFormatTSVE           IotHubDataFormat = "TSVE"
	IotHubDataFormatTXT            IotHubDataFormat = "TXT"
	IotHubDataFormatWThreeCLOGFILE IotHubDataFormat = "W3CLOGFILE"
)

type ListByDatabaseOperationResponse

type ListByDatabaseOperationResponse struct {
	HttpResponse *http.Response
	Model        *DataConnectionListResult
}

type ProvisioningState

type ProvisioningState string
const (
	ProvisioningStateCanceled  ProvisioningState = "Canceled"
	ProvisioningStateCreating  ProvisioningState = "Creating"
	ProvisioningStateDeleting  ProvisioningState = "Deleting"
	ProvisioningStateFailed    ProvisioningState = "Failed"
	ProvisioningStateMoving    ProvisioningState = "Moving"
	ProvisioningStateRunning   ProvisioningState = "Running"
	ProvisioningStateSucceeded ProvisioningState = "Succeeded"
)

type RawDataConnectionImpl

type RawDataConnectionImpl struct {
	Type   string
	Values map[string]interface{}
}

RawDataConnectionImpl is returned when the Discriminated Value doesn't match any of the defined types NOTE: this should only be used when a type isn't defined for this type of Object (as a workaround) and is used only for Deserialization (e.g. this cannot be used as a Request Payload).

type Reason

type Reason string
const (
	ReasonAlreadyExists Reason = "AlreadyExists"
	ReasonInvalid       Reason = "Invalid"
)

type UpdateOperationResponse

type UpdateOperationResponse struct {
	Poller       polling.LongRunningPoller
	HttpResponse *http.Response
}

Jump to

Keyboard shortcuts

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