mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 18:51:03 +01:00
This commit is contained in:
parent
1f25e4335a
commit
fe79fdea44
11
context.go
11
context.go
|
@ -97,7 +97,7 @@ type (
|
||||||
Middleware Middleware // exported because is useful for debugging
|
Middleware Middleware // exported because is useful for debugging
|
||||||
session sessions.Session
|
session sessions.Session
|
||||||
// Pos is the position number of the Context, look .Next to understand
|
// Pos is the position number of the Context, look .Next to understand
|
||||||
Pos uint8 // exported because is useful for debugging
|
Pos int // exported because is useful for debugging
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ func (ctx *Context) Do() {
|
||||||
func (ctx *Context) Next() {
|
func (ctx *Context) Next() {
|
||||||
//set position to the next
|
//set position to the next
|
||||||
ctx.Pos++
|
ctx.Pos++
|
||||||
midLen := uint8(len(ctx.Middleware))
|
midLen := len(ctx.Middleware)
|
||||||
//run the next
|
//run the next
|
||||||
if ctx.Pos < midLen {
|
if ctx.Pos < midLen {
|
||||||
ctx.Middleware[ctx.Pos].Serve(ctx)
|
ctx.Middleware[ctx.Pos].Serve(ctx)
|
||||||
|
@ -1365,6 +1365,13 @@ func (ctx *Context) BeginTransaction(pipe func(scope *TransactionScope)) {
|
||||||
// and replaces the context's response with an error.
|
// and replaces the context's response with an error.
|
||||||
// if the transaction completed successfully then we need to pass the temp's context's response to this context.
|
// if the transaction completed successfully then we need to pass the temp's context's response to this context.
|
||||||
// so we must copy back its context at all cases, no matter the result of the transaction.
|
// so we must copy back its context at all cases, no matter the result of the transaction.
|
||||||
|
|
||||||
|
// TODO: GREEK, THESE COMMENTS WILL BE REMOVED AFTER I FIX A RECENT BUG REPORTED BY COMMUNITY
|
||||||
|
// auto to xreiazomaste gia na pianei ta errors kiolas, ara prepei na vrw allous tropous
|
||||||
|
// na manteuw an 9elei o xristis na dixnei errors sto transaction h apla na to kanei skip
|
||||||
|
// alla tautoxrona ena failed transaction sto telos na mh kanei reset ta proigoumena, gt twra auto kanei,
|
||||||
|
// kai auto xreiazete omws se arketes periptwseis alla prepei kiolas na diaxwrizw to ka9e transaction na einai aneksartita
|
||||||
|
// pisteuw to Response.Reset dn 9a mas xreiastei ka9olou, prepei na ktlvenw mono pote xreiazete na kanw copy to scope's context kai pote oxi.
|
||||||
*ctx = *scope.Context
|
*ctx = *scope.Context
|
||||||
|
|
||||||
// if the scope had lifetime of the whole request and it completed with an error(failure)
|
// if the scope had lifetime of the whole request and it completed with an error(failure)
|
||||||
|
|
|
@ -5,15 +5,16 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/gavv/httpexpect"
|
|
||||||
"github.com/kataras/iris"
|
|
||||||
"github.com/kataras/iris/httptest"
|
|
||||||
"github.com/valyala/fasthttp"
|
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/gavv/httpexpect"
|
||||||
|
"github.com/kataras/iris"
|
||||||
|
"github.com/kataras/iris/httptest"
|
||||||
|
"github.com/valyala/fasthttp"
|
||||||
)
|
)
|
||||||
|
|
||||||
// White-box testing *
|
// White-box testing *
|
||||||
|
@ -849,6 +850,14 @@ func TestTransactions(t *testing.T) {
|
||||||
ctx.BeginTransaction(successTransaction)
|
ctx.BeginTransaction(successTransaction)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/*TODO: MAKE THIS TO WORK
|
||||||
|
iris.Get("/failFirsAndThirdTransactionsButSuccessSecond", func(ctx *iris.Context) {
|
||||||
|
ctx.BeginTransaction(maybeFailureTransaction(true, false))
|
||||||
|
ctx.BeginTransaction(successTransaction)
|
||||||
|
ctx.BeginTransaction(maybeFailureTransaction(true, false))
|
||||||
|
})
|
||||||
|
*/
|
||||||
|
|
||||||
iris.Get("/failAllBecauseOfRequestScopeAndFailure", func(ctx *iris.Context) {
|
iris.Get("/failAllBecauseOfRequestScopeAndFailure", func(ctx *iris.Context) {
|
||||||
ctx.BeginTransaction(maybeFailureTransaction(true, true))
|
ctx.BeginTransaction(maybeFailureTransaction(true, true))
|
||||||
ctx.BeginTransaction(successTransaction)
|
ctx.BeginTransaction(successTransaction)
|
||||||
|
@ -869,6 +878,14 @@ func TestTransactions(t *testing.T) {
|
||||||
ContentType("text/html", iris.Config.Charset).
|
ContentType("text/html", iris.Config.Charset).
|
||||||
Body().
|
Body().
|
||||||
Equal(firstTransactionFailureMessage + secondTransactionSuccessHTMLMessage)
|
Equal(firstTransactionFailureMessage + secondTransactionSuccessHTMLMessage)
|
||||||
|
/*
|
||||||
|
e.GET("/failFirsAndThirdTransactionsButSuccessSecond").
|
||||||
|
Expect().
|
||||||
|
Status(iris.StatusOK).
|
||||||
|
ContentType("text/html", iris.Config.Charset).
|
||||||
|
Body().
|
||||||
|
Equal(firstTransactionFailureMessage + secondTransactionSuccessHTMLMessage)
|
||||||
|
*/
|
||||||
|
|
||||||
e.GET("/failAllBecauseOfRequestScopeAndFailure").
|
e.GET("/failAllBecauseOfRequestScopeAndFailure").
|
||||||
Expect().
|
Expect().
|
||||||
|
|
2
http.go
2
http.go
|
@ -948,7 +948,7 @@ func (mux *serveMux) fireError(statusCode int, ctx *Context) {
|
||||||
errHandler := mux.errorHandlers[statusCode]
|
errHandler := mux.errorHandlers[statusCode]
|
||||||
if errHandler == nil {
|
if errHandler == nil {
|
||||||
errHandler = HandlerFunc(func(ctx *Context) {
|
errHandler = HandlerFunc(func(ctx *Context) {
|
||||||
ctx.ResetBody()
|
ctx.Response.Reset()
|
||||||
ctx.SetStatusCode(statusCode)
|
ctx.SetStatusCode(statusCode)
|
||||||
ctx.SetBodyString(statusText[statusCode])
|
ctx.SetBodyString(statusText[statusCode])
|
||||||
})
|
})
|
||||||
|
|
2
iris.go
2
iris.go
|
@ -1772,7 +1772,7 @@ func (api *muxAPI) StaticHandler(systemPath string, stripSlashes int, compress b
|
||||||
if errCode == StatusNotFound || errCode == StatusBadRequest || errCode == StatusInternalServerError {
|
if errCode == StatusNotFound || errCode == StatusBadRequest || errCode == StatusInternalServerError {
|
||||||
api.mux.fireError(errCode, ctx)
|
api.mux.fireError(errCode, ctx)
|
||||||
}
|
}
|
||||||
if ctx.Pos < uint8(len(ctx.Middleware))-1 {
|
if ctx.Pos < len(ctx.Middleware)-1 {
|
||||||
ctx.Next() // for any case
|
ctx.Next() // for any case
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user