diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 891defb1..97b1ffc0 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,16 +1,21 @@ +##### Note that I do not accept pull requests and that I use the issue tracker for bug reports and proposals only. Please ask questions on the [https://kataras.rocket.chat/channel/iris][Chat] or [http://stackoverflow.com/](http://stackoverflow.com). + +Unless otherwise noted, the Iris source files are distributed +under the Apache Version 2 license found in the [LICENSE file](https://github.com/kataras/iris/blob/master/LICENSE). + ## Before Submitting an Issue First, please do a search in open issues to see if the issue or feature request has already been filed. If there is an issue add your comments to this issue. The Iris project is distributed across multiple repositories, try to file the issue against the correct repository, +- [Iris - middleware](https://github.com/iris-contrib/middleware/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue) - [Iris - cli and rizla](https://github.com/kataras/rizla/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue) - [Iris - templates](https://github.com/kataras/go-template/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue) - [Iris - sessions](https://github.com/kataras/go-sessions/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue) - [Iris - websocket](https://github.com/kataras/go-websocket/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue) - [Iris - gitbook](https://github.com/iris-contrib/gitbook/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue) - [Iris - examples](https://github.com/iris-contrib/examples/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue) -- [Iris - middleware](https://github.com/iris-contrib/middleware/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue) - [Iris - plugin](https://github.com/iris-contrib/plugin/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue) - [Iris - graceful](https://github.com/iris-contrib/graceful/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue) - [Iris - mail](https://github.com/iris-contrib/mail/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue) @@ -32,9 +37,6 @@ The author answers the same day, perhaps the same hour you post the issue. It is impossible to notify each user on every change, so to be aware of the framework's changes and be notify about updates please **star** or **watch** the repository. - - - If your issue is a closed-personal question then please ask that question on [community chat][Chat]. diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 0b18992f..5f39bf52 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,4 +1,4 @@ -- Version : **4.6.0** +- Version : **V4-LTS** - Operating System: diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index e556030b..4c1c36e6 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,8 +1,3 @@ -- [x] I have read the [book](https://www.gitbook.com/book/kataras/iris/details), [examples](https://github.com/iris-contrib/examples), [contributing file](https://github.com/kataras/iris/blob/master/.github/CONTRIBUTING.md) and I'm sure that this worths to be a PR on the Iris repository. +If you are interested in contributing to the Iris project, please see the document [CONTRIBUTING](https://github.com/kataras/iris/blob/master/.github/CONTRIBUTING.md). -- [x] I have opened an issue and discuss this feature/fix with the Community, I got @kataras permission to post this PR. - -- Operating System(s) that this PR was tested: - - -Description and notes: +##### Note that I do not accept pull requests and that I use the issue tracker for bug reports and proposals only. Please ask questions on the [https://kataras.rocket.chat/channel/iris][Chat] or [http://stackoverflow.com/](http://stackoverflow.com). diff --git a/DONATIONS.md b/DONATIONS.md index 0fc2d171..5487a519 100644 --- a/DONATIONS.md +++ b/DONATIONS.md @@ -14,7 +14,7 @@ Feel free to send **any** amount through paypal Benefits: -- Your github username,after your approval, is visible here . I respect your privacy at any case. +- Your github username, after your approval, is visible on the top of the README page and here. - Access to the 'donors' [private chat room](https://kataras.rocket.chat/group/donors), real-time assistance by me. - Each donate gives lifetime to the Iris web framework. The author works full-time on this project, no time for any part-time job. @@ -25,7 +25,7 @@ Benefits: I'm grateful for all the generous donations. Iris is fully funded by these donations. -#### Donors +#### Donations - [Ryan Brooks](https://github.com/ryanbyyc) donated 50 EUR at May 11 - [Juan Sebastián Suárez Valencia](https://github.com/Juanses) donated 20 EUR at September 11 @@ -33,13 +33,15 @@ I'm grateful for all the generous donations. Iris is fully funded by these dona - [Celso Luiz](https://github.com/celsosz) donated 50 EUR at September 29 - ANONYMOUS(Waiting For Approval) donated 6 EUR at October 1 - [Ankur Srivastava](https://github.com/ansrivas) donated 20 EUR at October 2 +- ANONYMOUS(Waiting For Approval) donated 100 EUR at October 18 +- ANONYMOUS(Waiting For Approval) donated 20 EUR at October 19 -> The name or/and github username link added after donator's approvement. +> The name or/and github username link added after donator's approvement via e-mail. #### Report, so far - 13 EUR for the domain, [iris-go.com](https://iris-go.com) -**Available**: VAT(50) + VAT(20) + VAT(20) + VAT(50) + VAT(6) + VAT(20) - 13 = 47,45 + 18,97 + 18,61 + 47,05 + 5,34 + 18,97 - 13 = -143,139 EUR +**Available**: VAT(50) + VAT(20) + VAT(20) + VAT(50) + VAT(6) + VAT(20) + VAT(100) + VAT(20) - 13 = 47,45 + 18,97 + 18,61 + 47,05 + 5,34 + 18,97 + 98,04 +18,97 - 13 = +260,14 EUR diff --git a/README.md b/README.md index 07147a39..f9f61ceb 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@
-Releases +Releases Examples @@ -31,31 +31,21 @@ 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. +Ideally suited for both experienced and novice Developers.

