types

package
v0.15.3 Latest Latest
Warning

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

Go to latest
Published: Feb 25, 2021 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Overview

Package types is a reverse proxy.

It translates gRPC into RESTful JSON APIs.

Index

Constants

View Source
const (
	EventTypePostReported = "post_reported"

	// Reports attributes
	AttributeKeyPostID      = "post_id"
	AttributeKeyReportOwner = "report_owner"
)

Reports module event types

View Source
const (
	ModuleName = "reports"
	RouterKey  = ModuleName
	StoreKey   = ModuleName

	ActionReportPost = "report_post"

	// Queries
	QuerierRoute = ModuleName
	QueryReports = "reports"
)

Variables

View Source
var (
	ErrInvalidLengthGenesis        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowGenesis          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	ErrInvalidLengthModels        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowModels          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupModels = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	ErrInvalidLengthMsgs        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowMsgs          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupMsgs = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	ErrInvalidLengthQuery        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowQuery          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (

	// ModuleCdc references the global x/reports module codec. Note, the codec should
	// ONLY be used in certain instances of tests and for JSON encoding as Amino is
	// still used for that purpose.
	//
	// The actual codec used for serialization should be provided to x/reports and
	// defined at the application level.
	ModuleCdc = codec.NewAminoCodec(amino)
)
View Source
var (
	ReportsStorePrefix = []byte("reports")
)

Functions

func MustMarshalReports added in v0.15.0

func MustMarshalReports(reports []Report, cdc codec.BinaryMarshaler) []byte

MustMarshalReports marshals the given reports into an array of bytes. Panics on error.

func RegisterInterfaces added in v0.15.0

func RegisterInterfaces(registry types.InterfaceRegistry)

func RegisterLegacyAminoCodec added in v0.15.0

func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino)

func RegisterMsgServer added in v0.15.0

func RegisterMsgServer(s grpc1.Server, srv MsgServer)

func RegisterQueryHandler added in v0.15.0

func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error

RegisterQueryHandler registers the http handlers for service Query to "mux". The handlers forward requests to the grpc endpoint over "conn".

func RegisterQueryHandlerClient added in v0.15.0

func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error

RegisterQueryHandlerClient registers the http handlers for service Query to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in "QueryClient" to call the correct interceptors.

func RegisterQueryHandlerFromEndpoint added in v0.15.0

func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error)

RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but automatically dials to "endpoint" and closes the connection when "ctx" gets done.

func RegisterQueryHandlerServer added in v0.15.0

func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error

RegisterQueryHandlerServer registers the http handlers for service Query to "mux". UnaryRPC :call QueryServer directly. StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. Note that using this registration option will cause many gRPC library features (such as grpc.SendHeader, etc) to stop working. Consider using RegisterQueryHandlerFromEndpoint instead.

func RegisterQueryServer added in v0.15.0

func RegisterQueryServer(s grpc1.Server, srv QueryServer)

func ReportStoreKey

func ReportStoreKey(id string) []byte

ReportsStoreKey turn an id to a key used to store a reports inside the reports store

func ValidateGenesis

func ValidateGenesis(data *GenesisState) error

ValidateGenesis validates the given genesis state and returns an error if something is invalid

Types

type GenesisState

type GenesisState struct {
	Reports []Report `protobuf:"bytes,1,rep,name=reports,proto3" json:"reports" yaml:"reports"`
}

GenesisState defines the reports module's genesis state.

func DefaultGenesisState

func DefaultGenesisState() *GenesisState

DefaultGenesisState returns a default GenesisState

func NewGenesisState

func NewGenesisState(reports []Report) *GenesisState

NewGenesisState creates a new genesis state

func (*GenesisState) Descriptor added in v0.15.0

func (*GenesisState) Descriptor() ([]byte, []int)

func (*GenesisState) GetReports added in v0.15.0

func (m *GenesisState) GetReports() []Report

func (*GenesisState) Marshal added in v0.15.0

func (m *GenesisState) Marshal() (dAtA []byte, err error)

func (*GenesisState) MarshalTo added in v0.15.0

func (m *GenesisState) MarshalTo(dAtA []byte) (int, error)

func (*GenesisState) MarshalToSizedBuffer added in v0.15.0

func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*GenesisState) ProtoMessage added in v0.15.0

func (*GenesisState) ProtoMessage()

func (*GenesisState) Reset added in v0.15.0

