mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 02:31:04 +01:00
minor
Former-commit-id: 0bc9c92c519edda9e04be8481e16fd2fdcfc74c0
This commit is contained in:
parent
3fa022738b
commit
836e641229
|
@ -132,6 +132,7 @@
|
|||
* [Content Negotiation](response-writer/content-negotiation)
|
||||
* [Text, Markdown, YAML, HTML, JSON, JSONP, Msgpack, XML and Binary](response-writer/write-rest/main.go)
|
||||
* [Write Gzip](response-writer/write-gzip/main.go)
|
||||
* [HTTP/2 Server Push](response-writer/http2push/main.go)
|
||||
* [Stream Writer](response-writer/stream-writer/main.go)
|
||||
* [Transactions](response-writer/transactions/main.go)
|
||||
* [SSE](response-writer/sse/main.go)
|
||||
|
@ -181,6 +182,7 @@
|
|||
* [Smart Contract](dependency-injection/smart-contract/main.go)
|
||||
* [JWT](dependency-injection/jwt/main.go)
|
||||
* [JWT (iris-contrib)](dependency-injection/jwt/contrib/main.go)
|
||||
* [Register Dependency from Context](dependency-injection/context-register-dependency/main.go)
|
||||
* MVC
|
||||
* [Overview](mvc/overview)
|
||||
* [Repository and Service layers](mvc/repository)
|
||||
|
|
40
_examples/response-writer/http2push/main.go
Normal file
40
_examples/response-writer/http2push/main.go
Normal file
|
@ -0,0 +1,40 @@
|
|||
// Server push lets the server preemptively "push" website assets
|
||||
// to the client without the user having explicitly asked for them.
|
||||
// When used with care, we can send what we know the user is going
|
||||
// to need for the page they’re requesting.
|
||||
package main
|
||||
|
||||
import "github.com/kataras/iris/v12"
|
||||
|
||||
func main() {
|
||||
app := iris.New()
|
||||
app.Get("/", pushHandler)
|
||||
app.Get("/main.js", simpleAssetHandler)
|
||||
|
||||
app.Run(iris.TLS("127.0.0.1:443", "mycert.crt", "mykey.key"))
|
||||
// $ openssl req -new -newkey rsa:4096 -x509 -sha256 \
|
||||
// -days 365 -nodes -out mycert.crt -keyout mykey.key
|
||||
}
|
||||
|
||||
func pushHandler(ctx iris.Context) {
|
||||
// The target must either be an absolute path (like "/path") or an absolute
|
||||
// URL that contains a valid host and the same scheme as the parent request.
|
||||
// If the target is a path, it will inherit the scheme and host of the
|
||||
// parent request.
|
||||
target := "/main.js"
|
||||
err := ctx.ResponseWriter().Push(target, nil)
|
||||
if err != nil {
|
||||
if err == iris.ErrPushNotSupported {
|
||||
ctx.StopWithText(iris.StatusHTTPVersionNotSupported, "HTTP/2 push not supported.")
|
||||
} else {
|
||||
ctx.StopWithError(iris.StatusInternalServerError, err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
ctx.HTML(`<html><body><script src="%s"></script></body></html>`, target)
|
||||
}
|
||||
|
||||
func simpleAssetHandler(ctx iris.Context) {
|
||||
ctx.ServeFile("./public/main.js")
|
||||
}
|
31
_examples/response-writer/http2push/mycert.crt
Normal file
31
_examples/response-writer/http2push/mycert.crt
Normal file
|
@ -0,0 +1,31 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
52
_examples/response-writer/http2push/mykey.key
Normal file
52
_examples/response-writer/http2push/mykey.key
Normal file
|
@ -0,0 +1,52 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
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
|
||||
W2TzuSMYNDu876twbTVQJED3mwOAQ3J7
|
||||
-----END PRIVATE KEY-----
|
1
_examples/response-writer/http2push/public/main.js
Normal file
1
_examples/response-writer/http2push/public/main.js
Normal file
|
@ -0,0 +1 @@
|
|||
window.alert("javascript loaded");
|
|
@ -84,6 +84,10 @@ func main() {
|
|||
ctx.YAML(ExampleYAML{Name: "Iris", ServerAddr: "localhost:8080"})
|
||||
})
|
||||
|
||||
// app.Get("/protobuf", func(ctx iris.Context) {
|
||||
// ctx.Protobuf(proto.Message)
|
||||
// })
|
||||
|
||||
app.Get("/msgpack", func(ctx iris.Context) {
|
||||
u := User{
|
||||
Firstname: "John",
|
||||
|
|
|
@ -626,8 +626,12 @@ func (tc *TunnelingConfiguration) isEnabled() bool {
|
|||
|
||||
func (tc *TunnelingConfiguration) isNgrokRunning() bool {
|
||||
resp, err := http.Get(tc.WebInterface)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
resp.Body.Close()
|
||||
return err == nil
|
||||
return true
|
||||
}
|
||||
|
||||
// https://ngrok.com/docs
|
||||
|
|
|
@ -3624,7 +3624,7 @@ type JSON struct {
|
|||
Indent string
|
||||
Prefix string
|
||||
ASCII bool // if true writes with unicode to ASCII content.
|
||||
Secure bool // if true then it adds a "while(1);" when Go slice (to JSON Array) value.
|
||||
Secure bool // if true then it prepends a "while(1);" when Go slice (to JSON Array) value.
|
||||
}
|
||||
|
||||
// JSONP contains the options for the JSONP (Context's) Renderer.
|
||||
|
|
|
@ -349,6 +349,10 @@ func (w *responseWriter) WriteTo(to ResponseWriter) {
|
|||
// the body is not copied, this writer doesn't support recording
|
||||
}
|
||||
|
||||
// ErrHijackNotSupported is returned by the Hijack method to
|
||||
// indicate that Hijack feature is not available.
|
||||
var ErrHijackNotSupported = errors.New("hijack is not supported by this ResponseWriter")
|
||||
|
||||
// Hijack lets the caller take over the connection.
|
||||
// After a call to Hijack(), the HTTP server library
|
||||
// will not do anything else with the connection.
|
||||
|
@ -366,7 +370,7 @@ func (w *responseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) {
|
|||
return h.Hijack()
|
||||
}
|
||||
|
||||
return nil, nil, errors.New("hijack is not supported by this ResponseWriter")
|
||||
return nil, nil, ErrHijackNotSupported
|
||||
}
|
||||
|
||||
// Flusher indicates if `Flush` is supported by the client.
|
||||
|
|
10
iris.go
10
iris.go
|
@ -605,6 +605,16 @@ var (
|
|||
// ErrStopExecution if returned from a hero middleware or a request-scope dependency
|
||||
// stops the handler's execution, see _examples/dependency-injection/basic/middleware.
|
||||
ErrStopExecution = hero.ErrStopExecution
|
||||
// ErrHijackNotSupported is returned by the Hijack method to
|
||||
// indicate that Hijack feature is not available.
|
||||
//
|
||||
// A shortcut for the `context#ErrHijackNotSupported`.
|
||||
ErrHijackNotSupported = context.ErrHijackNotSupported
|
||||
// ErrPushNotSupported is returned by the Push method to
|
||||
// indicate that HTTP/2 Push support is not available.
|
||||
//
|
||||
// A shortcut for the `context#ErrPushNotSupported`.
|
||||
ErrPushNotSupported = context.ErrPushNotSupported
|
||||
)
|
||||
|
||||
// Constants for input argument at `router.RouteRegisterRule`.
|
||||
|
|
Loading…
Reference in New Issue
Block a user