diff --git a/go.work.sum b/go.work.sum index 9702b33a6eb61b1c7e0cba35c89c84f5dd24b10e..89801b24256d0534b65b837a05012d7df1ef9725 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,7 +1,15 @@ -github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= -github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= -github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= +cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= +cloud.google.com/go/compute/metadata v0.2.0 h1:nBbNSZyDpkNlo3DepaaLKVuO7ClyifSAmNloSCZrHnQ= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/oauth2 v0.9.0 h1:BPpt2kU7oMRq3kCHAA1tbSEshXRw1LpG2ztgDwrzuAs= +golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= diff --git a/src/highlanderticketing/api/match.go b/src/highlanderticketing/api/match.go new file mode 100644 index 0000000000000000000000000000000000000000..5cf00c66fc9070abd657ec60e110809b9b70dd3f --- /dev/null +++ b/src/highlanderticketing/api/match.go @@ -0,0 +1,63 @@ +package api + +import ( + "encoding/json" + "fmt" + "io" + "net/http" + + "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/model" + "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/service" +) + +func GetMatchesOfApiToDb(apiUrl string) { + data := getData(apiUrl) + formatJsonCreateMatch(data) +} + +func getData(apiUrl string) []byte { + request, error := http.NewRequest("GET", apiUrl, nil) + + if error != nil { + fmt.Println(error) + } + client := &http.Client{} + response, error := client.Do(request) + + if error != nil { + fmt.Println(error) + } + + responseBody, error := io.ReadAll(response.Body) + + if error != nil { + fmt.Println(error) + } + defer response.Body.Close() + + return responseBody +} + +func formatJsonCreateMatch(jsonArray []byte) { + var match model.Match + var results []map[string]interface{} + + json.Unmarshal([]byte(jsonArray), &results) + + for _, result := range results { + match.Date = result["matchDateTime"].(string) + if team1, ok := result["team1"].(map[string]interface{}); ok { + if name, ok := team1["teamName"].(string); ok { + match.Location = name + } + } + if team2, ok := result["team2"].(map[string]interface{}); ok { + if name, ok := team2["teamName"].(string); ok { + if name == "VfB Stuttgart" { + match.AwayMatch = true + } + } + } + service.CreateMatch(&match) + } +} diff --git a/src/highlanderticketing/config/oauthconf.go b/src/highlanderticketing/config/oauthconf.go new file mode 100644 index 0000000000000000000000000000000000000000..65bce4c567c17425589f044270b18aaa3ada1f21 --- /dev/null +++ b/src/highlanderticketing/config/oauthconf.go @@ -0,0 +1,19 @@ +package config + +import ( + "golang.org/x/oauth2" + "golang.org/x/oauth2/google" +) + +func GetOAuthConfig() *oauth2.Config { + return &oauth2.Config{ + ClientID: "20993146996-uvmr7479e3qmhiu9gasko3lr163ll76j.apps.googleusercontent.com", + ClientSecret: "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", + RedirectURL: "http://localhost:8000/callback", + Scopes: []string{ + "https://www.googleapis.com/auth/userinfo.email", + "https://www.googleapis.com/auth/userinfo.profile", + }, + Endpoint: google.Endpoint, + } +} diff --git a/src/highlanderticketing/go.mod b/src/highlanderticketing/go.mod index 3216487108a5ea74f71ec43f8c0a0861d5507633..d37dd2056f1cd4ed49d01d4a6cc51fb9e1d7dd39 100644 --- a/src/highlanderticketing/go.mod +++ b/src/highlanderticketing/go.mod @@ -2,9 +2,14 @@ module gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/hi go 1.20 -require google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc +require ( + golang.org/x/oauth2 v0.9.0 + google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc +) require ( + cloud.google.com/go/compute/metadata v0.2.0 // indirect + github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.1 // indirect github.com/klauspost/compress v1.13.6 // indirect github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect @@ -13,10 +18,12 @@ require ( github.com/xdg-go/scram v1.1.1 // indirect github.com/xdg-go/stringprep v1.0.3 // indirect github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect - golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect + golang.org/x/crypto v0.10.0 // indirect + golang.org/x/net v0.11.0 // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.6.0 // indirect - golang.org/x/text v0.8.0 // indirect + golang.org/x/sys v0.9.0 // indirect + golang.org/x/text v0.10.0 // indirect + google.golang.org/appengine v1.6.7 // indirect ) require ( diff --git a/src/highlanderticketing/go.sum b/src/highlanderticketing/go.sum index bf136fbb8d8883fac5b08a683a55ccbcec56316b..4db6e249a882c9d105220fd75d155ba27d4b5294 100644 --- a/src/highlanderticketing/go.sum +++ b/src/highlanderticketing/go.sum @@ -1,12 +1,17 @@ +cloud.google.com/go/compute/metadata v0.2.0 h1:nBbNSZyDpkNlo3DepaaLKVuO7ClyifSAmNloSCZrHnQ= +cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= @@ -40,28 +45,40 @@ github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= go.mongodb.org/mongo-driver v1.11.7 h1:LIwYxASDLGUg/8wOhgOOZhX8tQa/9tgZPgzZoVqJvcs= go.mongodb.org/mongo-driver v1.11.7/go.mod h1:G9TgswdsWjX4tmDA5zfs2+6AEPpYJwqblyjsfuh8oXY= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/oauth2 v0.9.0 h1:BPpt2kU7oMRq3kCHAA1tbSEshXRw1LpG2ztgDwrzuAs= +golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdLy/60bS+52xfymkE72wv1asokgtao= google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/src/highlanderticketing/handler/oauth.go b/src/highlanderticketing/handler/oauth.go new file mode 100644 index 0000000000000000000000000000000000000000..f8d740bb126b5d03b35fa0b340c9f311b84bc26f --- /dev/null +++ b/src/highlanderticketing/handler/oauth.go @@ -0,0 +1,60 @@ +package handler + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + + log "github.com/sirupsen/logrus" + "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/config" + + "golang.org/x/oauth2" +) + +func HandleLogin(w http.ResponseWriter, r *http.Request) { + oauthConfig := config.GetOAuthConfig() + url := oauthConfig.AuthCodeURL("state", oauth2.AccessTypeOffline) + http.Redirect(w, r, url, http.StatusTemporaryRedirect) +} + +func HandleCallback(w http.ResponseWriter, r *http.Request) { + oauthConfig := config.GetOAuthConfig() + code := r.URL.Query().Get("code") + token, err := oauthConfig.Exchange(context.Background(), code) + if err != nil { + log.Println("Fehler beim Austausch des Autorisierungscodes:", err) + http.Error(w, "Fehler beim Authentifizieren", http.StatusInternalServerError) + return + } + + // Verwende das Token, um auf die Google API zuzugreifen oder speichere es für spätere Verwendung + // token.AccessToken enthält den Zugriffstoken + // token.RefreshToken enthält den Aktualisierungstoken + fmt.Fprintf(w, "Token %s", token.AccessToken) + fmt.Fprintf(w, "Token %s", token.RefreshToken) + + // Beispiel: Drucke den Namen des authentifizierten Benutzers + client := oauthConfig.Client(context.Background(), token) + response, err := client.Get("https://www.googleapis.com/oauth2/v2/userinfo") + if err != nil { + log.Println("Fehler beim Abrufen der Benutzerinfo:", err) + http.Error(w, "Fehler beim Abrufen der Benutzerinfo", http.StatusInternalServerError) + return + } + defer response.Body.Close() + + // Lese die Benutzerinfo als JSON-Daten + var userinfo struct { + Email string `json:"email"` + } + err = json.NewDecoder(response.Body).Decode(&userinfo) + if err != nil { + log.Println("Fehler beim Lesen der Benutzerinfo:", err) + http.Error(w, "Fehler beim Lesen der Benutzerinfo", http.StatusInternalServerError) + return + } + + // Hier kannst du die E-Mail-Adresse des Benutzers verwenden + fmt.Fprintf(w, "E-Mail-Adresse: %s", userinfo.Email) +} diff --git a/src/highlanderticketing/main.go b/src/highlanderticketing/main.go index 28d7649bfff0eee799f7234d4be67a75674a4168..dca41105cda021688378fa4a25ef3a32624a4b00 100644 --- a/src/highlanderticketing/main.go +++ b/src/highlanderticketing/main.go @@ -12,7 +12,7 @@ import ( func main() { //service.DeleteAllMatches() - //service.GetMatchesOfApiToDb("https://api.openligadb.de/getmatchesbyteamid/16/5/0") + //api.GetMatchesOfApiToDb("https://api.openligadb.de/getmatchesbyteamid/16/5/0") //init db _, err := db.GetMongoClient() if err != nil { @@ -20,6 +20,8 @@ func main() { } log.Println("Starting Highlander Ticketing server") router := mux.NewRouter() + router.HandleFunc("/login", handler.HandleLogin).Methods("GET") + router.HandleFunc("/callback", handler.HandleCallback).Methods("GET") router.HandleFunc("/health", handler.Health).Methods("GET") router.HandleFunc("/match", handler.CreateMatch).Methods("POST") router.HandleFunc("/matches", handler.GetAllMatches).Methods("GET") diff --git a/src/highlanderticketing/service/match.go b/src/highlanderticketing/service/match.go index 3519b32d5cdbfb4e8d17bc7980a3c93e9cec4f29..454e8093b07a84f7484d5824c89b804785adb711 100644 --- a/src/highlanderticketing/service/match.go +++ b/src/highlanderticketing/service/match.go @@ -2,10 +2,7 @@ package service import ( "context" - "encoding/json" "fmt" - "io" - "net/http" "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/db" "gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/model" @@ -169,54 +166,3 @@ func DeleteAllMatches() error { } return nil } -func GetMatchesOfApiToDb(apiUrl string) { - data := getData(apiUrl) - formatJsonCreateMatch(data) -} - -func getData(apiUrl string) []byte { - request, error := http.NewRequest("GET", apiUrl, nil) - - if error != nil { - fmt.Println(error) - } - client := &http.Client{} - response, error := client.Do(request) - - if error != nil { - fmt.Println(error) - } - - responseBody, error := io.ReadAll(response.Body) - - if error != nil { - fmt.Println(error) - } - defer response.Body.Close() - - return responseBody -} - -func formatJsonCreateMatch(jsonArray []byte) { - var match model.Match - var results []map[string]interface{} - - json.Unmarshal([]byte(jsonArray), &results) - - for _, result := range results { - match.Date = result["matchDateTime"].(string) - if team1, ok := result["team1"].(map[string]interface{}); ok { - if name, ok := team1["teamName"].(string); ok { - match.Location = name - } - } - if team2, ok := result["team2"].(map[string]interface{}); ok { - if name, ok := team2["teamName"].(string); ok { - if name == "VfB Stuttgart" { - match.AwayMatch = true - } - } - } - CreateMatch(&match) - } -} diff --git a/todo b/todo new file mode 100644 index 0000000000000000000000000000000000000000..59617ce375a3d71e59927ace65c772cea6f332b1 --- /dev/null +++ b/todo @@ -0,0 +1,10 @@ + - handler , order , travel + - user werden aus google oauth2 erzeugt (Plan) + - services von user travel order + - context definieren + - schauen wann verbindung zu mongodb unterbrechen + - docker von api + - reihenfolge von den docker files (shell von schmollinger verwenden) + - google oauth2 anbinden + - schauen wie thread save machen (evtl. mit abfrage von api) + - api anbinden