func (m *GenesisState) Reset()

func (*GenesisState) Size added in v0.15.0

func (m *GenesisState) Size() (n int)

func (*GenesisState) String added in v0.15.0

func (m *GenesisState) String() string

func (*GenesisState) Unmarshal added in v0.15.0

func (m *GenesisState) Unmarshal(dAtA []byte) error

func (*GenesisState) XXX_DiscardUnknown added in v0.15.0

func (m *GenesisState) XXX_DiscardUnknown()

func (*GenesisState) XXX_Marshal added in v0.15.0

func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*GenesisState) XXX_Merge added in v0.15.0

func (m *GenesisState) XXX_Merge(src proto.Message)

func (*GenesisState) XXX_Size added in v0.15.0

func (m *GenesisState) XXX_Size() int

func (*GenesisState) XXX_Unmarshal added in v0.15.0

func (m *GenesisState) XXX_Unmarshal(b []byte) error

type MsgClient added in v0.15.0

type MsgClient interface {
	// ReportPost defines a method for creating a new post report
	ReportPost(ctx context.Context, in *MsgReportPost, opts ...grpc.CallOption) (*MsgReportPostResponse, error)
}

MsgClient is the client API for Msg service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewMsgClient added in v0.15.0

func NewMsgClient(cc grpc1.ClientConn) MsgClient

type MsgReportPost

type MsgReportPost struct {
	PostId     string `protobuf:"bytes,1,opt,name=post_id,json=postId,proto3" json:"post_id" yaml:"post_id"`
	ReportType string `protobuf:"bytes,2,opt,name=report_type,json=reportType,proto3" json:"report_type,omitempty" yaml:"type"`
	Message    string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty" yaml:"message"`
	User       string `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty" yaml:"user"`
}

MsgReportPost represents a message to create a port report.

func NewMsgReportPost

func NewMsgReportPost(id string, reportType, message string, user string) *MsgReportPost

NewMsgReportPost returns a MsgReportPost object

func (*MsgReportPost) Descriptor added in v0.15.0

func (*MsgReportPost) Descriptor() ([]byte, []int)

func (MsgReportPost) GetSignBytes added in v0.15.0

func (msg MsgReportPost) GetSignBytes() []byte

GetSignBytes encodes the message for signing

func (MsgReportPost) GetSigners added in v0.15.0

func (msg MsgReportPost) GetSigners() []sdk.AccAddress

GetSigners defines whose signature is required

func (*MsgReportPost) Marshal added in v0.15.0

func (m *MsgReportPost) Marshal() (dAtA []byte, err error)

func (*MsgReportPost) MarshalTo added in v0.15.0

func (m *MsgReportPost) MarshalTo(dAtA []byte) (int, error)

func (*MsgReportPost) MarshalToSizedBuffer added in v0.15.0

func (m *MsgReportPost) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgReportPost) ProtoMessage added in v0.15.0

func (*MsgReportPost) ProtoMessage()

func (*MsgReportPost) Reset added in v0.15.0

func (m *MsgReportPost) Reset()

func (MsgReportPost) Route added in v0.15.0

func (msg MsgReportPost) Route() string

Route should return the name of the module

func (*MsgReportPost) Size added in v0.15.0

func (m *MsgReportPost) Size() (n int)

func (*MsgReportPost) String added in v0.15.0

func (m *MsgReportPost) String() string

func (MsgReportPost) Type added in v0.15.0

func (msg MsgReportPost) Type() string

Type should return the action

func (*MsgReportPost) Unmarshal added in v0.15.0

func (m *MsgReportPost) Unmarshal(dAtA []byte) error

func (MsgReportPost) ValidateBasic added in v0.15.0

func (msg MsgReportPost) ValidateBasic() error

ValidateBasic runs stateless checks on the message

func (*MsgReportPost) XXX_DiscardUnknown added in v0.15.0

func (m *MsgReportPost) XXX_DiscardUnknown()

func (*MsgReportPost) XXX_Marshal added in v0.15.0

func (m *MsgReportPost) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgReportPost) XXX_Merge added in v0.15.0

func (m *MsgReportPost) XXX_Merge(src proto.Message)

func (*MsgReportPost) XXX_Size added in v0.15.0

func (m *MsgReportPost) XXX_Size() int

func (*MsgReportPost) XXX_Unmarshal added in v0.15.0

