Fixed data races
This commit is contained in:
parent
28db818c37
commit
4d919ef752
6
go.mod
6
go.mod
@ -5,12 +5,12 @@ go 1.12
|
|||||||
require (
|
require (
|
||||||
cloud.google.com/go v0.39.0 // indirect
|
cloud.google.com/go v0.39.0 // indirect
|
||||||
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect
|
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect
|
||||||
github.com/aerogo/aero v1.3.2
|
github.com/aerogo/aero v1.3.5
|
||||||
github.com/aerogo/api v0.2.0
|
github.com/aerogo/api v0.2.0
|
||||||
github.com/aerogo/crawler v0.2.5
|
github.com/aerogo/crawler v0.2.5
|
||||||
github.com/aerogo/graphql v0.4.0
|
github.com/aerogo/graphql v0.4.0
|
||||||
github.com/aerogo/http v1.0.6
|
github.com/aerogo/http v1.0.6
|
||||||
github.com/aerogo/layout v0.3.0
|
github.com/aerogo/layout v0.3.1
|
||||||
github.com/aerogo/log v0.2.5
|
github.com/aerogo/log v0.2.5
|
||||||
github.com/aerogo/manifest v0.1.4
|
github.com/aerogo/manifest v0.1.4
|
||||||
github.com/aerogo/markdown v0.1.8
|
github.com/aerogo/markdown v0.1.8
|
||||||
@ -53,6 +53,4 @@ require (
|
|||||||
gopkg.in/yaml.v2 v2.2.2 // indirect
|
gopkg.in/yaml.v2 v2.2.2 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
replace github.com/aerogo/layout => /home/eduard/projects/aerogo/layout
|
|
||||||
|
|
||||||
exclude github.com/logpacker/PayPal-Go-SDK v2.0.0+incompatible
|
exclude github.com/logpacker/PayPal-Go-SDK v2.0.0+incompatible
|
||||||
|
8
go.sum
8
go.sum
@ -11,8 +11,10 @@ github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUW
|
|||||||
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
|
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
|
||||||
github.com/aerogo/aero v1.3.1 h1:P4XS4ePrJWSJwHLXKkX5YjFsoywhWuXf3dPIX5XVAW0=
|
github.com/aerogo/aero v1.3.1 h1:P4XS4ePrJWSJwHLXKkX5YjFsoywhWuXf3dPIX5XVAW0=
|
||||||
github.com/aerogo/aero v1.3.1/go.mod h1:5rPhXo2DNMFQ7XhDsuZ3L7Zr6TH/349+WczUbrOUZvM=
|
github.com/aerogo/aero v1.3.1/go.mod h1:5rPhXo2DNMFQ7XhDsuZ3L7Zr6TH/349+WczUbrOUZvM=
|
||||||
github.com/aerogo/aero v1.3.2 h1:Sj/2U860HLJG5iq5het6QFgo/ERQ7cS4Zdz38xPWSwQ=
|
github.com/aerogo/aero v1.3.3 h1:7pBFEirK/iUpCG4ts6ljL9bu1PXBbybSIZII3VETGSU=
|
||||||
github.com/aerogo/aero v1.3.2/go.mod h1:5rPhXo2DNMFQ7XhDsuZ3L7Zr6TH/349+WczUbrOUZvM=
|
github.com/aerogo/aero v1.3.3/go.mod h1:5rPhXo2DNMFQ7XhDsuZ3L7Zr6TH/349+WczUbrOUZvM=
|
||||||
|
github.com/aerogo/aero v1.3.5 h1:XTf9p+caxq9IYL7G4MOg9aGZBKpPq2RaS/BvaKMIeIE=
|
||||||
|
github.com/aerogo/aero v1.3.5/go.mod h1:5rPhXo2DNMFQ7XhDsuZ3L7Zr6TH/349+WczUbrOUZvM=
|
||||||
github.com/aerogo/api v0.2.0 h1:mIc/y381e+Qc85eSc2cKPdpDDOmT0hlnEeCw2Dcf7no=
|
github.com/aerogo/api v0.2.0 h1:mIc/y381e+Qc85eSc2cKPdpDDOmT0hlnEeCw2Dcf7no=
|
||||||
github.com/aerogo/api v0.2.0/go.mod h1:6objJn5XiKpYpywQUPrFjxZIXD4NVI2LwcBNYCEcS3Y=
|
github.com/aerogo/api v0.2.0/go.mod h1:6objJn5XiKpYpywQUPrFjxZIXD4NVI2LwcBNYCEcS3Y=
|
||||||
github.com/aerogo/cluster v0.1.6 h1:9HYjJwo19uuh9thIc80T3caap9t9b4BXZ1iN8aztjlU=
|
github.com/aerogo/cluster v0.1.6 h1:9HYjJwo19uuh9thIc80T3caap9t9b4BXZ1iN8aztjlU=
|
||||||
@ -33,6 +35,8 @@ github.com/aerogo/http v1.0.3 h1:vf6A+Igme5OHQPaP3a00uPDS0oxsx3puMA23d1NsWDM=
|
|||||||
github.com/aerogo/http v1.0.3/go.mod h1:B1igUmMLpE6KabMpc9reHCJJNUOJ2U/PR9s1fF3TpPQ=
|
github.com/aerogo/http v1.0.3/go.mod h1:B1igUmMLpE6KabMpc9reHCJJNUOJ2U/PR9s1fF3TpPQ=
|
||||||
github.com/aerogo/http v1.0.6 h1:+aswlcWlUxjVcokF8hUjNJmGIEZuhbFbHi8uSadEvtc=
|
github.com/aerogo/http v1.0.6 h1:+aswlcWlUxjVcokF8hUjNJmGIEZuhbFbHi8uSadEvtc=
|
||||||
github.com/aerogo/http v1.0.6/go.mod h1:LwJ7b+LjrHj60FhYQ586K3/O7aNGxkE2dy/exEkQ6rA=
|
github.com/aerogo/http v1.0.6/go.mod h1:LwJ7b+LjrHj60FhYQ586K3/O7aNGxkE2dy/exEkQ6rA=
|
||||||
|
github.com/aerogo/layout v0.3.1 h1:XLXYCU8vgifSZMIpM0m1Qk8UffyKg4KvhF/naHJI3mg=
|
||||||
|
github.com/aerogo/layout v0.3.1/go.mod h1:n+/yJdPnYWaNzBZccNiNn3WiRzoYgXYJPaowqhYftcM=
|
||||||
github.com/aerogo/linter-performance v1.0.3 h1:pYsmUd8jp6CVrFx+YNo9Gfdf222CKG2gCVjp8cljZNY=
|
github.com/aerogo/linter-performance v1.0.3 h1:pYsmUd8jp6CVrFx+YNo9Gfdf222CKG2gCVjp8cljZNY=
|
||||||
github.com/aerogo/linter-performance v1.0.3/go.mod h1:po6XSSbSgR30lazzqSRGV++a2omxYr2qjqFvcvUCH40=
|
github.com/aerogo/linter-performance v1.0.3/go.mod h1:po6XSSbSgR30lazzqSRGV++a2omxYr2qjqFvcvUCH40=
|
||||||
github.com/aerogo/log v0.2.5 h1:LGeElbLqyaD8r8Ls9HuG7tYF6YV4kP56IxJWl/b4cZQ=
|
github.com/aerogo/log v0.2.5 h1:LGeElbLqyaD8r8Ls9HuG7tYF6YV4kP56IxJWl/b4cZQ=
|
||||||
|
23
main_test.go
23
main_test.go
@ -15,6 +15,7 @@ import (
|
|||||||
func TestRoutes(t *testing.T) {
|
func TestRoutes(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
app := configure(aero.New())
|
app := configure(aero.New())
|
||||||
|
app.BindMiddleware()
|
||||||
|
|
||||||
// Iterate through every route
|
// Iterate through every route
|
||||||
for _, examples := range routetests.All() {
|
for _, examples := range routetests.All() {
|
||||||
@ -28,6 +29,7 @@ func TestRoutes(t *testing.T) {
|
|||||||
func TestAnimePages(t *testing.T) {
|
func TestAnimePages(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
app := configure(aero.New())
|
app := configure(aero.New())
|
||||||
|
app.BindMiddleware()
|
||||||
|
|
||||||
for anime := range arn.StreamAnime() {
|
for anime := range arn.StreamAnime() {
|
||||||
testRoute(t, app, anime.Link())
|
testRoute(t, app, anime.Link())
|
||||||
@ -37,6 +39,7 @@ func TestAnimePages(t *testing.T) {
|
|||||||
func TestSoundTrackPages(t *testing.T) {
|
func TestSoundTrackPages(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
app := configure(aero.New())
|
app := configure(aero.New())
|
||||||
|
app.BindMiddleware()
|
||||||
|
|
||||||
for soundtrack := range arn.StreamSoundTracks() {
|
for soundtrack := range arn.StreamSoundTracks() {
|
||||||
testRoute(t, app, soundtrack.Link())
|
testRoute(t, app, soundtrack.Link())
|
||||||
@ -47,6 +50,7 @@ func TestSoundTrackPages(t *testing.T) {
|
|||||||
func TestAMVPages(t *testing.T) {
|
func TestAMVPages(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
app := configure(aero.New())
|
app := configure(aero.New())
|
||||||
|
app.BindMiddleware()
|
||||||
|
|
||||||
for amv := range arn.StreamAMVs() {
|
for amv := range arn.StreamAMVs() {
|
||||||
testRoute(t, app, amv.Link())
|
testRoute(t, app, amv.Link())
|
||||||
@ -57,6 +61,7 @@ func TestAMVPages(t *testing.T) {
|
|||||||
func TestCompanyPages(t *testing.T) {
|
func TestCompanyPages(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
app := configure(aero.New())
|
app := configure(aero.New())
|
||||||
|
app.BindMiddleware()
|
||||||
|
|
||||||
for company := range arn.StreamCompanies() {
|
for company := range arn.StreamCompanies() {
|
||||||
testRoute(t, app, company.Link())
|
testRoute(t, app, company.Link())
|
||||||
@ -66,6 +71,7 @@ func TestCompanyPages(t *testing.T) {
|
|||||||
func TestThreadPages(t *testing.T) {
|
func TestThreadPages(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
app := configure(aero.New())
|
app := configure(aero.New())
|
||||||
|
app.BindMiddleware()
|
||||||
|
|
||||||
for thread := range arn.StreamThreads() {
|
for thread := range arn.StreamThreads() {
|
||||||
testRoute(t, app, thread.Link())
|
testRoute(t, app, thread.Link())
|
||||||
@ -76,6 +82,7 @@ func TestThreadPages(t *testing.T) {
|
|||||||
func TestPostPages(t *testing.T) {
|
func TestPostPages(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
app := configure(aero.New())
|
app := configure(aero.New())
|
||||||
|
app.BindMiddleware()
|
||||||
|
|
||||||
for post := range arn.StreamPosts() {
|
for post := range arn.StreamPosts() {
|
||||||
testRoute(t, app, post.Link())
|
testRoute(t, app, post.Link())
|
||||||
@ -86,6 +93,7 @@ func TestPostPages(t *testing.T) {
|
|||||||
func TestQuotePages(t *testing.T) {
|
func TestQuotePages(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
app := configure(aero.New())
|
app := configure(aero.New())
|
||||||
|
app.BindMiddleware()
|
||||||
|
|
||||||
for quote := range arn.StreamQuotes() {
|
for quote := range arn.StreamQuotes() {
|
||||||
testRoute(t, app, quote.Link())
|
testRoute(t, app, quote.Link())
|
||||||
@ -103,17 +111,10 @@ func TestQuotePages(t *testing.T) {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
func testRoute(t *testing.T, app *aero.Application, route string) {
|
func testRoute(t *testing.T, app *aero.Application, route string) {
|
||||||
// Create a new HTTP request
|
request := httptest.NewRequest("GET", route, nil)
|
||||||
request, err := http.NewRequest("GET", route, nil)
|
response := httptest.NewRecorder()
|
||||||
|
app.ServeHTTP(response, request)
|
||||||
if err != nil {
|
status := response.Code
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Record the response
|
|
||||||
responseRecorder := httptest.NewRecorder()
|
|
||||||
app.ServeHTTP(responseRecorder, request)
|
|
||||||
status := responseRecorder.Code
|
|
||||||
|
|
||||||
switch status {
|
switch status {
|
||||||
case 200, 302:
|
case 200, 302:
|
||||||
|
@ -38,7 +38,7 @@ func Log(next aero.Handler) aero.Handler {
|
|||||||
err := next(ctx)
|
err := next(ctx)
|
||||||
responseTime := time.Since(start)
|
responseTime := time.Since(start)
|
||||||
|
|
||||||
go logRequest(ctx, responseTime)
|
logRequest(ctx, responseTime)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,11 +14,11 @@ type OpenGraphContext struct {
|
|||||||
// OpenGraph middleware modifies the context to be an OpenGraphContext.
|
// OpenGraph middleware modifies the context to be an OpenGraphContext.
|
||||||
func OpenGraph(next aero.Handler) aero.Handler {
|
func OpenGraph(next aero.Handler) aero.Handler {
|
||||||
return func(ctx aero.Context) error {
|
return func(ctx aero.Context) error {
|
||||||
ctx = &OpenGraphContext{
|
openGraphCtx := &OpenGraphContext{
|
||||||
Context: ctx,
|
Context: ctx,
|
||||||
OpenGraph: nil,
|
OpenGraph: nil,
|
||||||
}
|
}
|
||||||
|
|
||||||
return next(ctx)
|
return next(openGraphCtx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,9 +32,7 @@ func UserInfo(next aero.Handler) aero.Handler {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// This works asynchronously so it doesn't block the response
|
updateUserInfo(ctx, user)
|
||||||
go updateUserInfo(ctx, user)
|
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,12 +57,12 @@ func updateUserInfo(ctx aero.Context, user *arn.User) {
|
|||||||
user.OS.Version = os.Version
|
user.OS.Version = os.Version
|
||||||
}
|
}
|
||||||
|
|
||||||
if user.IP != newIP {
|
|
||||||
updateUserLocation(user, newIP)
|
|
||||||
}
|
|
||||||
|
|
||||||
user.LastSeen = arn.DateTimeUTC()
|
user.LastSeen = arn.DateTimeUTC()
|
||||||
user.Save()
|
user.Save()
|
||||||
|
|
||||||
|
if user.IP != newIP {
|
||||||
|
go updateUserLocation(user, newIP)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Updates the location of the user.
|
// Updates the location of the user.
|
||||||
@ -100,7 +98,10 @@ func updateUserLocation(user *arn.User, newIP string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if newLocation.CountryName != "-" {
|
if newLocation.CountryName == "" || newLocation.CountryName == "-" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
user.Location.CountryName = newLocation.CountryName
|
user.Location.CountryName = newLocation.CountryName
|
||||||
user.Location.CountryCode = newLocation.CountryCode
|
user.Location.CountryCode = newLocation.CountryCode
|
||||||
user.Location.Latitude, _ = strconv.ParseFloat(newLocation.Latitude, 64)
|
user.Location.Latitude, _ = strconv.ParseFloat(newLocation.Latitude, 64)
|
||||||
@ -114,5 +115,6 @@ func updateUserLocation(user *arn.User, newIP string) {
|
|||||||
if user.Location.CountryName == "Korea, Republic of" {
|
if user.Location.CountryName == "Korea, Republic of" {
|
||||||
user.Location.CountryName = "South Korea"
|
user.Location.CountryName = "South Korea"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
user.Save()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user