diff --git a/README.md b/README.md
index d30704ab..cef98940 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@

-Iris is a well-known web application framework written in Go.
+Iris is the fastest back-end web framework written in Go.
Easy to learn while it's highly customizable,
ideally suited for
both experienced and novice developers.
@@ -40,49 +40,52 @@ If you're coming from Node.js world, this i
-
-
-
-
- This project started ~9 months ago
- and rapidly won your trust,
- I'm very thankful for this and
- I promise you that I'll continue to
- do my bests.
-
- All people, poor or rich, should give
- and share with each others.
-
- As a person who knows
- how someone feels when opens
- the fridge and finds nothing to eat, again,
- I decided that all the money you
- donated so far[424 EUR],
- and until the end of this month,
- should go back to the people
- who need them most.
- Is not enough but...
-
-
-
-
-
-
- CHRISTMAS IS MOST TRULY
- CHRISTMAS WHEN WE
- CELEBRATE IT BY GIVING THE
- LIGHT OF LOVE TO THOSE
- WHO NEED IT MOST.
-
- ~ Ruth Carter Stapleton
-
-
-
-
+
+Feature Overview
+-----------
+
+- Focus on high performance
+- Automatically install and serve certificates from https://letsencrypt.org
+- Robust routing and middleware ecosystem
+- Build RESTful APIs
+- Group API's and subdomains with wildcard support
+- Body binding for JSON, XML, Forms, can be extended to use your own custom binders
+- More than 50 handy functions to send HTTP responses
+- View system: supporting more than 6+ template engines, with prerenders. You can still use your favorite
+- Define virtual hosts and (wildcard) subdomains with path level routing
+- Graceful shutdown
+- Limit request body
+- Localization i18N
+- Serve static files
+- Cache
+- Log requests
+- Customizable format and output for the logger
+- Customizable HTTP errors
+- Compression (Gzip)
+- Authentication
+ - OAuth, OAuth2 supporting 27+ popular websites
+ - JWT
+ - Basic Authentication
+ - HTTP Sessions
+- Add / Remove trailing slash from the URL with option to redirect
+- Redirect requests
+ - HTTP to HTTPS
+ - HTTP to HTTPS WWW
+ - HTTP to HTTPS non WWW
+ - Non WWW to WWW
+ - WWW to non WWW
+- Highly scalable rich content render (Markdown, JSON, JSONP, XML...)
+- Websocket-only API similar to socket.io
+- Hot Reload on source code changes
+- Typescript integration + Web IDE
+- Checks for updates at startup
+- Highly customizable
+- Feels like you used iris forever, thanks to its Fluent API
+- And many others...
Quick Start
-----------
@@ -134,6 +137,49 @@ $ go run hellojson.go
Open your browser or any other http client at http://localhost:5700/api/user/42.
+### Merry Christmas!
+
+
+
+
+
+ This project started ~9 months ago
+ and rapidly won your trust,
+ I'm very thankful for this and
+ I promise you that I'll continue to
+ do my bests.
+
+ All people, poor or rich, should give
+ and share with each others.
+
+ As a person who knows
+ how someone feels when opens
+ the fridge and finds nothing to eat, again,
+ I decided that all the money you
+ donated so far[424 EUR],
+ and until the end of this month,
+ should go back to the people
+ who need them most.
+ Is not enough but...
+
+
+
+
+
+
+ CHRISTMAS IS MOST TRULY
+ CHRISTMAS WHEN WE
+ CELEBRATE IT BY GIVING THE
+ LIGHT OF LOVE TO THOSE
+ WHO NEED IT MOST.
+
+ ~ Ruth Carter Stapleton
+
+
+
+
+
+
### New
```go
diff --git a/http_test.go b/http_test.go
index 3b914f1f..3999b6ee 100644
--- a/http_test.go
+++ b/http_test.go
@@ -152,12 +152,6 @@ func getRandomNumber(min int, max int) int {
return rand.Intn(max-min) + min
}
-func getRandomPort() int {
- min := 6666
- max := 7777
- return getRandomNumber(min, max)
-}
-
// works as
// defer listenTLS(iris.Default, hostTLS)()
func listenTLS(api *iris.Framework, hostTLS string) func() {
@@ -201,13 +195,13 @@ func TestMultiRunningServers_v1_PROXY(t *testing.T) {
iris.ResetDefault()
host := "localhost" // you have to add it to your hosts file( for windows, as 127.0.0.1 mydomain.com)
- hostTLS := host + ":" + strconv.Itoa(getRandomPort())
+ hostTLS := host + ":" + strconv.Itoa(getRandomNumber(8886, 8889))
iris.Get("/", func(ctx *iris.Context) {
ctx.Write("Hello from %s", hostTLS)
})
- proxyHost := host + ":" + strconv.Itoa(getRandomNumber(3333, 4444))
+ proxyHost := host + ":" + strconv.Itoa(getRandomNumber(3300, 3332))
closeProxy := iris.Proxy(proxyHost, "https://"+hostTLS)
defer closeProxy()
@@ -225,7 +219,7 @@ func TestMultiRunningServers_v2(t *testing.T) {
iris.ResetDefault()
domain := "localhost"
- hostTLS := domain + ":" + strconv.Itoa(getRandomPort())
+ hostTLS := domain + ":" + strconv.Itoa(getRandomNumber(3333, 4444))
srv1Host := domain + ":" + strconv.Itoa(getRandomNumber(4446, 5444))
srv2Host := domain + ":" + strconv.Itoa(getRandomNumber(7778, 8887))
@@ -233,11 +227,6 @@ func TestMultiRunningServers_v2(t *testing.T) {
ctx.Write("Hello from %s", hostTLS)
})
- // add a secondary server
- //Servers.Add(ServerConfiguration{ListeningAddr: domain + ":80", RedirectTo: "https://" + host, Virtual: true})
- // add our primary/main server
- //Servers.Add(ServerConfiguration{ListeningAddr: host, CertFile: certFile.Name(), KeyFile: keyFile.Name(), Virtual: true})
-
// using the proxy handler
fsrv1 := &fasthttp.Server{Handler: iris.ProxyHandler(srv1Host, "https://"+hostTLS)}
go fsrv1.ListenAndServe(srv1Host)
@@ -394,7 +383,7 @@ func TestMuxSimpleParty(t *testing.T) {
p.Get("/namedpath/:param1/something/:param2/else", h)
}
- iris.Default.Config.VHost = "0.0.0.0:" + strconv.Itoa(getRandomPort())
+ iris.Default.Config.VHost = "0.0.0.0:" + strconv.Itoa(getRandomNumber(2222, 2399))
// iris.Default.Config.Tester.Debug = true
// iris.Default.Config.Tester.ExplicitURL = true
e := httptest.New(iris.Default, t)