func (m *MsgReportPost) XXX_Unmarshal(b []byte) error

type MsgReportPostResponse added in v0.15.0

type MsgReportPostResponse struct {
}

MsgReportPostResponse defines the Msg/ReportPost response type.

func (*MsgReportPostResponse) Descriptor added in v0.15.0

func (*MsgReportPostResponse) Descriptor() ([]byte, []int)

func (*MsgReportPostResponse) Marshal added in v0.15.0

func (m *MsgReportPostResponse) Marshal() (dAtA []byte, err error)

func (*MsgReportPostResponse) MarshalTo added in v0.15.0

func (m *MsgReportPostResponse) MarshalTo(dAtA []byte) (int, error)

func (*MsgReportPostResponse) MarshalToSizedBuffer added in v0.15.0

func (m *MsgReportPostResponse) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgReportPostResponse) ProtoMessage added in v0.15.0

func (*MsgReportPostResponse) ProtoMessage()

func (*MsgReportPostResponse) Reset added in v0.15.0

func (m *MsgReportPostResponse) Reset()

func (*MsgReportPostResponse) Size added in v0.15.0

func (m *MsgReportPostResponse) Size() (n int)

func (*MsgReportPostResponse) String added in v0.15.0

func (m *MsgReportPostResponse) String() string

func (*MsgReportPostResponse) Unmarshal added in v0.15.0

func (m *MsgReportPostResponse) Unmarshal(dAtA []byte) error

func (*MsgReportPostResponse) XXX_DiscardUnknown added in v0.15.0

func (m *MsgReportPostResponse) XXX_DiscardUnknown()

func (*MsgReportPostResponse) XXX_Marshal added in v0.15.0

func (m *MsgReportPostResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgReportPostResponse) XXX_Merge added in v0.15.0

func (m *MsgReportPostResponse) XXX_Merge(src proto.Message)

func (*MsgReportPostResponse) XXX_Size added in v0.15.0

func (m *MsgReportPostResponse) XXX_Size() int

func (*MsgReportPostResponse) XXX_Unmarshal added in v0.15.0

func (m *MsgReportPostResponse) XXX_Unmarshal(b []byte) error

type MsgServer added in v0.15.0

type MsgServer interface {
	// ReportPost defines a method for creating a new post report
	ReportPost(context.Context, *MsgReportPost) (*MsgReportPostResponse, error)
}

MsgServer is the server API for Msg service.

type QueryClient added in v0.15.0

type QueryClient interface {
	// PostReports queries the reports for the post having the given id
	PostReports(ctx context.Context, in *QueryPostReportsRequest, opts ...grpc.CallOption) (*QueryPostReportsResponse, error)
}

QueryClient is the client API for Query service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewQueryClient added in v0.15.0

func NewQueryClient(cc grpc1.ClientConn) QueryClient

type QueryPostReportsRequest added in v0.15.0

type QueryPostReportsRequest struct {
	// ID of the post to which query the reports for
	PostId string `protobuf:"bytes,1,opt,name=post_id,json=postId,proto3" json:"post_id,omitempty"`
}

QueryPostReportsRequest is the request type for the Query/PostReports RPC method.

func (*QueryPostReportsRequest) Descriptor added in v0.15.0

func (*QueryPostReportsRequest) Descriptor() ([]byte, []int)

func (*QueryPostReportsRequest) Marshal added in v0.15.0

func (m *QueryPostReportsRequest) Marshal() (dAtA []byte, err error)

func (*QueryPostReportsRequest) MarshalTo added in v0.15.0

func (m *QueryPostReportsRequest) MarshalTo(dAtA []byte) (int, error)

func (*QueryPostReportsRequest) MarshalToSizedBuffer added in v0.15.0

func (m *QueryPostReportsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*QueryPostReportsRequest) ProtoMessage added in v0.15.0

func (*QueryPostReportsRequest) ProtoMessage()

func (*QueryPostReportsRequest) Reset added in v0.15.0

func (m *QueryPostReportsRequest) Reset()

func (*QueryPostReportsRequest) Size added in v0.15.0

func (m *QueryPostReportsRequest) Size() (n int)

func (*QueryPostReportsRequest) String added in v0.15.0

func (m *QueryPostReportsRequest) String() string

func (*QueryPostReportsRequest) Unmarshal added in v0.15.0

