mirror of
https://github.com/kataras/iris.git
synced 2026-01-10 05:25:58 +00:00
Add context.FindClosest(n) to find closest paths - useful for 404 pages to suggest valid pages
Former-commit-id: 90ff7c9da5369df5bd99fbbecf9955a8c555fea5
This commit is contained in:
@@ -60,4 +60,8 @@ type Application interface {
|
||||
// RouteExists reports whether a particular route exists
|
||||
// It will search from the current subdomain of context's host, if not inside the root domain.
|
||||
RouteExists(ctx Context, method, path string) bool
|
||||
// FindClosestPaths returns a list of "n" paths close to "path" under the given "subdomain".
|
||||
//
|
||||
// Order may change.
|
||||
FindClosestPaths(subdomain, searchPath string, n int) []string
|
||||
}
|
||||
|
||||
@@ -310,6 +310,12 @@ type Context interface {
|
||||
// Subdomain returns the subdomain of this request, if any.
|
||||
// Note that this is a fast method which does not cover all cases.
|
||||
Subdomain() (subdomain string)
|
||||
// FindClosest returns a list of "n" paths close to
|
||||
// this request based on subdomain and request path.
|
||||
//
|
||||
// Order may change.
|
||||
// Example: https://github.com/kataras/iris/tree/master/_examples/routing/not-found-suggests
|
||||
FindClosest(n int) []string
|
||||
// IsWWW returns true if the current subdomain (if any) is www.
|
||||
IsWWW() bool
|
||||
// FullRqeuestURI returns the full URI,
|
||||
@@ -1600,6 +1606,15 @@ func (ctx *context) Subdomain() (subdomain string) {
|
||||
return
|
||||
}
|
||||
|
||||
// FindClosest returns a list of "n" paths close to
|
||||
// this request based on subdomain and request path.
|
||||
//
|
||||
// Order may change.
|
||||
// Example: https://github.com/kataras/iris/tree/master/_examples/routing/not-found-suggests
|
||||
func (ctx *context) FindClosest(n int) []string {
|
||||
return ctx.Application().FindClosestPaths(ctx.Subdomain(), ctx.Path(), n)
|
||||
}
|
||||
|
||||
// IsWWW returns true if the current subdomain (if any) is www.
|
||||
func (ctx *context) IsWWW() bool {
|
||||
host := ctx.Host()
|
||||
|
||||
@@ -31,6 +31,10 @@ type RouteReadOnly interface {
|
||||
// IsOnline returns true if the route is marked as "online" (state).
|
||||
IsOnline() bool
|
||||
|
||||
// IsStatic reports whether this route is a static route.
|
||||
// Does not contain dynamic path parameters,
|
||||
// is online and registered on GET HTTP Method.
|
||||
IsStatic() bool
|
||||
// StaticPath returns the static part of the original, registered route path.
|
||||
// if /user/{id} it will return /user
|
||||
// if /user/{id}/friend/{friendid:uint64} it will return /user too
|
||||
|
||||
Reference in New Issue
Block a user