mirror of
https://github.com/kataras/iris.git
synced 2025-03-14 08:16:28 +01:00
add a Route#StaticTarget string
to determinate if a specific route is handling static files, could be handly for 3rd party tools
Former-commit-id: 5befb73654c9499ce99a1f14257f85edb9bd7b52
This commit is contained in:
parent
164f24dec4
commit
7f9e33cabb
|
@ -71,6 +71,7 @@ type APIBuilder struct {
|
||||||
errorCodeHandlers *ErrorCodeHandlers
|
errorCodeHandlers *ErrorCodeHandlers
|
||||||
// the api builder global routes repository
|
// the api builder global routes repository
|
||||||
routes *repository
|
routes *repository
|
||||||
|
|
||||||
// the api builder global route path reverser object
|
// the api builder global route path reverser object
|
||||||
// used by the view engine but it can be used anywhere.
|
// used by the view engine but it can be used anywhere.
|
||||||
reverser *RoutePathReverser
|
reverser *RoutePathReverser
|
||||||
|
@ -615,9 +616,12 @@ func (api *APIBuilder) Any(relativePath string, handlers ...context.Handler) (ro
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *APIBuilder) registerResourceRoute(reqPath string, h context.Handler) *Route {
|
func (api *APIBuilder) registerResourceRoute(target, reqPath string, h context.Handler) *Route {
|
||||||
api.Head(reqPath, h)
|
head := api.Head(reqPath, h)
|
||||||
return api.Get(reqPath, h)
|
head.StaticTarget = target
|
||||||
|
get := api.Get(reqPath, h)
|
||||||
|
get.StaticTarget = target
|
||||||
|
return get
|
||||||
}
|
}
|
||||||
|
|
||||||
// StaticHandler returns a new Handler which is ready
|
// StaticHandler returns a new Handler which is ready
|
||||||
|
@ -673,7 +677,7 @@ func (api *APIBuilder) StaticContent(reqPath string, cType string, content []byt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return api.registerResourceRoute(reqPath, h)
|
return api.registerResourceRoute(StaticContentTarget, reqPath, h)
|
||||||
}
|
}
|
||||||
|
|
||||||
// StaticEmbedded used when files are distributed inside the app executable, using go-bindata mostly
|
// StaticEmbedded used when files are distributed inside the app executable, using go-bindata mostly
|
||||||
|
@ -724,7 +728,7 @@ func (api *APIBuilder) staticEmbedded(requestPath string, vdir string, assetFn f
|
||||||
}
|
}
|
||||||
|
|
||||||
// it handles the subdomain(root Party) of this party as well, if any.
|
// it handles the subdomain(root Party) of this party as well, if any.
|
||||||
return api.registerResourceRoute(requestPath, h)
|
return api.registerResourceRoute(vdir, requestPath, h)
|
||||||
}
|
}
|
||||||
|
|
||||||
// errDirectoryFileNotFound returns an error with message: 'Directory or file %s couldn't found. Trace: +error trace'
|
// errDirectoryFileNotFound returns an error with message: 'Directory or file %s couldn't found. Trace: +error trace'
|
||||||
|
@ -783,7 +787,7 @@ func (api *APIBuilder) Favicon(favPath string, requestPath ...string) *Route {
|
||||||
reqPath = requestPath[0]
|
reqPath = requestPath[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
return api.registerResourceRoute(reqPath, h)
|
return api.registerResourceRoute(favPath, reqPath, h)
|
||||||
}
|
}
|
||||||
|
|
||||||
// StaticWeb returns a handler that serves HTTP requests
|
// StaticWeb returns a handler that serves HTTP requests
|
||||||
|
@ -824,7 +828,7 @@ func (api *APIBuilder) StaticWeb(requestPath string, systemPath string) *Route {
|
||||||
}
|
}
|
||||||
|
|
||||||
// it handles the subdomain(root Party) of this party as well, if any.
|
// it handles the subdomain(root Party) of this party as well, if any.
|
||||||
return api.registerResourceRoute(requestPath, h)
|
return api.registerResourceRoute(systemPath, requestPath, h)
|
||||||
}
|
}
|
||||||
|
|
||||||
// OnErrorCode registers an error http status code
|
// OnErrorCode registers an error http status code
|
||||||
|
|
|
@ -33,8 +33,21 @@ type Route struct {
|
||||||
// FormattedPath all dynamic named parameters (if any) replaced with %v,
|
// FormattedPath all dynamic named parameters (if any) replaced with %v,
|
||||||
// used by Application to validate param values of a Route based on its name.
|
// used by Application to validate param values of a Route based on its name.
|
||||||
FormattedPath string `json:"formattedPath"`
|
FormattedPath string `json:"formattedPath"`
|
||||||
|
|
||||||
|
// StaticTarget if not empty, refers to the system (or virtual if embedded) directory
|
||||||
|
// that this route is serving static files/resources from
|
||||||
|
// or to a single static filename if this route created via `APIBuilder#Favicon`
|
||||||
|
// or to a `StaticContentTarget` type if this rotue created by `APIBuilder#StaticContent`.
|
||||||
|
//
|
||||||
|
// If a route is serving static files via `APIBuilder`
|
||||||
|
// there are two routes with the same dir/filename set to this field,
|
||||||
|
// one for "HEAD" and the other for the "GET" http method.
|
||||||
|
StaticTarget string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// StaticContentTarget used whenever a `Route#StaticTarget` refers to a raw []byte static content instead of a directory or a file.
|
||||||
|
const StaticContentTarget = "content"
|
||||||
|
|
||||||
// NewRoute returns a new route based on its method,
|
// NewRoute returns a new route based on its method,
|
||||||
// subdomain, the path (unparsed or original),
|
// subdomain, the path (unparsed or original),
|
||||||
// handlers and the macro container which all routes should share.
|
// handlers and the macro container which all routes should share.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user