func (m *QueryPostReportsRequest) Unmarshal(dAtA []byte) error

func (*QueryPostReportsRequest) XXX_DiscardUnknown added in v0.15.0

func (m *QueryPostReportsRequest) XXX_DiscardUnknown()

func (*QueryPostReportsRequest) XXX_Marshal added in v0.15.0

func (m *QueryPostReportsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryPostReportsRequest) XXX_Merge added in v0.15.0

func (m *QueryPostReportsRequest) XXX_Merge(src proto.Message)

func (*QueryPostReportsRequest) XXX_Size added in v0.15.0

func (m *QueryPostReportsRequest) XXX_Size() int

func (*QueryPostReportsRequest) XXX_Unmarshal added in v0.15.0

func (m *QueryPostReportsRequest) XXX_Unmarshal(b []byte) error

type QueryPostReportsResponse added in v0.15.0

type QueryPostReportsResponse struct {
	// relationships represent the list of all the relationships for the queried
	// user
	Reports []Report `protobuf:"bytes,1,rep,name=reports,proto3" json:"reports"`
}

QueryPostReportsResponse is the response type for the Query/PostReports RPC method.

func (*QueryPostReportsResponse) Descriptor added in v0.15.0

func (*QueryPostReportsResponse) Descriptor() ([]byte, []int)

func (*QueryPostReportsResponse) GetReports added in v0.15.0

func (m *QueryPostReportsResponse) GetReports() []Report

func (*QueryPostReportsResponse) Marshal added in v0.15.0

func (m *QueryPostReportsResponse) Marshal() (dAtA []byte, err error)

func (*QueryPostReportsResponse) MarshalTo added in v0.15.0

func (m *QueryPostReportsResponse) MarshalTo(dAtA []byte) (int, error)

func (*QueryPostReportsResponse) MarshalToSizedBuffer added in v0.15.0

func (m *QueryPostReportsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*QueryPostReportsResponse) ProtoMessage added in v0.15.0

func (*QueryPostReportsResponse) ProtoMessage()

func (*QueryPostReportsResponse) Reset added in v0.15.0

func (m *QueryPostReportsResponse) Reset()

func (*QueryPostReportsResponse) Size added in v0.15.0

func (m *QueryPostReportsResponse) Size() (n int)

func (*QueryPostReportsResponse) String added in v0.15.0

func (m *QueryPostReportsResponse) String() string

func (*QueryPostReportsResponse) Unmarshal added in v0.15.0

func (m *QueryPostReportsResponse) Unmarshal(dAtA []byte) error

func (*QueryPostReportsResponse) XXX_DiscardUnknown added in v0.15.0

func (m *QueryPostReportsResponse) XXX_DiscardUnknown()

func (*QueryPostReportsResponse) XXX_Marshal added in v0.15.0

func (m *QueryPostReportsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryPostReportsResponse) XXX_Merge added in v0.15.0

func (m *QueryPostReportsResponse) XXX_Merge(src proto.Message)

func (*QueryPostReportsResponse) XXX_Size added in v0.15.0

func (m *QueryPostReportsResponse) XXX_Size() int

func (*QueryPostReportsResponse) XXX_Unmarshal added in v0.15.0

func (m *QueryPostReportsResponse) XXX_Unmarshal(b []byte) error

type QueryServer added in v0.15.0

type QueryServer interface {
	// PostReports queries the reports for the post having the given id
	PostReports(context.Context, *QueryPostReportsRequest) (*QueryPostReportsResponse, error)
}

QueryServer is the server API for Query service.

type Report

type Report struct {
	// ID of the post for which the report has been created
	PostId string `protobuf:"bytes,1,opt,name=post_id,json=postId,proto3" json:"post_id,omitempty" yaml:"post_id"`
	// Identifies the type of the reports
	Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty" yaml:"type"`
	// User message
	Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty" yaml:"message"`
	// Identifies the reporting user
	User string `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty" yaml:"user"`
}

Report is the struct of a post's reports

func AppendIfMissing added in v0.15.0

func AppendIfMissing(reports []Report, report Report) (newSlice []Report, appended bool)

AppendIfMissing appends the given report to the provided reports slice if not already present. If appended, returns the new slice and true. If not appended, returns the original slice and false.

func MustUnmarshalReports added in v0.15.0

func MustUnmarshalReports(bz []byte, cdc codec.BinaryMarshaler) []Report

