mirror of
https://github.com/kataras/iris.git
synced 2026-01-08 12:31:58 +00:00
Add notes for the new lead maintainer of the open-source iris project and align with @get-ion/ion by @hiveminded
Former-commit-id: da4f38eb9034daa49446df3ee529423b98f9b331
This commit is contained in:
50
_examples/miscellaneous/file-logger/main.go
Normal file
50
_examples/miscellaneous/file-logger/main.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/kataras/iris"
|
||||
"github.com/kataras/iris/context"
|
||||
)
|
||||
|
||||
// get a filename based on the date, file logs works that way the most times
|
||||
// but these are just a sugar.
|
||||
func todayFilename() string {
|
||||
today := time.Now().Format("Jan 02 2006")
|
||||
return today + ".txt"
|
||||
}
|
||||
|
||||
func newLogFile() *os.File {
|
||||
filename := todayFilename()
|
||||
// open an output file, this will append to the today's file if server restarted.
|
||||
f, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return f
|
||||
}
|
||||
|
||||
func main() {
|
||||
f := newLogFile()
|
||||
defer f.Close()
|
||||
|
||||
app := iris.New()
|
||||
// attach the file as logger, remember, iris' app logger is just an io.Writer.
|
||||
app.Logger().Out = newLogFile()
|
||||
|
||||
app.Get("/", func(ctx context.Context) {
|
||||
// for the sake of simplicity, in order see the logs at the ./_today_.txt
|
||||
ctx.Application().Logger().Infoln("Request path: " + ctx.Path())
|
||||
ctx.Writef("hello")
|
||||
})
|
||||
|
||||
// navigate to http://localhost:8080
|
||||
// and open the ./logs.txt file
|
||||
if err := app.Run(iris.Addr(":8080"), iris.WithoutBanner); err != nil {
|
||||
if err != iris.ErrServerClosed {
|
||||
app.Logger().Warnln("Shutdown with error: " + err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
1
_examples/miscellaneous/i18n/locales/locale_el-GR.ini
Normal file
1
_examples/miscellaneous/i18n/locales/locale_el-GR.ini
Normal file
@@ -0,0 +1 @@
|
||||
hi = γεια, %s
|
||||
1
_examples/miscellaneous/i18n/locales/locale_en-US.ini
Normal file
1
_examples/miscellaneous/i18n/locales/locale_en-US.ini
Normal file
@@ -0,0 +1 @@
|
||||
hi = hello, %s
|
||||
1
_examples/miscellaneous/i18n/locales/locale_zh-CN.ini
Normal file
1
_examples/miscellaneous/i18n/locales/locale_zh-CN.ini
Normal file
@@ -0,0 +1 @@
|
||||
hi = 您好,%s
|
||||
55
_examples/miscellaneous/i18n/main.go
Normal file
55
_examples/miscellaneous/i18n/main.go
Normal file
@@ -0,0 +1,55 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/kataras/iris"
|
||||
"github.com/kataras/iris/context"
|
||||
"github.com/kataras/iris/middleware/i18n"
|
||||
)
|
||||
|
||||
func newApp() *iris.Application {
|
||||
app := iris.New()
|
||||
|
||||
app.Use(i18n.New(i18n.Config{
|
||||
Default: "en-US",
|
||||
URLParameter: "lang",
|
||||
Languages: map[string]string{
|
||||
"en-US": "./locales/locale_en-US.ini",
|
||||
"el-GR": "./locales/locale_el-GR.ini",
|
||||
"zh-CN": "./locales/locale_zh-CN.ini"}}))
|
||||
|
||||
app.Get("/", func(ctx context.Context) {
|
||||
|
||||
// it tries to find the language by:
|
||||
// ctx.Values().GetString("language")
|
||||
// if that was empty then
|
||||
// it tries to find from the URLParameter setted on the configuration
|
||||
// if not found then
|
||||
// it tries to find the language by the "language" cookie
|
||||
// if didn't found then it it set to the Default setted on the configuration
|
||||
|
||||
// hi is the key, 'iris' is the %s on the .ini file
|
||||
// the second parameter is optional
|
||||
|
||||
// hi := ctx.Translate("hi", "iris")
|
||||
// or:
|
||||
hi := i18n.Translate(ctx, "hi", "iris")
|
||||
|
||||
language := ctx.Values().GetString(ctx.Application().ConfigurationReadOnly().GetTranslateLanguageContextKey())
|
||||
// return is form of 'en-US'
|
||||
|
||||
// The first succeed language found saved at the cookie with name ("language"),
|
||||
// you can change that by changing the value of the: iris.TranslateLanguageContextKey
|
||||
ctx.Writef("From the language %s translated output: %s", language, hi)
|
||||
})
|
||||
|
||||
return app
|
||||
}
|
||||
|
||||
func main() {
|
||||
app := newApp()
|
||||
|
||||
// go to http://localhost:8080/?lang=el-GR
|
||||
// or http://localhost:8080
|
||||
// or http://localhost:8080/?lang=zh-CN
|
||||
app.Run(iris.Addr(":8080"))
|
||||
}
|
||||
29
_examples/miscellaneous/i18n/main_test.go
Normal file
29
_examples/miscellaneous/i18n/main_test.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/kataras/iris/httptest"
|
||||
)
|
||||
|
||||
func TestI18n(t *testing.T) {
|
||||
app := newApp()
|
||||
|
||||
expectedf := "From the language %s translated output: %s"
|
||||
var (
|
||||
elgr = fmt.Sprintf(expectedf, "el-GR", "γεια, iris")
|
||||
enus = fmt.Sprintf(expectedf, "en-US", "hello, iris")
|
||||
zhcn = fmt.Sprintf(expectedf, "zh-CN", "您好,iris")
|
||||
)
|
||||
|
||||
e := httptest.New(t, app)
|
||||
// default is en-US
|
||||
e.GET("/").Expect().Status(httptest.StatusOK).Body().Equal(enus)
|
||||
// default is en-US if lang query unable to be found
|
||||
e.GET("/").WithQueryString("lang=un-EX").Expect().Status(httptest.StatusOK).Body().Equal(enus)
|
||||
|
||||
e.GET("/").WithQueryString("lang=el-GR").Expect().Status(httptest.StatusOK).Body().Equal(elgr)
|
||||
e.GET("/").WithQueryString("lang=en-US").Expect().Status(httptest.StatusOK).Body().Equal(enus)
|
||||
e.GET("/").WithQueryString("lang=zh-CN").Expect().Status(httptest.StatusOK).Body().Equal(zhcn)
|
||||
}
|
||||
20
_examples/miscellaneous/pprof/main.go
Normal file
20
_examples/miscellaneous/pprof/main.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/kataras/iris"
|
||||
"github.com/kataras/iris/context"
|
||||
|
||||
"github.com/kataras/iris/middleware/pprof"
|
||||
)
|
||||
|
||||
func main() {
|
||||
app := iris.New()
|
||||
|
||||
app.Get("/", func(ctx context.Context) {
|
||||
ctx.HTML("<h1> Please click <a href='/debug/pprof'>here</a>")
|
||||
})
|
||||
|
||||
app.Any("/debug/pprof/{action:path}", pprof.New())
|
||||
// ___________
|
||||
app.Run(iris.Addr(":8080"))
|
||||
}
|
||||
30
_examples/miscellaneous/recover/main.go
Normal file
30
_examples/miscellaneous/recover/main.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/kataras/iris"
|
||||
"github.com/kataras/iris/context"
|
||||
|
||||
"github.com/kataras/iris/middleware/recover"
|
||||
)
|
||||
|
||||
func main() {
|
||||
app := iris.New()
|
||||
// use this recover(y) middleware
|
||||
app.Use(recover.New())
|
||||
|
||||
i := 0
|
||||
// let's simmilate a panic every next request
|
||||
app.Get("/", func(ctx context.Context) {
|
||||
i++
|
||||
if i%2 == 0 {
|
||||
panic("a panic here")
|
||||
}
|
||||
ctx.Writef("Hello, refresh one time more to get panic!")
|
||||
})
|
||||
|
||||
// http://localhost:8080, refresh it 5-6 times.
|
||||
app.Run(iris.Addr(":8080"))
|
||||
}
|
||||
|
||||
// Note:
|
||||
// app := iris.Default() instead of iris.New() makes use of the recovery middleware automatically.
|
||||
Reference in New Issue
Block a user