- -## News - -- [Building Web Apps with Iris](http://mycodesmells.com/post/building-web-apps-with-iris) by Paweł Słomka - -- [The fastest web framework for Go](http://marcoscleison.xyz/the-fastest-web-framework-for-go-in-this-earth/) by Marcos Cleison - -- [Testing Iris RESTful API](https://drasko.github.io/2016/09/26/testing-iris-restful-api/) by Drasko Draskovic - -- [Iris vs Nginx vs Php vs Nodejs](https://www.ntossapo.me/2016/08/13/nginx-vs-nginx-php-fpm-vs-go-iris-vs-express-with-wrk/) by Tossapon Nuanchuay - -### Donates -I left my job and university to work explicit on Iris, so I'm grateful for all the generous donations[*](DONATIONS.md) +**Thanks** to all these generous donations, the Iris project remains a high quality open-source framework - [Ryan Brooks](https://github.com/ryanbyyc) donated 50 EUR at May 11 - [Juan Sebastián Suárez Valencia](https://github.com/Juanses) donated 20 EUR at September 11 - [Bob Lee](https://github.com/li3p) donated 20 EUR at September 16 - [Celso Luiz](https://github.com/celsosz) donated 50 EUR at September 29 +- [Anonymous](https://github.com/kataras/iris/blob/master/DONATIONS.md#donations) donated 6 EUR at October 1 - [Ankur Srivastava](https://github.com/ansrivas) donated 20 EUR at October 2 - +- [Anonymous](https://github.com/kataras/iris/blob/master/DONATIONS.md#donations) donated 100 EUR at October 18 +- [Anonymous](https://github.com/kataras/iris/blob/master/DONATIONS.md#donations) donated 20 EUR at October 19 ## Feature Overview @@ -878,43 +868,50 @@ I recommend writing your API tests using this new library, [httpexpect](https:// Versioning ------------ -Current: **v4.6.1** +Current: **V4 LTS** -> Iris is an active project +A new LTS version is released every 6 months -Read more about Semantic Versioning 2.0.0 +> LTS stands for Long Term Support - - http://semver.org/ - - https://en.wikipedia.org/wiki/Software_versioning - - https://wiki.debian.org/UpstreamGuide#Releases_and_Versions -Todo +Todo for the next release ------------ +- [ ] Server-side React render, as requested [here](https://github.com/kataras/iris/issues/503) + + Iris is a **Community-Driven** Project, waiting for your suggestions and [feature requests](https://github.com/kataras/iris/issues?utf8=%E2%9C%93&q=label%3A%22feature%20request%22)! People ------------ -The big thanks goes to [all people](https://github.com/kataras/iris/issues?utf8=%E2%9C%93&q=label%3A%22feature+request%22) who help building this framework with feature-requests & bug reports! -The author of Iris is [@kataras](https://github.com/kataras). If **you**'re willing to donate, feel **free** to navigate to the [DONATIONS PAGE](https://github.com/kataras/iris/blob/master/DONATIONS.md). +The author of Iris is [@kataras](https://github.com/kataras). + +If **you**'re willing to donate and you can afford the cost, feel **free** to navigate to the [DONATIONS PAGE](https://github.com/kataras/iris/blob/master/DONATIONS.md). Contributing ------------ + +Iris is the work of hundreds of the community's [feature requests](https://github.com/kataras/iris/issues?utf8=%E2%9C%93&q=%20label%3A%22feature%20request%22%20) and [reports](https://github.com/kataras/iris/issues?utf8=%E2%9C%93&q=label%3Abug). I appreciate your help! + If you are interested in contributing to the Iris project, please see the document [CONTRIBUTING](https://github.com/kataras/iris/blob/master/.github/CONTRIBUTING.md). +##### Note that I do not accept pull requests and that I use the issue tracker for bug reports and proposals only. Please ask questions on the [https://kataras.rocket.chat/channel/iris][Chat] or [http://stackoverflow.com/](http://stackoverflow.com). + License ------------ -This project is licensed under the [Apache License, Version 2.0](LICENSE), Copyright (c) 2016 Gerasimos Maropoulos. +Unless otherwise noted, the Iris source files are distributed +under the Apache Version 2 license found in the [LICENSE file](LICENSE). [Travis Widget]: https://img.shields.io/travis/kataras/iris.svg?style=flat-square [Travis]: http://travis-ci.org/kataras/iris [License Widget]: https://img.shields.io/badge/license-Apache%20Version%202-E91E63.svg?style=flat-square [License]: https://github.com/kataras/iris/blob/master/LICENSE -[Release Widget]: https://img.shields.io/badge/release-4.6.1%20-blue.svg?style=flat-square +[Release Widget]: https://img.shields.io/badge/release-V4%20LTS%20-blue.svg?style=flat-square [Release]: https://github.com/kataras/iris/releases [Chat Widget]: https://img.shields.io/badge/community-chat%20-00BCD4.svg?style=flat-square [Chat]: https://kataras.rocket.chat/channel/iris diff --git a/http.go b/http.go index 5422b8a6..af06b5ce 100644 --- a/http.go +++ b/http.go @@ -3,6 +3,10 @@ package iris import ( "bytes" "crypto/tls" + "github.com/iris-contrib/letsencrypt" + "github.com/kataras/go-errors" + "github.com/valyala/fasthttp" + "github.com/valyala/fasthttp/fasthttpadaptor" "log" "net" "net/http" @@ -12,11 +16,6 @@ import ( "strings" "sync" "time" - - "github.com/iris-contrib/letsencrypt" - "github.com/kataras/go-errors" - "github.com/valyala/fasthttp" - "github.com/valyala/fasthttp/fasthttpadaptor" ) const ( @@ -65,7 +64,6 @@ var ( // MethodTraceBytes "TRACE" MethodTraceBytes = []byte(MethodTrace) /* */ - ) const ( @@ -73,7 +71,6 @@ const ( StatusContinue = 100 // StatusSwitchingProtocols http status '101' StatusSwitchingProtocols = 101 - // StatusOK http status '200' StatusOK = 200 // StatusCreated http status '201' @@ -88,7 +85,6 @@ const ( StatusResetContent = 205 // StatusPartialContent http status '206' StatusPartialContent = 206 - // StatusMultipleChoices http status '300' StatusMultipleChoices = 300 // StatusMovedPermanently http status '301' @@ -103,7 +99,6 @@ const ( StatusUseProxy = 305 // StatusTemporaryRedirect http status '307' StatusTemporaryRedirect = 307 - // StatusBadRequest http status '400' StatusBadRequest = 400 // StatusUnauthorized http status '401' @@ -150,7 +145,6 @@ const ( StatusRequestHeaderFieldsTooLarge = 431 // StatusUnavailableForLegalReasons http status '451' StatusUnavailableForLegalReasons = 451 - // StatusInternalServerError http status '500' StatusInternalServerError = 500 // StatusNotImplemented http status '501' @@ -168,49 +162,45 @@ const ( ) var statusText = map[int]string{ - StatusContinue: "Continue", - StatusSwitchingProtocols: "Switching Protocols", - - StatusOK: "OK", - StatusCreated: "Created", - StatusAccepted: "Accepted", - StatusNonAuthoritativeInfo: "Non-Authoritative Information", - StatusNoContent: "No Content", - StatusResetContent: "Reset Content", - StatusPartialContent: "Partial Content", - - StatusMultipleChoices: "Multiple Choices", - StatusMovedPermanently: "Moved Permanently", - StatusFound: "Found", - StatusSeeOther: "See Other", - StatusNotModified: "Not Modified", - StatusUseProxy: "Use Proxy", - StatusTemporaryRedirect: "Temporary Redirect", - - StatusBadRequest: "Bad Request", - StatusUnauthorized: "Unauthorized", - StatusPaymentRequired: "Payment Required", - StatusForbidden: "Forbidden", - StatusNotFound: "Not Found", - StatusMethodNotAllowed: "Method Not Allowed", - StatusNotAcceptable: "Not Acceptable", - StatusProxyAuthRequired: "Proxy Authentication Required", - StatusRequestTimeout: "Request Timeout", - StatusConflict: "Conflict", - StatusGone: "Gone", - StatusLengthRequired: "Length Required", - StatusPreconditionFailed: "Precondition Failed", - StatusRequestEntityTooLarge: "Request Entity Too Large", - StatusRequestURITooLong: "Request URI Too Long", - StatusUnsupportedMediaType: "Unsupported Media Type", - StatusRequestedRangeNotSatisfiable: "Requested Range Not Satisfiable", - StatusExpectationFailed: "Expectation Failed", - StatusTeapot: "I'm a teapot", - StatusPreconditionRequired: "Precondition Required", - StatusTooManyRequests: "Too Many Requests", - StatusRequestHeaderFieldsTooLarge: "Request Header Fields Too Large", - StatusUnavailableForLegalReasons: "Unavailable For Legal Reasons", - + StatusContinue: "Continue", + StatusSwitchingProtocols: "Switching Protocols", + StatusOK: "OK", + StatusCreated: "Created", + StatusAccepted: "Accepted", + StatusNonAuthoritativeInfo: "Non-Authoritative Information", + StatusNoContent: "No Content", + StatusResetContent: "Reset Content", + StatusPartialContent: "Partial Content", + StatusMultipleChoices: "Multiple Choices", + StatusMovedPermanently: "Moved Permanently", + StatusFound: "Found", + StatusSeeOther: "See Other", + StatusNotModified: "Not Modified", + StatusUseProxy: "Use Proxy", + StatusTemporaryRedirect: "Temporary Redirect", + StatusBadRequest: "Bad Request", + StatusUnauthorized: "Unauthorized", + StatusPaymentRequired: "Payment Required", + StatusForbidden: "Forbidden", + StatusNotFound: "Not Found", + StatusMethodNotAllowed: "Method Not Allowed", + StatusNotAcceptable: "Not Acceptable", + StatusProxyAuthRequired: "Proxy Authentication Required", + StatusRequestTimeout: "Request Timeout", + StatusConflict: "Conflict", + StatusGone: "Gone", + StatusLengthRequired: "Length Required", + StatusPreconditionFailed: "Precondition Failed", + StatusRequestEntityTooLarge: "Request Entity Too Large", + StatusRequestURITooLong: "Request URI Too Long", + StatusUnsupportedMediaType: "Unsupported Media Type", + StatusRequestedRangeNotSatisfiable: "Requested Range Not Satisfiable", + StatusExpectationFailed: "Expectation Failed", + StatusTeapot: "I'm a teapot", + StatusPreconditionRequired: "Precondition Required", + StatusTooManyRequests: "Too Many Requests", + StatusRequestHeaderFieldsTooLarge: "Request Header Fields Too Large", + StatusUnavailableForLegalReasons: "Unavailable For Legal Reasons", StatusInternalServerError: "Internal Server Error", StatusNotImplemented: "Not Implemented", StatusBadGateway: "Bad Gateway", diff --git a/iris.go b/iris.go index d58e6d02..8de536c9 100644 --- a/iris.go +++ b/iris.go @@ -75,8 +75,10 @@ import ( ) const ( - // Version is the current version of the Iris web framework - Version = "4.6.1" + // IsLongTermSupport flag is true when the below version number is a long-term-support version + IsLongTermSupport = true + // Version is the current version number of the Iris web framework + Version = "4" banner = ` _____ _ |_ _| (_)