MustUnmarshalReports tries unmarshalling the given bz to a list of reports. Panics on error.

func NewReport

func NewReport(postID string, reportType string, message string, user string) Report

NewReport returns a Report

func (*Report) Descriptor added in v0.15.0

func (*Report) Descriptor() ([]byte, []int)

func (*Report) Equal added in v0.15.0

func (this *Report) Equal(that interface{}) bool

func (*Report) GetMessage added in v0.15.0

func (m *Report) GetMessage() string

func (*Report) GetPostId added in v0.15.0

func (m *Report) GetPostId() string

func (*Report) GetType added in v0.15.0

func (m *Report) GetType() string

func (*Report) GetUser added in v0.15.0

func (m *Report) GetUser() string

func (*Report) Marshal added in v0.15.0

func (m *Report) Marshal() (dAtA []byte, err error)

func (*Report) MarshalTo added in v0.15.0

func (m *Report) MarshalTo(dAtA []byte) (int, error)

func (*Report) MarshalToSizedBuffer added in v0.15.0

func (m *Report) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Report) ProtoMessage added in v0.15.0

func (*Report) ProtoMessage()

func (*Report) Reset added in v0.15.0

func (m *Report) Reset()

func (*Report) Size added in v0.15.0

func (m *Report) Size() (n int)

func (*Report) String added in v0.15.0

func (m *Report) String() string

func (*Report) Unmarshal added in v0.15.0

func (m *Report) Unmarshal(dAtA []byte) error

func (Report) Validate added in v0.15.0

func (r Report) Validate() error

Validate implements validator

func (*Report) XXX_DiscardUnknown added in v0.15.0

func (m *Report) XXX_DiscardUnknown()

func (*Report) XXX_Marshal added in v0.15.0

func (m *Report) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Report) XXX_Merge added in v0.15.0

func (m *Report) XXX_Merge(src proto.Message)

func (*Report) XXX_Size added in v0.15.0

func (m *Report) XXX_Size() int

func (*Report) XXX_Unmarshal added in v0.15.0

func (m *Report) XXX_Unmarshal(b []byte) error

type Reports

type Reports struct {
	Reports []Report `protobuf:"bytes,1,rep,name=reports,proto3" json:"reports"`
}

Reports wraps a list of Report objects

func (*Reports) Descriptor added in v0.15.0

func (*Reports) Descriptor() ([]byte, []int)

func (*Reports) GetReports added in v0.15.0

func (m *Reports) GetReports() []Report

func (*Reports) Marshal added in v0.15.0

func (m *Reports) Marshal() (dAtA []byte, err error)

func (*Reports) MarshalTo added in v0.15.0

func (m *Reports) MarshalTo(dAtA []byte) (int, error)

func (*Reports) MarshalToSizedBuffer added in v0.15.0

func (m *Reports) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Reports) ProtoMessage added in v0.15.0

func (*Reports) ProtoMessage()

func (*Reports) Reset added in v0.15.0

func (m *Reports) Reset()

func (*Reports) Size added in v0.15.0

func (m *Reports) Size() (n int)

func (*Reports) String added in v0.15.0

func (m *Reports) String() string

func (*Reports) Unmarshal added in v0.15.0

func (m *Reports) Unmarshal(dAtA []byte) error

func (*Reports) XXX_DiscardUnknown added in v0.15.0

func (m *Reports) XXX_DiscardUnknown()

func (*Reports) XXX_Marshal added in v0.15.0

func (m *Reports) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Reports) XXX_Merge added in v0.15.0

func (m *Reports) XXX_Merge(src proto.Message)

func (*Reports) XXX_Size added in v0.15.0

func (m *Reports) XXX_Size() int

func (*Reports) XXX_Unmarshal added in v0.15.0

func (m *Reports) XXX_Unmarshal(b []byte) error

type UnimplementedMsgServer added in v0.15.0

type UnimplementedMsgServer struct {
}

UnimplementedMsgServer can be embedded to have forward compatible implementations.

func (*UnimplementedMsgServer) ReportPost added in v0.15.0

type UnimplementedQueryServer added in v0.15.0

type UnimplementedQueryServer struct {
}

UnimplementedQueryServer can be embedded to have forward compatible implementations.

func (*UnimplementedQueryServer) PostReports added in v0.15.0

Jump to

Keyboard shortcuts

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