app/

directory
v0.0.0-...-83adff0 Latest Latest
Warning

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

Go to latest
Published: Jul 6, 2020 License: GPL-3.0

README

go-common/business

业务仓库目录

目录 描述
service rpc service
client rpc client sdk
interface gateway
admin 运营管理服务
job 后台异步服务job
model 业务实体model
ecode 统一错误码

Directories

Path Synopsis
admin
live/live-admin/api/http/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/live-admin/api/http/v2
Package v2 is a generated blademaster stub package.
Package v2 is a generated blademaster stub package.
main/aegis/dao/rpc
Package mock is a generated GoMock package.
Package mock is a generated GoMock package.
main/growup/dao/shell
Package shell implements calculate signature for shell(pay system) query parameters.
Package shell implements calculate signature for shell(pay system) query parameters.
main/member/model/bom
Package bom is used to clean up UTF-8 Byte Order Marks.
Package bom is used to clean up UTF-8 Byte Order Marks.
main/up/util/now
Package now is a time toolkit for golang.
Package now is a time toolkit for golang.
main/up/util/timerqueue
Package timerqueue implements a priority queue for objects scheduled at a particular time.
Package timerqueue implements a priority queue for objects scheduled at a particular time.
common
infra
interface
bbq/app-bbq/model/grpc
Package grpc is a generated protocol buffer package.
Package grpc is a generated protocol buffer package.
live/app-blink/api/http/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/app-interface/api/http/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/app-interface/api/http/v2
Package v2 is a generated blademaster stub package.
Package v2 is a generated blademaster stub package.
live/app-interface/service/v1
Package v1 为粉版App、直播App端提供卡片聚合接口,展示直播首页、关注二级页信息 关注模块文档 http://info.bilibili.co/display/live/APP+5.34 首页模块文档 http://info.bilibili.co/pages/viewpage.action?pageId=11546573
Package v1 为粉版App、直播App端提供卡片聚合接口,展示直播首页、关注二级页信息 关注模块文档 http://info.bilibili.co/display/live/APP+5.34 首页模块文档 http://info.bilibili.co/pages/viewpage.action?pageId=11546573
live/app-room/api/http/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/app-ucenter/api/http/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/live-demo/api/http
Package livedemo is a generated blademaster stub package.
Package livedemo is a generated blademaster stub package.
live/live-demo/api/http/v2
Package v2 is a generated blademaster stub package.
Package v2 is a generated blademaster stub package.
live/live-demo/server/http
Package http is where http server init, including routes
Package http is where http server init, including routes
live/open-interface/api/http/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/web-room/api/http/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/web-ucenter/api/http
Package http is a generated blademaster stub package.
Package http is a generated blademaster stub package.
live/web-ucenter/api/http/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
main/activity/model/bws
Package bws is a generated protocol buffer package.
Package bws is a generated protocol buffer package.
main/answer/http
Package http detect localized from http header and set localized info to metadata as key 'locale' The locale used following the specification defined at http://www.rfc-editor.org/rfc/bcp/bcp47.txt.
Package http detect localized from http header and set localized info to metadata as key 'locale' The locale used following the specification defined at http://www.rfc-editor.org/rfc/bcp/bcp47.txt.
main/app-intl/model/player/archive
Package archive is a generated protocol buffer package.
Package archive is a generated protocol buffer package.
main/app-player/model/archive
Package archive is a generated protocol buffer package.
Package archive is a generated protocol buffer package.
main/app-resource/api/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/app-resource/model/version
Package version is a generated protocol buffer package.
Package version is a generated protocol buffer package.
main/broadcast/api/grpc/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/broadcast/server/grpc
Package server generate by warden_gen
Package server generate by warden_gen
main/creative/api
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/dm2/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/history/api/grpc
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/history/server/grpc
Package grpc generate by warden_gen
Package grpc generate by warden_gen
main/passport-login/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
openplatform/article/rpc/client
Package client is a generated GoMock package.
Package client is a generated GoMock package.
job
live-userexp/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/dm/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/dm2/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/figure-timer/dao/mock_dao
Package mock_dao is a generated GoMock package.
Package mock_dao is a generated GoMock package.
main/member/model/queue
Package queue includes a regular queue and a priority queue.
Package queue includes a regular queue and a priority queue.
main/passport-game-cloud/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/passport-sns/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/passport-user/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/relation/fsm
Package fsm implements a finite state machine.
Package fsm implements a finite state machine.
main/vip/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
service
bbq/recsys/service/rank/treelite
Package treelite is a generated protocol buffer package.
Package treelite is a generated protocol buffer package.
bbq/search/api/grpc/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
bbq/video/api/grpc/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
bbq/video/model/grpc
Package grpc is a generated protocol buffer package.
Package grpc is a generated protocol buffer package.
live/activity/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/activity/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/av/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/av/api/liverpc/v0
Package v0 is a generated liverpc stub package.
Package v0 is a generated liverpc stub package.
live/av/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/banned_service/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/banned_service/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/captcha/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/captcha/api/liverpc/v0
Package v0 is a generated liverpc stub package.
Package v0 is a generated liverpc stub package.
live/captcha/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/dao-anchor/api/grpc/v0
Package v0 is a generated blademaster stub package.
Package v0 is a generated blademaster stub package.
live/dao-anchor/api/grpc/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/fans_medal/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/fans_medal/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/fans_medal/api/liverpc/v2
Package v2 is a generated liverpc stub package.
Package v2 is a generated liverpc stub package.
live/gift/api/grpc/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/gift/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/gift/api/liverpc/v0
Package v0 is a generated liverpc stub package.
Package v0 is a generated liverpc stub package.
live/gift/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/live-dm/api/grpc/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/live_data/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/live_data/api/liverpc/v0
Package v0 is a generated liverpc stub package.
Package v0 is a generated liverpc stub package.
live/live_data/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/live_user/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/live_user/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/rankdb/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/rankdb/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/rc/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/rc/api/liverpc/v0
Package v0 is a generated liverpc stub package.
Package v0 is a generated liverpc stub package.
live/rc/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/recommend/api/grpc/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/relation/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/relation/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/relation/api/liverpc/v2
Package v2 is a generated liverpc stub package.
Package v2 is a generated liverpc stub package.
live/resource/api/grpc/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/resource/api/grpc/v2
Package v2 is a generated blademaster stub package.
Package v2 is a generated blademaster stub package.
live/resource/api/http/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/room/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/room/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/room/api/liverpc/v2
Package v2 is a generated liverpc stub package.
Package v2 is a generated liverpc stub package.
live/room_ex/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/room_ex/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/rtc/api/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/user/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/user/api/liverpc/v3
Package v3 is a generated liverpc stub package.
Package v3 is a generated liverpc stub package.
live/userext/api/liverpc
Code generated by liverpcgen, DO NOT EDIT.
Code generated by liverpcgen, DO NOT EDIT.
live/userext/api/liverpc/v0
Package v0 is a generated liverpc stub package.
Package v0 is a generated liverpc stub package.
live/userext/api/liverpc/v1
Package v1 is a generated liverpc stub package.
Package v1 is a generated liverpc stub package.
live/wallet/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
live/xanchor/api/grpc/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/xcaptcha/api/grpc/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/xcaptcha/api/http/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/xlottery/api/grpc/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/xrewardcenter/api/grpc/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/xroom-feed/api
Package api is a generated blademaster stub package.
Package api is a generated blademaster stub package.
live/xroom/api
Package api is a generated blademaster stub package.
Package api is a generated blademaster stub package.
live/xuser/api/grpc/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/xuserex/api/grpc/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
live/zeus/api/v1
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
main/account/api
Package api is a generated GoMock package.
Package api is a generated GoMock package.
main/account/model/queue
Package queue includes a regular queue and a priority queue.
Package queue includes a regular queue and a priority queue.
main/archive/api
Package api is a generated protocol buffer package.
Package api is a generated protocol buffer package.
main/archive/model/archive
Package archive is a generated protocol buffer package.
Package archive is a generated protocol buffer package.
main/broadcast/api/grpc/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/broadcast/libs/bufio
Package bufio implements buffered I/O. It wraps an io.Reader or io.Writer object, creating another object (Reader or Writer) that also implements the interface but provides buffering and some help for textual I/O.
Package bufio implements buffered I/O. It wraps an io.Reader or io.Writer object, creating another object (Reader or Writer) that also implements the interface but provides buffering and some help for textual I/O.
main/broadcast/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/broadcast/server/grpc
Package server generate by warden_gen
Package server generate by warden_gen
main/card/api/grpc/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/card/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/card/server/grpc
Package server generate by warden_gen
Package server generate by warden_gen
main/coin/api
Package api is a generated protocol buffer package.
Package api is a generated protocol buffer package.
main/coin/api/gorpc
Package coin is a generated GoMock package.
Package coin is a generated GoMock package.
main/coin/server/grpc
Package server generate by warden_gen
Package server generate by warden_gen
main/coupon/api
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/coupon/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/coupon/server/grpc
Package server generate by warden_gen
Package server generate by warden_gen
main/dapper-query/api/v1
Package v1 Code generated by go-common/app/tool/protoc-gen-bm.
Package v1 Code generated by go-common/app/tool/protoc-gen-bm.
main/dapper-query/pkg/cltclient
Package cltclient provide fetch and merge data from collector
Package cltclient provide fetch and merge data from collector
main/dapper-query/pkg/opslog
Package opslog provide ops-log api
Package opslog provide ops-log api
main/dynamic/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/favorite/server/grpc
Package server generate by warden_gen
Package server generate by warden_gen
main/feed/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/history/api/grpc
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/history/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/identify/api/grpc
Package v1 .
Package v1 .
main/identify/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/location/api
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/location/server/grpc
Package server generate by warden_gen
Package server generate by warden_gen
main/member/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/open/server/grpc
Package grpc generate by warden_gen
Package grpc generate by warden_gen
main/passport-auth/api/grpc/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/passport-auth/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/passport-auth/rpc/grpc
Package grpc server generate by warden_gen
Package grpc server generate by warden_gen
main/passport-game/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/passport-sns/api
Package api is a generated blademaster stub package.
Package api is a generated blademaster stub package.
main/passport-sns/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/point/api
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/point/server/grpc
Package server generate by warden_gen
Package server generate by warden_gen
main/push/api/grpc/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/push/dao/apns2
Package apns2 is a go Apple Push Notification Service (APNs) provider that allows you to send remote notifications to your iOS, tvOS, and OS X apps, using the new APNs HTTP/2 network protocol.
Package apns2 is a go Apple Push Notification Service (APNs) provider that allows you to send remote notifications to your iOS, tvOS, and OS X apps, using the new APNs HTTP/2 network protocol.
main/rank/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/reply-feed/api
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/resource/server/grpc
Package server generate by warden_gen
Package server generate by warden_gen
main/secure/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/sms/api
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/sms/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/spy/api
+bili:deepcopy-gen=package
+bili:deepcopy-gen=package
main/spy/server/grpc
Package server generate by warden_gen
Package server generate by warden_gen
main/thumbup/api
Package api is a generated protocol buffer package.
Package api is a generated protocol buffer package.
main/thumbup/rpc/client
Package client is a generated GoMock package.
Package client is a generated GoMock package.
main/tv/api
+bili:deepcopy-gen=package
+bili:deepcopy-gen=package
main/ugcpay-rank/api/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/ugcpay-rank/internal/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/ugcpay/api/grpc/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/up/api/v1
Package v1 Code generated by go-common/app/tool/protoc-gen-bm.
Package v1 Code generated by go-common/app/tool/protoc-gen-bm.
main/up/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/upcredit/common/fsm
Package fsm implements a finite state machine.
Package fsm implements a finite state machine.
main/usersuit/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/vip/api
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/vip/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/vip/server/grpc
Package server generate by warden_gen
Package server generate by warden_gen
main/vipinfo/api
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
main/vipinfo/model
Package model is a generated protocol buffer package.
Package model is a generated protocol buffer package.
main/vipinfo/server/grpc
Package server generate by warden_gen
Package server generate by warden_gen
openplatform/pgc-season/api/grpc/episode/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
openplatform/pgc-season/api/grpc/season/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
openplatform/ticket-item/api/grpc/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
openplatform/ticket-sales/api/grpc/type
Package _type is a generated protocol buffer package.
Package _type is a generated protocol buffer package.
openplatform/ticket-sales/api/grpc/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
ops/log-agent/output/lancergrpc/lancergateway
Package StreamEvent is a generated protocol buffer package.
Package StreamEvent is a generated protocol buffer package.
ops/log-agent/pkg/bufio
Package bufio implements buffered I/O. It wraps an io.Reader or io.Writer object, creating another object (Reader or Writer) that also implements the interface but provides buffering and some help for textual I/O.
Package bufio implements buffered I/O. It wraps an io.Reader or io.Writer object, creating another object (Reader or Writer) that also implements the interface but provides buffering and some help for textual I/O.
video/stream-mng/server/grpc
Package server generate by warden_gen
Package server generate by warden_gen
tool
bgr
bmproto/protoc-gen-bm/example
Package v1 is a generated blademaster stub package.
Package v1 is a generated blademaster stub package.
gdoc
Package swagger struct definition
Package swagger struct definition
gengo/args
Package args has common command-line flags for generation programs.
Package args has common command-line flags for generation programs.
gengo/cmd/deepcopy-gen
deepcopy-gen is a tool for auto-generating DeepCopy functions.
deepcopy-gen is a tool for auto-generating DeepCopy functions.
gengo/cmd/deepcopy-gen/examples/api/v1
Package v1 is a generated protocol buffer package.
Package v1 is a generated protocol buffer package.
gengo/generator
Package generator defines an interface for code generators to implement.
Package generator defines an interface for code generators to implement.
gengo/namer
Package namer has support for making different type naming systems.
Package namer has support for making different type naming systems.
gengo/parser
Package parser provides code to parse go files, type-check them, extract the types.
Package parser provides code to parse go files, type-check them, extract the types.
gengo/types
Package types contains go type information, packaged in a way that makes auto-generation convenient, whether by template or straight go functions.
Package types contains go type information, packaged in a way that makes auto-generation convenient, whether by template or straight go functions.
gorpc
A commandline tool for generating rpc code by service methods.
A commandline tool for generating rpc code by service methods.
gorpc/goparser
Package goparse contains logic for parsing Go files.
Package goparse contains logic for parsing Go files.
kratos
kratos 是go-common的工具链,提供新项目创建,bazel编译功能
kratos 是go-common的工具链,提供新项目创建,bazel编译功能
protoc-gen-bm/examples/helloworld/api
Package v1 Code generated by go-common/app/tool/protoc-gen-bm.
Package v1 Code generated by go-common/app/tool/protoc-gen-bm.
protoc-gen-bm/generator
Package generator provides an abstract interface to code generators.
Package generator provides an abstract interface to code generators.
protoc-gen-bm/jsonpb
Package jsonpb provides marshaling and unmarshaling between protocol buffers and JSON.
Package jsonpb provides marshaling and unmarshaling between protocol buffers and JSON.

Jump to

Keyboard shortcuts

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