mirror of
https://github.com/SourceFellows/gobuch.git
synced 2025-08-02 21:02:15 +02:00
initial import
This commit is contained in:
7
microservices/container/Dockerfile
Normal file
7
microservices/container/Dockerfile
Normal file
@ -0,0 +1,7 @@
|
||||
FROM golang:latest
|
||||
|
||||
COPY main.go /app/main.go
|
||||
WORKDIR /app
|
||||
RUN go build main.go
|
||||
|
||||
CMD [ "/app/main"]
|
6
microservices/container/README.md
Normal file
6
microservices/container/README.md
Normal file
@ -0,0 +1,6 @@
|
||||
# Ausführen
|
||||
|
||||
```
|
||||
docker build -t microservice-buch .
|
||||
docker run microservice-buch
|
||||
```
|
7
microservices/container/main.go
Normal file
7
microservices/container/main.go
Normal file
@ -0,0 +1,7 @@
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
fmt.Println("Hello World!")
|
||||
}
|
28
microservices/default-mux-demo/main.go
Normal file
28
microservices/default-mux-demo/main.go
Normal file
@ -0,0 +1,28 @@
|
||||
package main
|
||||
|
||||
import "net/http"
|
||||
|
||||
type myHandler struct {
|
||||
Name string
|
||||
}
|
||||
|
||||
func (h *myHandler) ServeHTTP(r http.ResponseWriter, _ *http.Request) {
|
||||
r.Write([]byte(h.Name))
|
||||
}
|
||||
|
||||
func main() {
|
||||
handler1 := &myHandler{Name: "handler1"}
|
||||
handler2 := &myHandler{Name: "handler2"}
|
||||
handler3 := &myHandler{Name: "handler3"}
|
||||
handler4 := &myHandler{Name: "handler4"}
|
||||
handler5 := &myHandler{Name: "handler5"}
|
||||
handler6 := &myHandler{Name: "handler6"}
|
||||
|
||||
http.Handle("/", handler1)
|
||||
http.Handle("/book", handler2)
|
||||
http.Handle("/books/", handler3)
|
||||
http.Handle("/books/Hobbit", handler4)
|
||||
http.Handle("/theme", handler5)
|
||||
http.Handle("/theme/", handler6)
|
||||
http.ListenAndServeTLS(":8080", nil)
|
||||
}
|
4
microservices/formrequest/Form-request.http
Normal file
4
microservices/formrequest/Form-request.http
Normal file
@ -0,0 +1,4 @@
|
||||
POST http://localhost:8080/ HTTP/1.1
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
|
||||
name=Peter
|
3
microservices/formrequest/go.mod
Normal file
3
microservices/formrequest/go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module golang.source-fellows.com/samples/formrequest
|
||||
|
||||
go 1.13
|
18
microservices/formrequest/main.go
Normal file
18
microservices/formrequest/main.go
Normal file
@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
import "net/http"
|
||||
|
||||
func handleForm(rw http.ResponseWriter, rq *http.Request) {
|
||||
err := rq.ParseForm()
|
||||
if err != nil {
|
||||
rw.WriteHeader(http.StatusNotAcceptable)
|
||||
return
|
||||
}
|
||||
name := rq.Form.Get("name")
|
||||
rw.Write([]byte("Hello " + name))
|
||||
}
|
||||
|
||||
func main() {
|
||||
http.HandleFunc("/", handleForm)
|
||||
http.ListenAndServe(":8080", nil)
|
||||
}
|
33
microservices/go-channel/main.go
Normal file
33
microservices/go-channel/main.go
Normal file
@ -0,0 +1,33 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
tc := make(chan time.Time)
|
||||
|
||||
var c int64 = 0
|
||||
|
||||
go func() {
|
||||
for {
|
||||
go func() {
|
||||
for {
|
||||
c++
|
||||
i := rand.Int31n(10)
|
||||
time.Sleep(time.Duration(i) * time.Millisecond)
|
||||
tc <- time.Now()
|
||||
}
|
||||
}()
|
||||
}
|
||||
}()
|
||||
|
||||
for t := range tc {
|
||||
fmt.Println(t)
|
||||
fmt.Println(c)
|
||||
}
|
||||
|
||||
}
|
5
microservices/gorilla-mux/go.mod
Normal file
5
microservices/gorilla-mux/go.mod
Normal file
@ -0,0 +1,5 @@
|
||||
module golang.source-fellows.com/samples/gorillamux
|
||||
|
||||
go 1.13
|
||||
|
||||
require github.com/gorilla/mux v1.7.4
|
2
microservices/gorilla-mux/go.sum
Normal file
2
microservices/gorilla-mux/go.sum
Normal file
@ -0,0 +1,2 @@
|
||||
github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc=
|
||||
github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
|
18
microservices/gorilla-mux/main.go
Normal file
18
microservices/gorilla-mux/main.go
Normal file
@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
)
|
||||
|
||||
func myFunc(rw http.ResponseWriter, rq *http.Request) {
|
||||
rw.Write([]byte("Hello World"))
|
||||
}
|
||||
|
||||
func main() {
|
||||
r := mux.NewRouter()
|
||||
r.PathPrefix("/").HandlerFunc(myFunc)
|
||||
r.Methods("GET")
|
||||
http.ListenAndServe(":8080", r)
|
||||
}
|
8
microservices/gorm-hooks/go.mod
Normal file
8
microservices/gorm-hooks/go.mod
Normal file
@ -0,0 +1,8 @@
|
||||
module golang.source-fellows.com/samples/gorm
|
||||
|
||||
go 1.14
|
||||
|
||||
require (
|
||||
github.com/Unknwon/log v0.0.0-20200308114134-929b1006e34a
|
||||
github.com/jinzhu/gorm v1.9.14
|
||||
)
|
27
microservices/gorm-hooks/go.sum
Normal file
27
microservices/gorm-hooks/go.sum
Normal file
@ -0,0 +1,27 @@
|
||||
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
||||
github.com/Unknwon/log v0.0.0-20200308114134-929b1006e34a h1:2/IoPLpPzmKDdgAfM0aQVp71xVK5G/FKUqPWHQw5xp8=
|
||||
github.com/Unknwon/log v0.0.0-20200308114134-929b1006e34a/go.mod h1:/+ZenhmdkCX8gc8YHVQRSdVGE/+F9HvTY6QDTwEbaO4=
|
||||
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
|
||||
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
|
||||
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
|
||||
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
||||
github.com/jinzhu/gorm v1.9.14 h1:Kg3ShyTPcM6nzVo148fRrcMO6MNKuqtOUwnzqMgVniM=
|
||||
github.com/jinzhu/gorm v1.9.14/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
|
||||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/mattn/go-sqlite3 v1.14.0 h1:mLyGNKR8+Vv9CAU7PphKa2hkEqxxhn8i32J6FPj1/QA=
|
||||
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
58
microservices/gorm-hooks/main.go
Normal file
58
microservices/gorm-hooks/main.go
Normal file
@ -0,0 +1,58 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"github.com/jinzhu/gorm"
|
||||
_ "github.com/jinzhu/gorm/dialects/sqlite"
|
||||
)
|
||||
|
||||
type Customer struct {
|
||||
gorm.Model
|
||||
FirstName string
|
||||
LastName string
|
||||
}
|
||||
|
||||
func (u *Customer) BeforeUpdate() (err error) {
|
||||
fmt.Println("before update")
|
||||
return nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
db, err := gorm.Open("sqlite3", "test.db")
|
||||
if err != nil {
|
||||
panic("failed to connect database")
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
// LogMode enable
|
||||
db.LogMode(true)
|
||||
|
||||
// Migrate the schema
|
||||
err = db.AutoMigrate(&Customer{}).Error
|
||||
if err != nil {
|
||||
log.Fatalf("error migrating ", err)
|
||||
}
|
||||
|
||||
// Create
|
||||
customer := Customer{FirstName: "Hans", LastName: "wurst"}
|
||||
db.Create(&customer)
|
||||
|
||||
var foundCustomer Customer
|
||||
// Plain SQL
|
||||
db.First(&foundCustomer, "First_Name = ?", "Hans")
|
||||
// Template
|
||||
db.Where(&Customer{FirstName: "Hans"}).First(&foundCustomer)
|
||||
|
||||
fmt.Println("Gefunden wurde:", foundCustomer.FirstName)
|
||||
|
||||
// Update - update product's price to 2000
|
||||
db.Model(&foundCustomer).Update("LastName", "Meiser")
|
||||
|
||||
err = db.Delete(&foundCustomer).Error
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
}
|
BIN
microservices/gorm-hooks/test.db
Normal file
BIN
microservices/gorm-hooks/test.db
Normal file
Binary file not shown.
5
microservices/gorm-relation/go.mod
Normal file
5
microservices/gorm-relation/go.mod
Normal file
@ -0,0 +1,5 @@
|
||||
module golang.source-fellows.com/samples/gormrelation
|
||||
|
||||
go 1.14
|
||||
|
||||
require github.com/jinzhu/gorm v1.9.14
|
32
microservices/gorm-relation/go.sum
Normal file
32
microservices/gorm-relation/go.sum
Normal file
@ -0,0 +1,32 @@
|
||||
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
||||
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
|
||||
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd h1:83Wprp6ROGeiHFAP8WJdI2RoxALQYgdllERc3N5N2DM=
|
||||
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
|
||||
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y=
|
||||
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
|
||||
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
|
||||
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
|
||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
||||
github.com/jinzhu/gorm v1.9.14 h1:Kg3ShyTPcM6nzVo148fRrcMO6MNKuqtOUwnzqMgVniM=
|
||||
github.com/jinzhu/gorm v1.9.14/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
|
||||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||
github.com/jinzhu/now v1.0.1 h1:HjfetcXq097iXP0uoPCdnM4Efp5/9MsM0/M+XOTeR3M=
|
||||
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4=
|
||||
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/mattn/go-sqlite3 v1.14.0 h1:mLyGNKR8+Vv9CAU7PphKa2hkEqxxhn8i32J6FPj1/QA=
|
||||
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd h1:GGJVjV8waZKRHrgwvtH66z9ZGVurTD1MT0n1Bb+q4aM=
|
||||
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
51
microservices/gorm-relation/main.go
Normal file
51
microservices/gorm-relation/main.go
Normal file
@ -0,0 +1,51 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/jinzhu/gorm"
|
||||
_ "github.com/jinzhu/gorm/dialects/sqlite"
|
||||
)
|
||||
|
||||
type Customer struct {
|
||||
gorm.Model
|
||||
FirstName string
|
||||
LastName string
|
||||
CreditCard CreditCard
|
||||
CreditCardId uint
|
||||
}
|
||||
|
||||
type CreditCard struct {
|
||||
gorm.Model
|
||||
Number string
|
||||
}
|
||||
|
||||
func main() {
|
||||
db, err := gorm.Open("sqlite3", "test.db")
|
||||
if err != nil {
|
||||
panic("failed to connect database")
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
// LogMode enable
|
||||
db.LogMode(true)
|
||||
|
||||
// Migrate the schema
|
||||
db.AutoMigrate(&CreditCard{}, &Customer{})
|
||||
|
||||
// Create
|
||||
customer := Customer{FirstName: "Hans", LastName: "wurst"}
|
||||
customer.CreditCard = CreditCard{Number: "123-123-123"}
|
||||
db.Set("gorm:association_autoupdate", false).Set("gorm:association_autoupdate", true).Create(&customer)
|
||||
|
||||
var foundCustomer Customer
|
||||
var foundCreditCard CreditCard
|
||||
|
||||
db.Where(&Customer{FirstName: "Hans"}).First(&foundCustomer)
|
||||
db.Model(&foundCustomer).Related(&foundCreditCard)
|
||||
|
||||
fmt.Println("Gefunden wurde:", foundCreditCard.Number)
|
||||
|
||||
db.Delete(&foundCustomer)
|
||||
|
||||
}
|
8
microservices/gorm/go.mod
Normal file
8
microservices/gorm/go.mod
Normal file
@ -0,0 +1,8 @@
|
||||
module golang.source-fellows.com/samples/gorm
|
||||
|
||||
go 1.14
|
||||
|
||||
require (
|
||||
github.com/Unknwon/log v0.0.0-20200308114134-929b1006e34a
|
||||
github.com/jinzhu/gorm v1.9.14
|
||||
)
|
27
microservices/gorm/go.sum
Normal file
27
microservices/gorm/go.sum
Normal file
@ -0,0 +1,27 @@
|
||||
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
|
||||
github.com/Unknwon/log v0.0.0-20200308114134-929b1006e34a h1:2/IoPLpPzmKDdgAfM0aQVp71xVK5G/FKUqPWHQw5xp8=
|
||||
github.com/Unknwon/log v0.0.0-20200308114134-929b1006e34a/go.mod h1:/+ZenhmdkCX8gc8YHVQRSdVGE/+F9HvTY6QDTwEbaO4=
|
||||
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
|
||||
github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
|
||||
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0=
|
||||
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
|
||||
github.com/jinzhu/gorm v1.9.14 h1:Kg3ShyTPcM6nzVo148fRrcMO6MNKuqtOUwnzqMgVniM=
|
||||
github.com/jinzhu/gorm v1.9.14/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs=
|
||||
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
|
||||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||
github.com/jinzhu/now v1.0.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/mattn/go-sqlite3 v1.14.0 h1:mLyGNKR8+Vv9CAU7PphKa2hkEqxxhn8i32J6FPj1/QA=
|
||||
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
53
microservices/gorm/main.go
Normal file
53
microservices/gorm/main.go
Normal file
@ -0,0 +1,53 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"github.com/jinzhu/gorm"
|
||||
_ "github.com/jinzhu/gorm/dialects/sqlite"
|
||||
)
|
||||
|
||||
type Customer struct {
|
||||
gorm.Model
|
||||
FirstName string
|
||||
LastName string
|
||||
}
|
||||
|
||||
func main() {
|
||||
db, err := gorm.Open("sqlite3", "test.db")
|
||||
if err != nil {
|
||||
panic("failed to connect database")
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
// LogMode enable
|
||||
db.LogMode(true)
|
||||
|
||||
// Migrate the schema
|
||||
err = db.AutoMigrate(&Customer{}).Error
|
||||
if err != nil {
|
||||
log.Fatalf("error migrating ", err)
|
||||
}
|
||||
|
||||
// Create
|
||||
customer := Customer{FirstName: "Hans", LastName: "wurst"}
|
||||
db.Create(&customer)
|
||||
|
||||
var foundCustomer Customer
|
||||
// Plain SQL
|
||||
db.First(&foundCustomer, "First_Name = ?", "Hans")
|
||||
// Template
|
||||
db.Where(&Customer{FirstName: "Hans"}).First(&foundCustomer)
|
||||
|
||||
fmt.Println("Gefunden wurde:", foundCustomer.FirstName)
|
||||
|
||||
// Update - update product's price to 2000
|
||||
db.Model(&foundCustomer).Update("LastName", "Meiser")
|
||||
|
||||
err = db.Delete(&foundCustomer).Error
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
}
|
22
microservices/grpc/client/cmd/main.go
Normal file
22
microservices/grpc/client/cmd/main.go
Normal file
@ -0,0 +1,22 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
|
||||
"golang.source-fellows.com/samples/grpc/hello"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/protobuf/types/known/emptypb"
|
||||
)
|
||||
|
||||
func main() {
|
||||
con, _ := grpc.Dial(":8080", grpc.WithInsecure())
|
||||
client := hello.NewHelloWorldServiceClient(con)
|
||||
|
||||
ctx := context.Background()
|
||||
answer, err := client.SayHello(ctx, &emptypb.Empty{})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
log.Println(answer.GetMessageText())
|
||||
}
|
11
microservices/grpc/client/go.mod
Normal file
11
microservices/grpc/client/go.mod
Normal file
@ -0,0 +1,11 @@
|
||||
module golang.source-fellows.com/samples/grpc/client
|
||||
|
||||
go 1.13
|
||||
|
||||
require (
|
||||
golang.source-fellows.com/samples/grpc/hello v0.0.0
|
||||
google.golang.org/grpc v1.30.0
|
||||
google.golang.org/protobuf v1.25.0
|
||||
)
|
||||
|
||||
replace golang.source-fellows.com/samples/grpc/hello => ./../hello
|
78
microservices/grpc/client/go.sum
Normal file
78
microservices/grpc/client/go.sum
Normal file
@ -0,0 +1,78 @@
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||
github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
|
||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
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.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
|
||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.30.0 h1:M5a8xTlYTxwMn5ZFkwhRabsygDY5G8TYLyQDBxJNAxE=
|
||||
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
|
||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
9
microservices/grpc/hello/go.mod
Normal file
9
microservices/grpc/hello/go.mod
Normal file
@ -0,0 +1,9 @@
|
||||
module golang.source-fellows.com/samples/grpc/hello
|
||||
|
||||
go 1.13
|
||||
|
||||
require (
|
||||
github.com/golang/protobuf v1.4.2
|
||||
google.golang.org/grpc v1.30.0
|
||||
google.golang.org/protobuf v1.25.0
|
||||
)
|
75
microservices/grpc/hello/go.sum
Normal file
75
microservices/grpc/hello/go.sum
Normal file
@ -0,0 +1,75 @@
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||
github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
|
||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.30.0 h1:M5a8xTlYTxwMn5ZFkwhRabsygDY5G8TYLyQDBxJNAxE=
|
||||
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
|
||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
161
microservices/grpc/hello/hello-message.pb.go
Normal file
161
microservices/grpc/hello/hello-message.pb.go
Normal file
@ -0,0 +1,161 @@
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.25.0-devel
|
||||
// protoc v3.12.3
|
||||
// source: hello-message.proto
|
||||
|
||||
package hello
|
||||
|
||||
import (
|
||||
proto "github.com/golang/protobuf/proto"
|
||||
empty "github.com/golang/protobuf/ptypes/empty"
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
)
|
||||
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
// This is a compile-time assertion that a sufficiently up-to-date version
|
||||
// of the legacy proto package is being used.
|
||||
const _ = proto.ProtoPackageIsVersion4
|
||||
|
||||
type HelloMessage struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
MessageText string `protobuf:"bytes,1,opt,name=messageText,proto3" json:"messageText,omitempty"`
|
||||
}
|
||||
|
||||
func (x *HelloMessage) Reset() {
|
||||
*x = HelloMessage{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_hello_message_proto_msgTypes[0]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *HelloMessage) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*HelloMessage) ProtoMessage() {}
|
||||
|
||||
func (x *HelloMessage) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_hello_message_proto_msgTypes[0]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use HelloMessage.ProtoReflect.Descriptor instead.
|
||||
func (*HelloMessage) Descriptor() ([]byte, []int) {
|
||||
return file_hello_message_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
func (x *HelloMessage) GetMessageText() string {
|
||||
if x != nil {
|
||||
return x.MessageText
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
var File_hello_message_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_hello_message_proto_rawDesc = []byte{
|
||||
0x0a, 0x13, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e,
|
||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x1a, 0x1b, 0x67, 0x6f,
|
||||
0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d,
|
||||
0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x30, 0x0a, 0x0c, 0x48, 0x65, 0x6c,
|
||||
0x6c, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x73,
|
||||
0x73, 0x61, 0x67, 0x65, 0x54, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
|
||||
0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x65, 0x78, 0x74, 0x32, 0x4c, 0x0a, 0x11, 0x48,
|
||||
0x65, 0x6c, 0x6c, 0x6f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
|
||||
0x12, 0x37, 0x0a, 0x08, 0x73, 0x61, 0x79, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x12, 0x16, 0x2e, 0x67,
|
||||
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
|
||||
0x6d, 0x70, 0x74, 0x79, 0x1a, 0x13, 0x2e, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2e, 0x48, 0x65, 0x6c,
|
||||
0x6c, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x6f, 0x6c,
|
||||
0x61, 0x6e, 0x67, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, 0x66, 0x65, 0x6c, 0x6c, 0x6f,
|
||||
0x77, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x67,
|
||||
0x72, 0x70, 0x63, 0x2f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
file_hello_message_proto_rawDescOnce sync.Once
|
||||
file_hello_message_proto_rawDescData = file_hello_message_proto_rawDesc
|
||||
)
|
||||
|
||||
func file_hello_message_proto_rawDescGZIP() []byte {
|
||||
file_hello_message_proto_rawDescOnce.Do(func() {
|
||||
file_hello_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_hello_message_proto_rawDescData)
|
||||
})
|
||||
return file_hello_message_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_hello_message_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
|
||||
var file_hello_message_proto_goTypes = []interface{}{
|
||||
(*HelloMessage)(nil), // 0: hello.HelloMessage
|
||||
(*empty.Empty)(nil), // 1: google.protobuf.Empty
|
||||
}
|
||||
var file_hello_message_proto_depIdxs = []int32{
|
||||
1, // 0: hello.HelloWorldService.sayHello:input_type -> google.protobuf.Empty
|
||||
0, // 1: hello.HelloWorldService.sayHello:output_type -> hello.HelloMessage
|
||||
1, // [1:2] is the sub-list for method output_type
|
||||
0, // [0:1] is the sub-list for method input_type
|
||||
0, // [0:0] is the sub-list for extension type_name
|
||||
0, // [0:0] is the sub-list for extension extendee
|
||||
0, // [0:0] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_hello_message_proto_init() }
|
||||
func file_hello_message_proto_init() {
|
||||
if File_hello_message_proto != nil {
|
||||
return
|
||||
}
|
||||
if !protoimpl.UnsafeEnabled {
|
||||
file_hello_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*HelloMessage); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_hello_message_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 1,
|
||||
NumExtensions: 0,
|
||||
NumServices: 1,
|
||||
},
|
||||
GoTypes: file_hello_message_proto_goTypes,
|
||||
DependencyIndexes: file_hello_message_proto_depIdxs,
|
||||
MessageInfos: file_hello_message_proto_msgTypes,
|
||||
}.Build()
|
||||
File_hello_message_proto = out.File
|
||||
file_hello_message_proto_rawDesc = nil
|
||||
file_hello_message_proto_goTypes = nil
|
||||
file_hello_message_proto_depIdxs = nil
|
||||
}
|
15
microservices/grpc/hello/hello-message.proto
Normal file
15
microservices/grpc/hello/hello-message.proto
Normal file
@ -0,0 +1,15 @@
|
||||
syntax="proto3";
|
||||
|
||||
package hello;
|
||||
|
||||
option go_package = "golang.source-fellows.com/samples/grpc/hello";
|
||||
|
||||
import "google/protobuf/empty.proto";
|
||||
|
||||
message HelloMessage {
|
||||
string messageText = 1;
|
||||
}
|
||||
|
||||
service HelloWorldService {
|
||||
rpc sayHello(google.protobuf.Empty) returns (HelloMessage);
|
||||
}
|
91
microservices/grpc/hello/hello-message_grpc.pb.go
Normal file
91
microservices/grpc/hello/hello-message_grpc.pb.go
Normal file
@ -0,0 +1,91 @@
|
||||
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
|
||||
|
||||
package hello
|
||||
|
||||
import (
|
||||
context "context"
|
||||
empty "github.com/golang/protobuf/ptypes/empty"
|
||||
grpc "google.golang.org/grpc"
|
||||
codes "google.golang.org/grpc/codes"
|
||||
status "google.golang.org/grpc/status"
|
||||
)
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
// is compatible with the grpc package it is being compiled against.
|
||||
const _ = grpc.SupportPackageIsVersion6
|
||||
|
||||
// HelloWorldServiceClient is the client API for HelloWorldService service.
|
||||
//
|
||||
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
|
||||
type HelloWorldServiceClient interface {
|
||||
SayHello(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*HelloMessage, error)
|
||||
}
|
||||
|
||||
type helloWorldServiceClient struct {
|
||||
cc grpc.ClientConnInterface
|
||||
}
|
||||
|
||||
func NewHelloWorldServiceClient(cc grpc.ClientConnInterface) HelloWorldServiceClient {
|
||||
return &helloWorldServiceClient{cc}
|
||||
}
|
||||
|
||||
func (c *helloWorldServiceClient) SayHello(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*HelloMessage, error) {
|
||||
out := new(HelloMessage)
|
||||
err := c.cc.Invoke(ctx, "/hello.HelloWorldService/sayHello", in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// HelloWorldServiceServer is the server API for HelloWorldService service.
|
||||
// All implementations must embed UnimplementedHelloWorldServiceServer
|
||||
// for forward compatibility
|
||||
type HelloWorldServiceServer interface {
|
||||
SayHello(context.Context, *empty.Empty) (*HelloMessage, error)
|
||||
mustEmbedUnimplementedHelloWorldServiceServer()
|
||||
}
|
||||
|
||||
// UnimplementedHelloWorldServiceServer must be embedded to have forward compatible implementations.
|
||||
type UnimplementedHelloWorldServiceServer struct {
|
||||
}
|
||||
|
||||
func (*UnimplementedHelloWorldServiceServer) SayHello(context.Context, *empty.Empty) (*HelloMessage, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SayHello not implemented")
|
||||
}
|
||||
func (*UnimplementedHelloWorldServiceServer) mustEmbedUnimplementedHelloWorldServiceServer() {}
|
||||
|
||||
func RegisterHelloWorldServiceServer(s *grpc.Server, srv HelloWorldServiceServer) {
|
||||
s.RegisterService(&_HelloWorldService_serviceDesc, srv)
|
||||
}
|
||||
|
||||
func _HelloWorldService_SayHello_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(empty.Empty)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(HelloWorldServiceServer).SayHello(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: "/hello.HelloWorldService/SayHello",
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(HelloWorldServiceServer).SayHello(ctx, req.(*empty.Empty))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
var _HelloWorldService_serviceDesc = grpc.ServiceDesc{
|
||||
ServiceName: "hello.HelloWorldService",
|
||||
HandlerType: (*HelloWorldServiceServer)(nil),
|
||||
Methods: []grpc.MethodDesc{
|
||||
{
|
||||
MethodName: "sayHello",
|
||||
Handler: _HelloWorldService_SayHello_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "hello-message.proto",
|
||||
}
|
18
microservices/grpc/server/cmd/main.go
Normal file
18
microservices/grpc/server/cmd/main.go
Normal file
@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net"
|
||||
|
||||
"golang.source-fellows.com/samples/grpc/hello"
|
||||
"golang.source-fellows.com/samples/grpc/server"
|
||||
"google.golang.org/grpc"
|
||||
)
|
||||
|
||||
func main() {
|
||||
srv := grpc.NewServer()
|
||||
hello.RegisterHelloWorldServiceServer(srv, &server.HelloService{})
|
||||
listener, _ := net.Listen("tcp", ":8080")
|
||||
log.Println("Starting Server ...")
|
||||
log.Fatal(srv.Serve(listener))
|
||||
}
|
13
microservices/grpc/server/go.mod
Normal file
13
microservices/grpc/server/go.mod
Normal file
@ -0,0 +1,13 @@
|
||||
module golang.source-fellows.com/samples/grpc/server
|
||||
|
||||
go 1.13
|
||||
|
||||
require (
|
||||
github.com/golang/protobuf v1.4.2
|
||||
golang.source-fellows.com/samples/grpc/hello v0.0.0
|
||||
google.golang.org/grpc v1.30.0
|
||||
google.golang.org/grpc/cmd/protoc-gen-go-grpc v0.0.0-20200630190442-3de8449f8555 // indirect
|
||||
google.golang.org/protobuf v1.25.0
|
||||
)
|
||||
|
||||
replace golang.source-fellows.com/samples/grpc/hello => ./../hello
|
80
microservices/grpc/server/go.sum
Normal file
80
microservices/grpc/server/go.sum
Normal file
@ -0,0 +1,80 @@
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
||||
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
||||
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||
github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.source-fellows.com v0.0.0-20200619133407-79aa8981720c h1:c0BKYhs4PULAm3Hb5f+t9AcmPRScdSAkeuajndyOMLQ=
|
||||
golang.source-fellows.com v0.0.0-20200619133407-79aa8981720c/go.mod h1:40F0hxiV+yxOJaUHRyBpnlLt4Cv2SQFKZNBKTvueCeI=
|
||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
|
||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||
google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg=
|
||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.30.0 h1:M5a8xTlYTxwMn5ZFkwhRabsygDY5G8TYLyQDBxJNAxE=
|
||||
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/grpc/cmd/protoc-gen-go-grpc v0.0.0-20200630190442-3de8449f8555 h1:HYZFXlXJqim8gcoUICZN9oGXFPtw2GEBFm3ay9KZnxU=
|
||||
google.golang.org/grpc/cmd/protoc-gen-go-grpc v0.0.0-20200630190442-3de8449f8555/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
||||
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
||||
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
|
||||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
17
microservices/grpc/server/helloService.go
Normal file
17
microservices/grpc/server/helloService.go
Normal file
@ -0,0 +1,17 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
context "context"
|
||||
|
||||
empty "github.com/golang/protobuf/ptypes/empty"
|
||||
"golang.source-fellows.com/samples/grpc/hello"
|
||||
)
|
||||
|
||||
type HelloService struct {
|
||||
hello.UnimplementedHelloWorldServiceServer
|
||||
}
|
||||
|
||||
func (hs *HelloService) SayHello(context.Context, *empty.Empty) (*hello.HelloMessage, error) {
|
||||
msg := &hello.HelloMessage{MessageText: "Hello World"}
|
||||
return msg, nil
|
||||
}
|
11
microservices/hanlder-impl/cmd/main.go
Normal file
11
microservices/hanlder-impl/cmd/main.go
Normal file
@ -0,0 +1,11 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"golang.source-fellows.com/samples/httphandler"
|
||||
)
|
||||
|
||||
func main() {
|
||||
http.ListenAndServe(":8080", &httphandler.MyHandler{})
|
||||
}
|
3
microservices/hanlder-impl/go.mod
Normal file
3
microservices/hanlder-impl/go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module golang.source-fellows.com/samples/httphandler
|
||||
|
||||
go 1.13
|
1
microservices/hanlder-impl/go.sum
Normal file
1
microservices/hanlder-impl/go.sum
Normal file
@ -0,0 +1 @@
|
||||
golang.source-fellows.com v0.0.0-20200619133407-79aa8981720c h1:c0BKYhs4PULAm3Hb5f+t9AcmPRScdSAkeuajndyOMLQ=
|
9
microservices/hanlder-impl/handler.go
Normal file
9
microservices/hanlder-impl/handler.go
Normal file
@ -0,0 +1,9 @@
|
||||
package httphandler
|
||||
|
||||
import "net/http"
|
||||
|
||||
type MyHandler struct{}
|
||||
|
||||
func (mh *MyHandler) ServeHTTP(writer http.ResponseWriter, req *http.Request) {
|
||||
writer.Write([]byte("Hello World!"))
|
||||
}
|
5
microservices/http-client-circut-breaker/go.mod
Normal file
5
microservices/http-client-circut-breaker/go.mod
Normal file
@ -0,0 +1,5 @@
|
||||
module golang.source-fellows.com/samples/httpcircuitbreaker
|
||||
|
||||
go 1.13
|
||||
|
||||
require github.com/sony/gobreaker v0.4.1
|
6
microservices/http-client-circut-breaker/go.sum
Normal file
6
microservices/http-client-circut-breaker/go.sum
Normal file
@ -0,0 +1,6 @@
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/sony/gobreaker v0.4.1 h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ=
|
||||
github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
43
microservices/http-client-circut-breaker/main.go
Normal file
43
microservices/http-client-circut-breaker/main.go
Normal file
@ -0,0 +1,43 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
breaker "github.com/sony/gobreaker"
|
||||
)
|
||||
|
||||
var cb *breaker.CircuitBreaker
|
||||
|
||||
func main() {
|
||||
|
||||
settings := breaker.Settings{Interval: 1 * time.Second, Timeout: 5 * time.Second}
|
||||
cb = breaker.NewCircuitBreaker(settings)
|
||||
|
||||
for {
|
||||
bites, err := cb.Execute(func() (interface{}, error) {
|
||||
res, err := http.Get("http://localhost:8080/a")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if res.StatusCode == http.StatusOK {
|
||||
|
||||
}
|
||||
defer res.Body.Close()
|
||||
bites, _ := ioutil.ReadAll(res.Body)
|
||||
return bites, nil
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
log.Printf("error %v\n", err)
|
||||
|
||||
} else {
|
||||
fmt.Println(string(bites.([]byte)))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
17
microservices/http-client-config/main.go
Normal file
17
microservices/http-client-config/main.go
Normal file
@ -0,0 +1,17 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
client := http.Client{Transport: &http.Transport{
|
||||
ResponseHeaderTimeout: 1 * time.Millisecond,
|
||||
}}
|
||||
res, err := client.Get("https://google.com")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer res.Body.Close()
|
||||
}
|
71
microservices/http-client-ssl-cert/certs/ca/certsdb/01.pem
Normal file
71
microservices/http-client-ssl-cert/certs/ca/certsdb/01.pem
Normal file
@ -0,0 +1,71 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 1 (0x0)
|
||||
Serial Number: 1 (0x1)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer: C=DE, ST=BW, L=Reutlingen, O=Source Fellows GmbH/emailAddress=webmaster@example.private, CN=test.example.private
|
||||
Validity
|
||||
Not Before: Jul 9 04:15:47 2020 GMT
|
||||
Not After : Jul 9 04:15:47 2021 GMT
|
||||
Subject: C=DE, ST=BW, L=Reutlingen, O=Source Fellows GmbH, CN=test.example.private/emailAddress=user@example.private
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public-Key: (2048 bit)
|
||||
Modulus:
|
||||
00:e3:a9:b6:c5:35:06:6d:12:ee:e7:ee:60:89:49:
|
||||
2a:ac:b2:be:3d:f7:c5:4d:55:08:fc:80:43:aa:fd:
|
||||
05:6c:43:94:a5:02:c9:1f:fc:70:c4:44:85:5a:b8:
|
||||
f9:95:f8:8a:5c:2e:12:55:43:23:f2:d0:34:c3:a4:
|
||||
41:89:14:a9:d1:19:d4:0d:d0:58:87:38:9f:6c:1d:
|
||||
89:2d:23:60:8f:9e:af:f4:5a:f0:d0:a4:fd:4a:49:
|
||||
9b:19:df:97:20:db:80:7b:ee:f2:ba:e7:9a:b4:3c:
|
||||
48:74:9c:57:61:0b:4e:ee:eb:53:5d:ca:3d:9e:f3:
|
||||
d2:d5:1a:f7:7a:34:1d:09:73:44:1c:af:3d:31:72:
|
||||
90:e9:43:0b:b3:c9:30:58:21:df:27:5b:39:42:85:
|
||||
f1:ec:d9:1c:89:38:64:92:d6:da:f9:22:c1:e9:b5:
|
||||
22:bf:3a:32:10:f9:e3:e6:b3:73:1d:d2:7e:a9:a6:
|
||||
27:86:83:8c:7e:9d:4f:39:d0:53:45:0b:f7:89:8b:
|
||||
f2:8c:43:44:42:a9:4a:81:83:60:bb:1f:63:f5:75:
|
||||
fa:73:3b:85:c9:62:7d:1d:8a:61:4c:3c:f9:23:a3:
|
||||
3d:97:78:6f:6d:13:db:88:79:fb:89:0b:3e:a6:50:
|
||||
b8:72:9a:c8:d3:7b:d2:ec:6c:15:3d:ab:f7:8b:c8:
|
||||
50:9b
|
||||
Exponent: 65537 (0x10001)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
95:b9:66:f0:95:05:82:2c:9b:f6:85:ea:68:7c:ae:18:b5:d1:
|
||||
12:10:22:2f:2f:1f:5f:d8:15:b6:b3:87:4a:dc:b1:1c:1d:c3:
|
||||
8c:80:2f:cb:d2:bd:36:35:53:27:20:c0:b8:5f:58:92:8e:60:
|
||||
2a:01:f1:08:38:d0:97:6f:4f:a1:57:17:e7:b9:fc:e1:67:7a:
|
||||
97:1b:b3:e1:36:26:06:b2:32:9d:5a:12:4b:2d:b7:0b:8b:c8:
|
||||
09:bc:5c:b1:8f:f8:42:24:97:10:6d:6a:eb:82:99:0a:bf:e8:
|
||||
fe:9c:1d:52:f2:2d:78:18:a4:9f:33:27:88:54:86:09:11:0e:
|
||||
fd:d5:5c:0d:65:c4:78:bd:cc:2f:34:59:e0:13:e8:02:ed:98:
|
||||
c4:9e:7f:5e:f7:9b:18:d1:c6:76:eb:1b:dc:76:6a:a6:ab:f3:
|
||||
b5:8f:b5:0a:ad:cf:07:d5:cf:6c:69:ae:0c:f5:dc:f2:b2:11:
|
||||
2b:b2:b6:a5:b5:63:6b:1f:0d:7b:cd:07:81:59:40:5e:12:c9:
|
||||
41:73:cf:08:87:3c:ab:38:51:27:c2:ad:c6:57:20:dc:bd:fe:
|
||||
cf:ea:b5:37:29:be:c1:f4:9b:61:ad:a3:f8:5c:d7:7b:65:2e:
|
||||
80:f9:6b:dd:42:a8:62:ae:52:0d:95:f7:67:04:10:b9:97:24:
|
||||
48:33:fb:22
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDnTCCAoUCAQEwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNVBAYTAkRFMQswCQYD
|
||||
VQQIDAJCVzETMBEGA1UEBwwKUmV1dGxpbmdlbjEcMBoGA1UECgwTU291cmNlIEZl
|
||||
bGxvd3MgR21iSDEoMCYGCSqGSIb3DQEJARYZd2VibWFzdGVyQGV4YW1wbGUucHJp
|
||||
dmF0ZTEdMBsGA1UEAwwUdGVzdC5leGFtcGxlLnByaXZhdGUwHhcNMjAwNzA5MDQx
|
||||
NTQ3WhcNMjEwNzA5MDQxNTQ3WjCBkTELMAkGA1UEBhMCREUxCzAJBgNVBAgMAkJX
|
||||
MRMwEQYDVQQHDApSZXV0bGluZ2VuMRwwGgYDVQQKDBNTb3VyY2UgRmVsbG93cyBH
|
||||
bWJIMR0wGwYDVQQDDBR0ZXN0LmV4YW1wbGUucHJpdmF0ZTEjMCEGCSqGSIb3DQEJ
|
||||
ARYUdXNlckBleGFtcGxlLnByaXZhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
||||
ggEKAoIBAQDjqbbFNQZtEu7n7mCJSSqssr4998VNVQj8gEOq/QVsQ5SlAskf/HDE
|
||||
RIVauPmV+IpcLhJVQyPy0DTDpEGJFKnRGdQN0FiHOJ9sHYktI2CPnq/0WvDQpP1K
|
||||
SZsZ35cg24B77vK655q0PEh0nFdhC07u61Ndyj2e89LVGvd6NB0Jc0Qcrz0xcpDp
|
||||
QwuzyTBYId8nWzlChfHs2RyJOGSS1tr5IsHptSK/OjIQ+ePms3Md0n6ppieGg4x+
|
||||
nU850FNFC/eJi/KMQ0RCqUqBg2C7H2P1dfpzO4XJYn0dimFMPPkjoz2XeG9tE9uI
|
||||
efuJCz6mULhymsjTe9LsbBU9q/eLyFCbAgMBAAEwDQYJKoZIhvcNAQEFBQADggEB
|
||||
AJW5ZvCVBYIsm/aF6mh8rhi10RIQIi8vH1/YFbazh0rcsRwdw4yAL8vSvTY1Uycg
|
||||
wLhfWJKOYCoB8Qg40JdvT6FXF+e5/OFnepcbs+E2JgayMp1aEksttwuLyAm8XLGP
|
||||
+EIklxBtauuCmQq/6P6cHVLyLXgYpJ8zJ4hUhgkRDv3VXA1lxHi9zC80WeAT6ALt
|
||||
mMSef173mxjRxnbrG9x2aqar87WPtQqtzwfVz2xprgz13PKyESuytqW1Y2sfDXvN
|
||||
B4FZQF4SyUFzzwiHPKs4USfCrcZXINy9/s/qtTcpvsH0m2Gto/hc13tlLoD5a91C
|
||||
qGKuUg2V92cEELmXJEgz+yI=
|
||||
-----END CERTIFICATE-----
|
1
microservices/http-client-ssl-cert/certs/ca/index.txt
Normal file
1
microservices/http-client-ssl-cert/certs/ca/index.txt
Normal file
@ -0,0 +1 @@
|
||||
V 210709041547Z 01 unknown /C=DE/ST=BW/L=Reutlingen/O=Source Fellows GmbH/CN=test.example.private/emailAddress=user@example.private
|
@ -0,0 +1 @@
|
||||
unique_subject = yes
|
1
microservices/http-client-ssl-cert/certs/ca/serial
Normal file
1
microservices/http-client-ssl-cert/certs/ca/serial
Normal file
@ -0,0 +1 @@
|
||||
02
|
1
microservices/http-client-ssl-cert/certs/ca/serial.old
Normal file
1
microservices/http-client-ssl-cert/certs/ca/serial.old
Normal file
@ -0,0 +1 @@
|
||||
01
|
21
microservices/http-client-ssl-cert/certs/myRoot.crt
Normal file
21
microservices/http-client-ssl-cert/certs/myRoot.crt
Normal file
@ -0,0 +1,21 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDhTCCAm2gAwIBAgIUS7TqIYrkdb2kEmtuawe8h/54VVIwDQYJKoZIhvcNAQEL
|
||||
BQAwUjELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0JhV8ODwrwxEzARBgNVBAcMClJl
|
||||
dXRsaW5nZW4xHDAaBgNVBAoME1NvdXJjZSBGZWxsb3dzIEdtYkgwHhcNMjAwNzA4
|
||||
MDM1ODE4WhcNMzAwNzA2MDM1ODE4WjBSMQswCQYDVQQGEwJERTEQMA4GA1UECAwH
|
||||
QmFXw4PCvDETMBEGA1UEBwwKUmV1dGxpbmdlbjEcMBoGA1UECgwTU291cmNlIEZl
|
||||
bGxvd3MgR21iSDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANY+x2Kr
|
||||
U49506heEh2s0Q5vTjXUbP5814pHhlJ43X3p7QYMbJ/BBunxLA3a8GvuukgD1Wxr
|
||||
0T0uHo5/MLxRh6r1TEy80IApUsyCcAO3jdTGtIr4iebnAOL/Dw0TGWDRyl5SZCwo
|
||||
BsVSOfCoJyMs+ygB+BLE+05Dq5FwA3CpxP5r67efBpY2Y9bu1iXAC179rGaVvtLM
|
||||
3Zy5G+tQ0aMJYOqVR6tvSrrYg44gJiM270u6Os80V723fPtEUvKbHQOpZoleHWsb
|
||||
uZ1FbdQBcnJ2u3bI93ewQAvqQ3tjOqgell5n7kJ1B3Vjk8bVzda1zPKH9vcvF0fc
|
||||
gXdPrVOzBCa5Su8CAwEAAaNTMFEwHQYDVR0OBBYEFO3om6AZ9q/+r6kXo7hAhOBD
|
||||
SeTbMB8GA1UdIwQYMBaAFO3om6AZ9q/+r6kXo7hAhOBDSeTbMA8GA1UdEwEB/wQF
|
||||
MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAMxKFUWYTQz/ACVY8lV18QCGxcvNj3Uz
|
||||
ZdtNUEDkxu6yKsl+1otREbuxqnfNjrGLmlLQfU/GlY+PCF85SYm1Ep4yKdZ7J+1c
|
||||
MG+PB5NS3cV7BnoJ6WnXk7KJRX+dYpCr+jQmQbtTshk6dM2a6THjyPzKkyDflcfM
|
||||
tXQROGDG9O/5DvF8Eqz13Gel5Wukept9mHtDHapU0BooFTXNqh+tPmFU76tKCQZV
|
||||
h0Qt9BC8A6bDEaULVlXpvNTuDCrCMGhiYEo2++PD/e5YT1UDVNSokanyFIUoCJAn
|
||||
X5u+VjRfaVibiWu8E63qoKv+oXBf9pwlNeE8KBlydzf5OQgx8FEkbfc=
|
||||
-----END CERTIFICATE-----
|
27
microservices/http-client-ssl-cert/certs/myRoot.key
Normal file
27
microservices/http-client-ssl-cert/certs/myRoot.key
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEA1j7HYqtTj3nTqF4SHazRDm9ONdRs/nzXikeGUnjdfentBgxs
|
||||
n8EG6fEsDdrwa+66SAPVbGvRPS4ejn8wvFGHqvVMTLzQgClSzIJwA7eN1Ma0iviJ
|
||||
5ucA4v8PDRMZYNHKXlJkLCgGxVI58KgnIyz7KAH4EsT7TkOrkXADcKnE/mvrt58G
|
||||
ljZj1u7WJcALXv2sZpW+0szdnLkb61DRowlg6pVHq29KutiDjiAmIzbvS7o6zzRX
|
||||
vbd8+0RS8psdA6lmiV4daxu5nUVt1AFycna7dsj3d7BAC+pDe2M6qB6WXmfuQnUH
|
||||
dWOTxtXN1rXM8of29y8XR9yBd0+tU7MEJrlK7wIDAQABAoIBAQC0GzaWthybAvly
|
||||
ExL7q2pbzipbimbOUbkI4DQFZOIelebSLOOsMSNUy5ATXbi7o4cqPz7N1J2j5v99
|
||||
H2OjDI8WovwvjpNhClw23Hi6RzaOZzUjluinGg9exLisbx/oirSrMmxPyp5Wh1d5
|
||||
/oJYSdohufYIIVx6YNz8eMQLlEys7BcAs9uDbfrEh2lhSCRd+eVER/p2U+EE3YFe
|
||||
OPhE7S7/5fDHidA/vU5YL0zyDcTiqec8lF3b63L39zYsckUjvbJ9gXru+RUFsnYT
|
||||
FCz/8axvSyiRj9M162BtrwV1lANgbck+unmk9j63bMaNUFHdlFxovxZDA4C6napJ
|
||||
+5dnwduBAoGBAO3UqDRxSWvelTv5vSFWaiJoFKU23PGX46Fsy+b8ttj+8Jz94333
|
||||
u+1t5fEnpS46QhQtiVRB42pezBncJ+CdjQ92ikcJZL7o8NYttlmTVg2i/v+dnxmL
|
||||
T+Tgl89VUOgfKdlRwpgG64dMT1HFQJlMKkKMzdS6FxQtSclYSq0yYVxhAoGBAOac
|
||||
2ijcy0xlhDinsmikxBveaxl8pTeF0jmLlXmNRTuSXkk9tXi5yurV+e4M9oG7pvYU
|
||||
4LUthIvtbmPgDhANN5+45bJqNWw3ovaLb0/60XsET4fiR8W0muXMHcBySpFQsvRm
|
||||
/daw41S+f4rv2XqyaLLbwmgPiusGlJMDENQQCmlPAoGASPA2Idc4gDeEJx+hTE8X
|
||||
P7QR2NVpj0JY0lHuesm4PfZ5znviv+gxH1Db+0iAVRwS1eNdQZTvbNjj2W52YGGR
|
||||
OFPPdpe/6PjBm73rNa+E7au2bqhlec0K1JO4myJ8LKQaDocPmdZNd3IExXwsIpeE
|
||||
QmKyYXIsz8hP38sPI+zWhSECgYBzJz2Ui/QEGOj2NV7T+/plBCIsnt4NJIh97aJd
|
||||
CNraTVNBdUvplbSqoOBlKxnoXCCZ3oD6V1lJWez2eEntX/w3iGdCOOCmQf3g6G1T
|
||||
3aW+rL9d1fMK2Q1D1DHDCA8OEuLZQZhdHQTXKyya3vuU1gOL1Ep2FdTDWQzVgAFm
|
||||
MwBP5wKBgC7jFtvny07N3NQN/KX758LxN043Awx7DstraYj93jDQ8xT5naiXC/8m
|
||||
YoGB9aE6v+uxllBN5QdTSdzL0vpmkLYfnLbKSq54WVOflSAvL6VjxI9o9HMFqGF2
|
||||
wcEp3pm+ub20bZBdFoxP15X3IisUGiQcrg/q4ZGHxOvJuzI9q4b0
|
||||
-----END RSA PRIVATE KEY-----
|
1
microservices/http-client-ssl-cert/certs/myRoot.srl
Normal file
1
microservices/http-client-ssl-cert/certs/myRoot.srl
Normal file
@ -0,0 +1 @@
|
||||
73771BE66A4800A9EBDEF9018EBEDCDB7701BCC8
|
@ -0,0 +1,6 @@
|
||||
authorityKeyIdentifier=keyid,issuer
|
||||
basicConstraints=CA:FALSE
|
||||
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign
|
||||
subjectAltName = @alt_names
|
||||
[alt_names]
|
||||
DNS.1 = test.example.private
|
@ -0,0 +1,12 @@
|
||||
[req]
|
||||
distinguished_name = dn
|
||||
default_bits = 2048
|
||||
prompt = no
|
||||
default_md = sha256
|
||||
[dn]
|
||||
C=DE
|
||||
ST=BW
|
||||
L=Reutlingen
|
||||
O=Source Fellows GmbH
|
||||
emailAddress=webmaster@example.private
|
||||
CN = test.example.private
|
42
microservices/http-client-ssl-cert/certs/server-chain.crt
Normal file
42
microservices/http-client-ssl-cert/certs/server-chain.crt
Normal file
@ -0,0 +1,42 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDhTCCAm2gAwIBAgIUS7TqIYrkdb2kEmtuawe8h/54VVIwDQYJKoZIhvcNAQEL
|
||||
BQAwUjELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0JhV8ODwrwxEzARBgNVBAcMClJl
|
||||
dXRsaW5nZW4xHDAaBgNVBAoME1NvdXJjZSBGZWxsb3dzIEdtYkgwHhcNMjAwNzA4
|
||||
MDM1ODE4WhcNMzAwNzA2MDM1ODE4WjBSMQswCQYDVQQGEwJERTEQMA4GA1UECAwH
|
||||
QmFXw4PCvDETMBEGA1UEBwwKUmV1dGxpbmdlbjEcMBoGA1UECgwTU291cmNlIEZl
|
||||
bGxvd3MgR21iSDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANY+x2Kr
|
||||
U49506heEh2s0Q5vTjXUbP5814pHhlJ43X3p7QYMbJ/BBunxLA3a8GvuukgD1Wxr
|
||||
0T0uHo5/MLxRh6r1TEy80IApUsyCcAO3jdTGtIr4iebnAOL/Dw0TGWDRyl5SZCwo
|
||||
BsVSOfCoJyMs+ygB+BLE+05Dq5FwA3CpxP5r67efBpY2Y9bu1iXAC179rGaVvtLM
|
||||
3Zy5G+tQ0aMJYOqVR6tvSrrYg44gJiM270u6Os80V723fPtEUvKbHQOpZoleHWsb
|
||||
uZ1FbdQBcnJ2u3bI93ewQAvqQ3tjOqgell5n7kJ1B3Vjk8bVzda1zPKH9vcvF0fc
|
||||
gXdPrVOzBCa5Su8CAwEAAaNTMFEwHQYDVR0OBBYEFO3om6AZ9q/+r6kXo7hAhOBD
|
||||
SeTbMB8GA1UdIwQYMBaAFO3om6AZ9q/+r6kXo7hAhOBDSeTbMA8GA1UdEwEB/wQF
|
||||
MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAMxKFUWYTQz/ACVY8lV18QCGxcvNj3Uz
|
||||
ZdtNUEDkxu6yKsl+1otREbuxqnfNjrGLmlLQfU/GlY+PCF85SYm1Ep4yKdZ7J+1c
|
||||
MG+PB5NS3cV7BnoJ6WnXk7KJRX+dYpCr+jQmQbtTshk6dM2a6THjyPzKkyDflcfM
|
||||
tXQROGDG9O/5DvF8Eqz13Gel5Wukept9mHtDHapU0BooFTXNqh+tPmFU76tKCQZV
|
||||
h0Qt9BC8A6bDEaULVlXpvNTuDCrCMGhiYEo2++PD/e5YT1UDVNSokanyFIUoCJAn
|
||||
X5u+VjRfaVibiWu8E63qoKv+oXBf9pwlNeE8KBlydzf5OQgx8FEkbfc=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDcDCCAlgCFHN3G+ZqSACp6975AY6+3Nt3AbzIMA0GCSqGSIb3DQEBCwUAMFIx
|
||||
CzAJBgNVBAYTAkRFMRAwDgYDVQQIDAdCYVfDg8K8MRMwEQYDVQQHDApSZXV0bGlu
|
||||
Z2VuMRwwGgYDVQQKDBNTb3VyY2UgRmVsbG93cyBHbWJIMB4XDTIwMDcwOTA0MTM0
|
||||
NloXDTMwMDcwNzA0MTM0NlowgZYxCzAJBgNVBAYTAkRFMQswCQYDVQQIDAJCVzET
|
||||
MBEGA1UEBwwKUmV1dGxpbmdlbjEcMBoGA1UECgwTU291cmNlIEZlbGxvd3MgR21i
|
||||
SDEoMCYGCSqGSIb3DQEJARYZd2VibWFzdGVyQGV4YW1wbGUucHJpdmF0ZTEdMBsG
|
||||
A1UEAwwUdGVzdC5leGFtcGxlLnByaXZhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|
||||
DwAwggEKAoIBAQDEff9ZynNlYbqjTSl77iLejkEwkZuByBwW90CSNcU4GvYnBkiJ
|
||||
phUGCV0ifZzEbs+a+AFi9n4AUeA6MUHukEd9ccVSjhg3CQVuPgShyWW1m7XFuiFw
|
||||
ms0cePzkNviwDwQvHknS1DaEVDwhjciE0PmWn2CcRVf5ZoNi39EmrYotZBvovxQv
|
||||
RoOoP8LXRj4sZDY+5hrwheOoYbAiq0pZcNY7ajHH5CXt/GXKwNucZmBiJSCqusj8
|
||||
BQgJ1ob788pu1mqojs8QAhgcRf2jkM7MKTuO5tjOrHfdN2dlcDV9k8O+dg2FwIAF
|
||||
db0Nrmy71qHrdz1o7nsx0ktyuQmcHC8GfltNAgMBAAEwDQYJKoZIhvcNAQELBQAD
|
||||
ggEBAFC2bJh1AVWBdHA6Ig6GPW0pta14foNIQTPgjZfxRZZBaHS3cTr5Shl5Dhpi
|
||||
nU48hoAZNmNaSf7Y47+UhjlQHaRWs1kGyIdYFuyujn9CxGQXmzCG/VvOHh+elwws
|
||||
HV7cR6KRMozzOo4JVc61wKgnXOlaLOkY2T26aFhMfpeZhSmZ+vxRIe7uo2UEWLNg
|
||||
nRf7DOAcQCUEtyWB8jF+Du5nKg6FnQYn9S9qzwJSCDKvNaw+TaXK1kumcrxuF9s9
|
||||
HLxYDAnKfLIqsekoeELrbMU+r0Jhpbr3oHeUa4Mm+v2I2SleWNcYLfQmCyxklJ5r
|
||||
LrQLEceRlUveswrFdPYZYVQq2gc=
|
||||
-----END CERTIFICATE-----
|
21
microservices/http-client-ssl-cert/certs/test.example.crt
Normal file
21
microservices/http-client-ssl-cert/certs/test.example.crt
Normal file
@ -0,0 +1,21 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDcDCCAlgCFHN3G+ZqSACp6975AY6+3Nt3AbzIMA0GCSqGSIb3DQEBCwUAMFIx
|
||||
CzAJBgNVBAYTAkRFMRAwDgYDVQQIDAdCYVfDg8K8MRMwEQYDVQQHDApSZXV0bGlu
|
||||
Z2VuMRwwGgYDVQQKDBNTb3VyY2UgRmVsbG93cyBHbWJIMB4XDTIwMDcwOTA0MTM0
|
||||
NloXDTMwMDcwNzA0MTM0NlowgZYxCzAJBgNVBAYTAkRFMQswCQYDVQQIDAJCVzET
|
||||
MBEGA1UEBwwKUmV1dGxpbmdlbjEcMBoGA1UECgwTU291cmNlIEZlbGxvd3MgR21i
|
||||
SDEoMCYGCSqGSIb3DQEJARYZd2VibWFzdGVyQGV4YW1wbGUucHJpdmF0ZTEdMBsG
|
||||
A1UEAwwUdGVzdC5leGFtcGxlLnByaXZhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|
||||
DwAwggEKAoIBAQDEff9ZynNlYbqjTSl77iLejkEwkZuByBwW90CSNcU4GvYnBkiJ
|
||||
phUGCV0ifZzEbs+a+AFi9n4AUeA6MUHukEd9ccVSjhg3CQVuPgShyWW1m7XFuiFw
|
||||
ms0cePzkNviwDwQvHknS1DaEVDwhjciE0PmWn2CcRVf5ZoNi39EmrYotZBvovxQv
|
||||
RoOoP8LXRj4sZDY+5hrwheOoYbAiq0pZcNY7ajHH5CXt/GXKwNucZmBiJSCqusj8
|
||||
BQgJ1ob788pu1mqojs8QAhgcRf2jkM7MKTuO5tjOrHfdN2dlcDV9k8O+dg2FwIAF
|
||||
db0Nrmy71qHrdz1o7nsx0ktyuQmcHC8GfltNAgMBAAEwDQYJKoZIhvcNAQELBQAD
|
||||
ggEBAFC2bJh1AVWBdHA6Ig6GPW0pta14foNIQTPgjZfxRZZBaHS3cTr5Shl5Dhpi
|
||||
nU48hoAZNmNaSf7Y47+UhjlQHaRWs1kGyIdYFuyujn9CxGQXmzCG/VvOHh+elwws
|
||||
HV7cR6KRMozzOo4JVc61wKgnXOlaLOkY2T26aFhMfpeZhSmZ+vxRIe7uo2UEWLNg
|
||||
nRf7DOAcQCUEtyWB8jF+Du5nKg6FnQYn9S9qzwJSCDKvNaw+TaXK1kumcrxuF9s9
|
||||
HLxYDAnKfLIqsekoeELrbMU+r0Jhpbr3oHeUa4Mm+v2I2SleWNcYLfQmCyxklJ5r
|
||||
LrQLEceRlUveswrFdPYZYVQq2gc=
|
||||
-----END CERTIFICATE-----
|
18
microservices/http-client-ssl-cert/certs/test.example.csr
Normal file
18
microservices/http-client-ssl-cert/certs/test.example.csr
Normal file
@ -0,0 +1,18 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIIC3DCCAcQCAQAwgZYxCzAJBgNVBAYTAkRFMQswCQYDVQQIDAJCVzETMBEGA1UE
|
||||
BwwKUmV1dGxpbmdlbjEcMBoGA1UECgwTU291cmNlIEZlbGxvd3MgR21iSDEoMCYG
|
||||
CSqGSIb3DQEJARYZd2VibWFzdGVyQGV4YW1wbGUucHJpdmF0ZTEdMBsGA1UEAwwU
|
||||
dGVzdC5leGFtcGxlLnByaXZhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
||||
AoIBAQDEff9ZynNlYbqjTSl77iLejkEwkZuByBwW90CSNcU4GvYnBkiJphUGCV0i
|
||||
fZzEbs+a+AFi9n4AUeA6MUHukEd9ccVSjhg3CQVuPgShyWW1m7XFuiFwms0cePzk
|
||||
NviwDwQvHknS1DaEVDwhjciE0PmWn2CcRVf5ZoNi39EmrYotZBvovxQvRoOoP8LX
|
||||
Rj4sZDY+5hrwheOoYbAiq0pZcNY7ajHH5CXt/GXKwNucZmBiJSCqusj8BQgJ1ob7
|
||||
88pu1mqojs8QAhgcRf2jkM7MKTuO5tjOrHfdN2dlcDV9k8O+dg2FwIAFdb0Nrmy7
|
||||
1qHrdz1o7nsx0ktyuQmcHC8GfltNAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEA
|
||||
l+IOqCs8V602w/GoWdxmLagVGUhSO7DOj6y3mPJirYCWwXCWWePkI9EFnW6ZW3O5
|
||||
uNCS2EkmzCOn/Py2M4R6h0+4a+eT+uZVY3gLhD4oN3uYPDoycoMHfkCYXXCNTJG1
|
||||
y3rWrvqrg7PjzEk7NOdG5dpGbdok9GVmkaXVjMn64J0PVzzyYZbM+1bxs9sq7Juj
|
||||
xzW/ZYioL/R+XBsUFeiwIiro1AlSUO1zClEMR5ePPGoEkbaMu6z1aojF51jEW+3M
|
||||
208+uZnRgycuwpcLPdThagXGblAdypYzSB6vTKN9jndsy+/gMgp/K/Ie926trJEZ
|
||||
Bmogwc3Y5xduKsqkSxWNEw==
|
||||
-----END CERTIFICATE REQUEST-----
|
28
microservices/http-client-ssl-cert/certs/test.example.key
Normal file
28
microservices/http-client-ssl-cert/certs/test.example.key
Normal file
@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDEff9ZynNlYbqj
|
||||
TSl77iLejkEwkZuByBwW90CSNcU4GvYnBkiJphUGCV0ifZzEbs+a+AFi9n4AUeA6
|
||||
MUHukEd9ccVSjhg3CQVuPgShyWW1m7XFuiFwms0cePzkNviwDwQvHknS1DaEVDwh
|
||||
jciE0PmWn2CcRVf5ZoNi39EmrYotZBvovxQvRoOoP8LXRj4sZDY+5hrwheOoYbAi
|
||||
q0pZcNY7ajHH5CXt/GXKwNucZmBiJSCqusj8BQgJ1ob788pu1mqojs8QAhgcRf2j
|
||||
kM7MKTuO5tjOrHfdN2dlcDV9k8O+dg2FwIAFdb0Nrmy71qHrdz1o7nsx0ktyuQmc
|
||||
HC8GfltNAgMBAAECggEAD4P/gOCaohvIeBKkvvN772T+Qs6Mn//kL/AQOjtiul5u
|
||||
p4A4hB4INPTSVOHkWiKB5DPHMEBUjMPqV84B7cuYyZANS8qKoPXmZuEgzoGvtVp5
|
||||
TQa4k0K2BZSMK50noAdfhjT3EV3OfD6GjQO8HLi/rKQjJdPX8Yqlv037Hvm/GnxU
|
||||
we4ozN6AbrfUAff5VLU/S8BcKjzlklHHAnRpFzD+Wz4w7woKNDUOjHH1WI6HWoSR
|
||||
Pupab/IYhldiXNrB6hCuco+I58DENY1cYQ2X24k/XExRDebpUwZXrGSIxQ7lxCKh
|
||||
tc+x/QyJMqu2t4kKSvgBXTeb+g3PfSmfdZnIrAnTQQKBgQDozUzLhCPb3NzeiHG8
|
||||
Kd3J14+QttpT2x15qo3hn2jp5pBQmY07s75AiuBX4MKZ01rMFHUd+DpcJ7NOEC5X
|
||||
dPJJ4jJEdwee26NSKk+MnWliiQgzThw1rL/9Nq9Wh7bZxMG/R5Q4ED0FRQWCPW3h
|
||||
MwAEN6CRALaj94NOJUNEjUzFPQKBgQDYEnJ+vHvhwsQPzQaBez/U4aQ1tA1rh9hB
|
||||
iecddIX91OXw8znQvSxZUKvXQov8U+03rGeJXIMRLGT7EsvK4/8czi2r7NgLnUMM
|
||||
6AQ3/FXwylNTUvSFLEcypHp4FfwJ1OFHvZWCvT8i+Ni7onvbL5JEKeKoRE/3E91N
|
||||
FrfCKlDvUQKBgCwsAB1BhlhKUPI8a3ArdXS93PS1bTmqAq66KM+dopd28v0IFZ81
|
||||
XKz8bNLfx6zOSJUecJZuKgygT8pJEbHwc6SHMciB2UVQIW4OrydcGsnifFbXxEx+
|
||||
6bLO9HfzqkMprSVxHHOCyUE9tmze4QFw3tjuAR5iR0VXSmfCdEAGm4F1AoGAbf1N
|
||||
/UfTRAQSK/zxL95eiu5l2dSS9EcNhac+V9cmEiVa+8HEj4aM2dZf807z1XmfirSf
|
||||
a+QE8CwKJ2jVBq3zAmXOB/Ojsp3WMO62nw07bjyAGC1lPZlhkNz7Xr/KMfMEzrEq
|
||||
N4hAaHwGT9WReO0JZttvfrpvflXFVGWZGyTRWFECgYEA1UGQB/+I4WanfaP7aTRn
|
||||
hVPdf62wePlm2hDCg5DI7OSRxFbIq7aah516QG1w0JiEEnbTEYF0IAMvJT2SuDsS
|
||||
45UNe0myHb4jDI6kqPXef4EmJhhO92GsMfgocsl9HYb+ElSiSWWUFj1G3pnBdXyu
|
||||
KTrAWWyykNup7GJd4un8dNc=
|
||||
-----END PRIVATE KEY-----
|
28
microservices/http-client-ssl-cert/certs/user-cert.conf
Normal file
28
microservices/http-client-ssl-cert/certs/user-cert.conf
Normal file
@ -0,0 +1,28 @@
|
||||
authorityKeyIdentifier=keyid,issuer
|
||||
basicConstraints=CA:FALSE
|
||||
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
|
||||
default_days = 365
|
||||
[ca]
|
||||
default_ca = CA_default
|
||||
[ CA_default ]
|
||||
dir = ca
|
||||
certs = $dir/certsdb
|
||||
new_certs_dir = $certs
|
||||
database = $dir/index.txt
|
||||
certificate = $dir/cacert.pem
|
||||
private_key = $dir/private/cakey.pem
|
||||
serial = $dir/serial
|
||||
crldir = $dir/crl
|
||||
crlnumber = $dir/crlnumber
|
||||
crl = $crldir/crl.pem
|
||||
RANDFILE = $dir/private/.rand
|
||||
default_md = sha1
|
||||
policy = policy_match
|
||||
[ policy_match ]
|
||||
countryName = match
|
||||
stateOrProvinceName = match
|
||||
localityName = supplied
|
||||
organizationName = match
|
||||
organizationalUnitName = optional
|
||||
commonName = supplied
|
||||
emailAddress = optional
|
@ -0,0 +1,12 @@
|
||||
[req]
|
||||
distinguished_name = dn
|
||||
default_bits = 2048
|
||||
prompt = no
|
||||
default_md = sha256
|
||||
[dn]
|
||||
C=DE
|
||||
ST=BW
|
||||
L=Reutlingen
|
||||
O=Source Fellows GmbH
|
||||
emailAddress=user@example.private
|
||||
CN = test.example.private
|
BIN
microservices/http-client-ssl-cert/certs/user-client.p12
Normal file
BIN
microservices/http-client-ssl-cert/certs/user-client.p12
Normal file
Binary file not shown.
71
microservices/http-client-ssl-cert/certs/user.crt
Normal file
71
microservices/http-client-ssl-cert/certs/user.crt
Normal file
@ -0,0 +1,71 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 1 (0x0)
|
||||
Serial Number: 1 (0x1)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer: C=DE, ST=BW, L=Reutlingen, O=Source Fellows GmbH/emailAddress=webmaster@example.private, CN=test.example.private
|
||||
Validity
|
||||
Not Before: Jul 9 04:15:47 2020 GMT
|
||||
Not After : Jul 9 04:15:47 2021 GMT
|
||||
Subject: C=DE, ST=BW, L=Reutlingen, O=Source Fellows GmbH, CN=test.example.private/emailAddress=user@example.private
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public-Key: (2048 bit)
|
||||
Modulus:
|
||||
00:e3:a9:b6:c5:35:06:6d:12:ee:e7:ee:60:89:49:
|
||||
2a:ac:b2:be:3d:f7:c5:4d:55:08:fc:80:43:aa:fd:
|
||||
05:6c:43:94:a5:02:c9:1f:fc:70:c4:44:85:5a:b8:
|
||||
f9:95:f8:8a:5c:2e:12:55:43:23:f2:d0:34:c3:a4:
|
||||
41:89:14:a9:d1:19:d4:0d:d0:58:87:38:9f:6c:1d:
|
||||
89:2d:23:60:8f:9e:af:f4:5a:f0:d0:a4:fd:4a:49:
|
||||
9b:19:df:97:20:db:80:7b:ee:f2:ba:e7:9a:b4:3c:
|
||||
48:74:9c:57:61:0b:4e:ee:eb:53:5d:ca:3d:9e:f3:
|
||||
d2:d5:1a:f7:7a:34:1d:09:73:44:1c:af:3d:31:72:
|
||||
90:e9:43:0b:b3:c9:30:58:21:df:27:5b:39:42:85:
|
||||
f1:ec:d9:1c:89:38:64:92:d6:da:f9:22:c1:e9:b5:
|
||||
22:bf:3a:32:10:f9:e3:e6:b3:73:1d:d2:7e:a9:a6:
|
||||
27:86:83:8c:7e:9d:4f:39:d0:53:45:0b:f7:89:8b:
|
||||
f2:8c:43:44:42:a9:4a:81:83:60:bb:1f:63:f5:75:
|
||||
fa:73:3b:85:c9:62:7d:1d:8a:61:4c:3c:f9:23:a3:
|
||||
3d:97:78:6f:6d:13:db:88:79:fb:89:0b:3e:a6:50:
|
||||
b8:72:9a:c8:d3:7b:d2:ec:6c:15:3d:ab:f7:8b:c8:
|
||||
50:9b
|
||||
Exponent: 65537 (0x10001)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
95:b9:66:f0:95:05:82:2c:9b:f6:85:ea:68:7c:ae:18:b5:d1:
|
||||
12:10:22:2f:2f:1f:5f:d8:15:b6:b3:87:4a:dc:b1:1c:1d:c3:
|
||||
8c:80:2f:cb:d2:bd:36:35:53:27:20:c0:b8:5f:58:92:8e:60:
|
||||
2a:01:f1:08:38:d0:97:6f:4f:a1:57:17:e7:b9:fc:e1:67:7a:
|
||||
97:1b:b3:e1:36:26:06:b2:32:9d:5a:12:4b:2d:b7:0b:8b:c8:
|
||||
09:bc:5c:b1:8f:f8:42:24:97:10:6d:6a:eb:82:99:0a:bf:e8:
|
||||
fe:9c:1d:52:f2:2d:78:18:a4:9f:33:27:88:54:86:09:11:0e:
|
||||
fd:d5:5c:0d:65:c4:78:bd:cc:2f:34:59:e0:13:e8:02:ed:98:
|
||||
c4:9e:7f:5e:f7:9b:18:d1:c6:76:eb:1b:dc:76:6a:a6:ab:f3:
|
||||
b5:8f:b5:0a:ad:cf:07:d5:cf:6c:69:ae:0c:f5:dc:f2:b2:11:
|
||||
2b:b2:b6:a5:b5:63:6b:1f:0d:7b:cd:07:81:59:40:5e:12:c9:
|
||||
41:73:cf:08:87:3c:ab:38:51:27:c2:ad:c6:57:20:dc:bd:fe:
|
||||
cf:ea:b5:37:29:be:c1:f4:9b:61:ad:a3:f8:5c:d7:7b:65:2e:
|
||||
80:f9:6b:dd:42:a8:62:ae:52:0d:95:f7:67:04:10:b9:97:24:
|
||||
48:33:fb:22
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDnTCCAoUCAQEwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNVBAYTAkRFMQswCQYD
|
||||
VQQIDAJCVzETMBEGA1UEBwwKUmV1dGxpbmdlbjEcMBoGA1UECgwTU291cmNlIEZl
|
||||
bGxvd3MgR21iSDEoMCYGCSqGSIb3DQEJARYZd2VibWFzdGVyQGV4YW1wbGUucHJp
|
||||
dmF0ZTEdMBsGA1UEAwwUdGVzdC5leGFtcGxlLnByaXZhdGUwHhcNMjAwNzA5MDQx
|
||||
NTQ3WhcNMjEwNzA5MDQxNTQ3WjCBkTELMAkGA1UEBhMCREUxCzAJBgNVBAgMAkJX
|
||||
MRMwEQYDVQQHDApSZXV0bGluZ2VuMRwwGgYDVQQKDBNTb3VyY2UgRmVsbG93cyBH
|
||||
bWJIMR0wGwYDVQQDDBR0ZXN0LmV4YW1wbGUucHJpdmF0ZTEjMCEGCSqGSIb3DQEJ
|
||||
ARYUdXNlckBleGFtcGxlLnByaXZhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
||||
ggEKAoIBAQDjqbbFNQZtEu7n7mCJSSqssr4998VNVQj8gEOq/QVsQ5SlAskf/HDE
|
||||
RIVauPmV+IpcLhJVQyPy0DTDpEGJFKnRGdQN0FiHOJ9sHYktI2CPnq/0WvDQpP1K
|
||||
SZsZ35cg24B77vK655q0PEh0nFdhC07u61Ndyj2e89LVGvd6NB0Jc0Qcrz0xcpDp
|
||||
QwuzyTBYId8nWzlChfHs2RyJOGSS1tr5IsHptSK/OjIQ+ePms3Md0n6ppieGg4x+
|
||||
nU850FNFC/eJi/KMQ0RCqUqBg2C7H2P1dfpzO4XJYn0dimFMPPkjoz2XeG9tE9uI
|
||||
efuJCz6mULhymsjTe9LsbBU9q/eLyFCbAgMBAAEwDQYJKoZIhvcNAQEFBQADggEB
|
||||
AJW5ZvCVBYIsm/aF6mh8rhi10RIQIi8vH1/YFbazh0rcsRwdw4yAL8vSvTY1Uycg
|
||||
wLhfWJKOYCoB8Qg40JdvT6FXF+e5/OFnepcbs+E2JgayMp1aEksttwuLyAm8XLGP
|
||||
+EIklxBtauuCmQq/6P6cHVLyLXgYpJ8zJ4hUhgkRDv3VXA1lxHi9zC80WeAT6ALt
|
||||
mMSef173mxjRxnbrG9x2aqar87WPtQqtzwfVz2xprgz13PKyESuytqW1Y2sfDXvN
|
||||
B4FZQF4SyUFzzwiHPKs4USfCrcZXINy9/s/qtTcpvsH0m2Gto/hc13tlLoD5a91C
|
||||
qGKuUg2V92cEELmXJEgz+yI=
|
||||
-----END CERTIFICATE-----
|
27
microservices/http-client-ssl-cert/certs/user.key
Normal file
27
microservices/http-client-ssl-cert/certs/user.key
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEA46m2xTUGbRLu5+5giUkqrLK+PffFTVUI/IBDqv0FbEOUpQLJ
|
||||
H/xwxESFWrj5lfiKXC4SVUMj8tA0w6RBiRSp0RnUDdBYhzifbB2JLSNgj56v9Frw
|
||||
0KT9SkmbGd+XINuAe+7yuueatDxIdJxXYQtO7utTXco9nvPS1Rr3ejQdCXNEHK89
|
||||
MXKQ6UMLs8kwWCHfJ1s5QoXx7NkciThkktba+SLB6bUivzoyEPnj5rNzHdJ+qaYn
|
||||
hoOMfp1POdBTRQv3iYvyjENEQqlKgYNgux9j9XX6czuFyWJ9HYphTDz5I6M9l3hv
|
||||
bRPbiHn7iQs+plC4cprI03vS7GwVPav3i8hQmwIDAQABAoIBAQDjJvzT+7ozroZt
|
||||
J61ujXBk69thnQxhwoy604ew3dBBW5S+p+7hWVFyoyOjh5iQCHKU0us740fFB/T9
|
||||
l7BEBDgECI9KUS1jjh2TFE1AmmHIKv9JAkvxAg4vxw1YXX0/LYQfJCVQU7JKTzPE
|
||||
FhIhI9VYEbkWhanCJWmhc8ylQ8YNG/FU9DYl2qR4GpgEEmyX3EErG/30PBEKRVBl
|
||||
k51/cz8vT3fN/bzXjX6+wkG41/+71o879Jh47wI9WY38ZUtqIGWZZaenCNubhHQx
|
||||
/5dvFvidwkeueXmwgssBKLdsP1cBxpu/7eN4PsiY+n7RDPVgcnE/PQvTindDOA5w
|
||||
vFJ2gZQxAoGBAPgMK2ZV23zMb0JxSfk+pxT2FJZP1MKI0IkdgB6c+rJWEnjV857q
|
||||
KeHf37uSEx/4EeAX+E9LFaNgpv48XmJXZtZ9hjOvhvwyDdCEwXsFStH6yulHcxlH
|
||||
Ri7iVeEOeBPhRXEhM4jOebw8Kqqp2so170Cc/kDZOx/383/e02FxEAg9AoGBAOr2
|
||||
PU+IWNBHZP/1BpekQRZBSpwmlsML5/YnIyXWeYO+d0Kwp3Qi0lKKL/ZI+/bVRGyq
|
||||
tEl6fGQzzPoT7XuTS8pey7K1HSyunYdx+vbS6L/ID07mO5oIFjtAbcJQfM7kfqWr
|
||||
m662lYvYdCYVPYF0ZfCw20ayb3LQNJTtzVp/5fG3AoGAapyQasOsOs+DYoNe0Anl
|
||||
tlSuNIzLXXGAb+6GCqJd/hiQh+8tbrgmmDao6u212p+8zxx+VVZoTnhUTiGUT6BR
|
||||
Sw9Yhw6CbhL1bRIiNsXniqjIXcuf5NWFjNErKDgX1DOWrTEf/UUBfa4+iGvI5fCY
|
||||
jKTtguHbT7o6plMXd2IpCeECgYEAjqWoW1y/7tMpcmvj8LR7/3LsRRj4droHvd3M
|
||||
7O/lHiLIbOirAUsSvaG/tJpivlyECiUpB2MhmgQI8dqfV2L5pIcgzAJBEBuC7/Q3
|
||||
FRq+y5A+GvyUOtOmC5r2B/6thz4Z1aL2BYA8Eob7HRPQH4P3T8VPmwBBwUa+ZZxq
|
||||
DAOSKskCgYAWCldfjkOgynFHjqQ3HXDtSRLMrgVEj/+Muy6yCu7Lk+lhOsrflK82
|
||||
1rMH+O8Z2RxFIA6KuzHZbUXexNzmibsEIWBZU5X14QrLkX1Gq9mCwLv8cSMDqKz+
|
||||
qNLcMrEDqSmdPkPppVsJbz44QvFItVWYsPAWS4cyN62X6IJ2lDPjNw==
|
||||
-----END RSA PRIVATE KEY-----
|
18
microservices/http-client-ssl-cert/certs/user.req
Normal file
18
microservices/http-client-ssl-cert/certs/user.req
Normal file
@ -0,0 +1,18 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIIC1zCCAb8CAQAwgZExCzAJBgNVBAYTAkRFMQswCQYDVQQIDAJCVzETMBEGA1UE
|
||||
BwwKUmV1dGxpbmdlbjEcMBoGA1UECgwTU291cmNlIEZlbGxvd3MgR21iSDEjMCEG
|
||||
CSqGSIb3DQEJARYUdXNlckBleGFtcGxlLnByaXZhdGUxHTAbBgNVBAMMFHRlc3Qu
|
||||
ZXhhbXBsZS5wcml2YXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
||||
46m2xTUGbRLu5+5giUkqrLK+PffFTVUI/IBDqv0FbEOUpQLJH/xwxESFWrj5lfiK
|
||||
XC4SVUMj8tA0w6RBiRSp0RnUDdBYhzifbB2JLSNgj56v9Frw0KT9SkmbGd+XINuA
|
||||
e+7yuueatDxIdJxXYQtO7utTXco9nvPS1Rr3ejQdCXNEHK89MXKQ6UMLs8kwWCHf
|
||||
J1s5QoXx7NkciThkktba+SLB6bUivzoyEPnj5rNzHdJ+qaYnhoOMfp1POdBTRQv3
|
||||
iYvyjENEQqlKgYNgux9j9XX6czuFyWJ9HYphTDz5I6M9l3hvbRPbiHn7iQs+plC4
|
||||
cprI03vS7GwVPav3i8hQmwIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAJ2ZHvrq
|
||||
QE8yoiOSb+itUtWLo86T+qbSwHLy9Ned0wtu1XiL7ltJATyRwMbv1RduGcfYWBcx
|
||||
ZcUAcqYhsuSTM3MPg0MQvAFrLRwonq+TN6zq0K7RvZ5FSCizzcyThJIRcCtUNd0y
|
||||
heqknhsvnkIwSQCb4RPF3/57FXct1FNEHEKMtldWEHCkKbJnUtt9Z/4WEkmTCvzi
|
||||
EYwcwoK6QsmJOIwQXzOYniaPf2k8oeBLu81sq5GG5vRZvs9dFX6HQmfQ28oKeMCy
|
||||
8n6XGHPudNybKBykvYzRKbChVl6LiFdz1f95x5JSh+aJx8Ca8mq5NpFK0TJEzQWv
|
||||
NUvFSnG7X4w6JJg=
|
||||
-----END CERTIFICATE REQUEST-----
|
31
microservices/http-client-ssl-cert/main.go
Normal file
31
microservices/http-client-ssl-cert/main.go
Normal file
@ -0,0 +1,31 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"crypto/x509"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func main() {
|
||||
certPool := x509.NewCertPool()
|
||||
crt, _ := ioutil.ReadFile("./certs/myRoot.crt")
|
||||
certPool.AppendCertsFromPEM(crt)
|
||||
keyPair, _ := tls.LoadX509KeyPair("./certs/user.crt", "./certs/user.key")
|
||||
clientCerts := []tls.Certificate{keyPair}
|
||||
tlsConfig := &tls.Config{
|
||||
RootCAs: certPool,
|
||||
Certificates: clientCerts,
|
||||
}
|
||||
transport := &http.Transport{
|
||||
TLSClientConfig: tlsConfig,
|
||||
}
|
||||
client := http.Client{Transport: transport}
|
||||
res, err := client.Get("https://test.example.private:8443")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
bites, err := ioutil.ReadAll(res.Body)
|
||||
fmt.Printf("response is: %v", string(bites))
|
||||
}
|
18
microservices/http-client/main.go
Normal file
18
microservices/http-client/main.go
Normal file
@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func main() {
|
||||
res, err := http.Get("https://google.com")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer res.Body.Close()
|
||||
fmt.Println(res.Status)
|
||||
bites, _ := ioutil.ReadAll(res.Body)
|
||||
fmt.Println(string(bites))
|
||||
}
|
16
microservices/http-metod-matching/main.go
Normal file
16
microservices/http-metod-matching/main.go
Normal file
@ -0,0 +1,16 @@
|
||||
package main
|
||||
|
||||
import "net/http"
|
||||
|
||||
func myHandler(res http.ResponseWriter, req *http.Request) {
|
||||
if req.Method == http.MethodGet {
|
||||
res.Write([]byte("Hello World"))
|
||||
} else {
|
||||
res.WriteHeader(http.StatusMethodNotAllowed)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
http.HandleFunc("/", myHandler)
|
||||
http.ListenAndServe(":8080", nil)
|
||||
}
|
8
microservices/http-ratelimit/go.mod
Normal file
8
microservices/http-ratelimit/go.mod
Normal file
@ -0,0 +1,8 @@
|
||||
module golang.source-fellows.com/samples/ratelimit
|
||||
|
||||
go 1.14
|
||||
|
||||
require (
|
||||
github.com/go-redis/redis/v7 v7.4.0
|
||||
github.com/ulule/limiter/v3 v3.5.0
|
||||
)
|
65
microservices/http-ratelimit/go.sum
Normal file
65
microservices/http-ratelimit/go.sum
Normal file
@ -0,0 +1,65 @@
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
||||
github.com/gin-gonic/gin v1.6.2/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
|
||||
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
|
||||
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
|
||||
github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
|
||||
github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI=
|
||||
github.com/go-redis/redis/v7 v7.2.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg=
|
||||
github.com/go-redis/redis/v7 v7.4.0 h1:7obg6wUoj05T0EpY0o8B59S9w5yeMWql7sw2kwNW1x4=
|
||||
github.com/go-redis/redis/v7 v7.4.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||
github.com/klauspost/compress v1.9.6/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
|
||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
|
||||
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
|
||||
github.com/ulule/limiter/v3 v3.5.0 h1:QRAebbswjlezHIfiSQgM8+jMxaz/zsrxGRuiUJ43MHo=
|
||||
github.com/ulule/limiter/v3 v3.5.0/go.mod h1:TgOUQZKZ2KHjemqrC8UHUbKPqpTmSY43/2wbQ7YN1h8=
|
||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||
github.com/valyala/fasthttp v1.9.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w=
|
||||
github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
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/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
42
microservices/http-ratelimit/main.go
Normal file
42
microservices/http-ratelimit/main.go
Normal file
@ -0,0 +1,42 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
libredis "github.com/go-redis/redis/v7"
|
||||
"github.com/ulule/limiter/v3"
|
||||
"github.com/ulule/limiter/v3/drivers/middleware/stdlib"
|
||||
"github.com/ulule/limiter/v3/drivers/store/redis"
|
||||
)
|
||||
|
||||
func handleRequest(res http.ResponseWriter, req *http.Request) {
|
||||
res.Write([]byte("Hello World!"))
|
||||
}
|
||||
|
||||
func rateLimitMiddleWare(handler http.HandlerFunc) http.Handler {
|
||||
rate, err := limiter.NewRateFromFormatted("4-S")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
// Redis Client anlegen
|
||||
option, err := libredis.ParseURL("redis://localhost:6379/0")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
client := libredis.NewClient(option)
|
||||
// Store mit Redis konfigurieren
|
||||
store, err := redis.NewStoreWithOptions(client, limiter.StoreOptions{
|
||||
Prefix: "limiter_http_example",
|
||||
MaxRetry: 3,
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
middleware := stdlib.NewMiddleware(limiter.New(store, rate, limiter.WithTrustForwardHeader(true)))
|
||||
return middleware.Handler(handler)
|
||||
}
|
||||
|
||||
func main() {
|
||||
http.Handle("/", rateLimitMiddleWare(http.HandlerFunc(handleRequest)))
|
||||
http.ListenAndServe(":8080", nil)
|
||||
}
|
3
microservices/http-registration/go.mod
Normal file
3
microservices/http-registration/go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module golang.source-fellows.com/samples/httpregistration
|
||||
|
||||
go 1.13
|
21
microservices/http-registration/main.go
Normal file
21
microservices/http-registration/main.go
Normal file
@ -0,0 +1,21 @@
|
||||
package main
|
||||
|
||||
import "net/http"
|
||||
|
||||
type MyHandler struct{}
|
||||
|
||||
func (mh *MyHandler) ServeHTTP(writer http.ResponseWriter, req *http.Request) {
|
||||
writer.Write([]byte("Hello World (from ServeHTTP)"))
|
||||
}
|
||||
|
||||
func handleHttp(res http.ResponseWriter, req *http.Request) {
|
||||
res.Write([]byte("Hello World (from handleHttp)"))
|
||||
}
|
||||
|
||||
func main() {
|
||||
//Anmeldung der HandlerFunc Implementierung
|
||||
http.HandleFunc("/func", handleHttp)
|
||||
//Anmeldung der Handler Interface Implementierung
|
||||
http.Handle("/handler", &MyHandler{})
|
||||
http.ListenAndServe(":8080", &MyHandler{})
|
||||
}
|
5
microservices/http-retry/client/go.mod
Normal file
5
microservices/http-retry/client/go.mod
Normal file
@ -0,0 +1,5 @@
|
||||
module golang.source-fellows.com/samples/rfc7808/server
|
||||
|
||||
go 1.13
|
||||
|
||||
require github.com/hashicorp/go-retryablehttp v0.6.6
|
8
microservices/http-retry/client/go.sum
Normal file
8
microservices/http-retry/client/go.sum
Normal file
@ -0,0 +1,8 @@
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM=
|
||||
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
|
||||
github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
|
||||
github.com/hashicorp/go-retryablehttp v0.6.6 h1:HJunrbHTDDbBb/ay4kxa1n+dLmttUlnP3V9oNE4hmsM=
|
||||
github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
21
microservices/http-retry/client/main.go
Normal file
21
microservices/http-retry/client/main.go
Normal file
@ -0,0 +1,21 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/hashicorp/go-retryablehttp"
|
||||
)
|
||||
|
||||
func main() {
|
||||
retryClient := retryablehttp.NewClient()
|
||||
retryClient.RetryMax = 10
|
||||
|
||||
standardClient := retryClient.StandardClient()
|
||||
|
||||
res, err := standardClient.Get("http://localhost:8080/")
|
||||
if err != nil {
|
||||
log.Fatal("could not request")
|
||||
}
|
||||
defer res.Body.Close()
|
||||
log.Println(res.Status)
|
||||
}
|
3
microservices/http-retry/server/go.mod
Normal file
3
microservices/http-retry/server/go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module golang.source-fellows.com/samples/httpretry/server
|
||||
|
||||
go 1.13
|
0
microservices/http-retry/server/go.sum
Normal file
0
microservices/http-retry/server/go.sum
Normal file
26
microservices/http-retry/server/main.go
Normal file
26
microservices/http-retry/server/main.go
Normal file
@ -0,0 +1,26 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var count int = 0
|
||||
|
||||
func handleHttp(res http.ResponseWriter, req *http.Request) {
|
||||
|
||||
responseStatus := http.StatusInternalServerError
|
||||
if count%4 == 0 {
|
||||
responseStatus = http.StatusOK
|
||||
}
|
||||
fmt.Printf("will return %v\n", responseStatus)
|
||||
res.WriteHeader(responseStatus)
|
||||
|
||||
count++
|
||||
|
||||
}
|
||||
|
||||
func main() {
|
||||
http.HandleFunc("/", handleHttp)
|
||||
http.ListenAndServe(":8080", nil)
|
||||
}
|
16
microservices/httpsserver/README.md
Normal file
16
microservices/httpsserver/README.md
Normal file
@ -0,0 +1,16 @@
|
||||
Zertifikate erstellen
|
||||
=====================
|
||||
|
||||
- Root Zertifikat erstellen:
|
||||
```
|
||||
openssl genrsa -out myRoot.key 2048
|
||||
openssl req -x509 -new -nodes -key myRoot.key -sha256 -days 3650 -out myRoot.crt
|
||||
```
|
||||
|
||||
- Zertifikat für Server erstellen:
|
||||
```
|
||||
#CSR erstellen
|
||||
openssl req -new -sha256 -nodes -out test.example.csr -newkey rsa:2048 -keyout test.example.key -config server-cert.request.conf
|
||||
|
||||
openssl x509 -req -in test.example.csr -CA myRoot.crt -CAkey myRoot.key -CAcreateserial -extfile test.example.ext.cnf -out test.example.crt -days 3650 -sha256
|
||||
```
|
21
microservices/httpsserver/certs/myRoot.crt
Normal file
21
microservices/httpsserver/certs/myRoot.crt
Normal file
@ -0,0 +1,21 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDhTCCAm2gAwIBAgIUS7TqIYrkdb2kEmtuawe8h/54VVIwDQYJKoZIhvcNAQEL
|
||||
BQAwUjELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0JhV8ODwrwxEzARBgNVBAcMClJl
|
||||
dXRsaW5nZW4xHDAaBgNVBAoME1NvdXJjZSBGZWxsb3dzIEdtYkgwHhcNMjAwNzA4
|
||||
MDM1ODE4WhcNMzAwNzA2MDM1ODE4WjBSMQswCQYDVQQGEwJERTEQMA4GA1UECAwH
|
||||
QmFXw4PCvDETMBEGA1UEBwwKUmV1dGxpbmdlbjEcMBoGA1UECgwTU291cmNlIEZl
|
||||
bGxvd3MgR21iSDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANY+x2Kr
|
||||
U49506heEh2s0Q5vTjXUbP5814pHhlJ43X3p7QYMbJ/BBunxLA3a8GvuukgD1Wxr
|
||||
0T0uHo5/MLxRh6r1TEy80IApUsyCcAO3jdTGtIr4iebnAOL/Dw0TGWDRyl5SZCwo
|
||||
BsVSOfCoJyMs+ygB+BLE+05Dq5FwA3CpxP5r67efBpY2Y9bu1iXAC179rGaVvtLM
|
||||
3Zy5G+tQ0aMJYOqVR6tvSrrYg44gJiM270u6Os80V723fPtEUvKbHQOpZoleHWsb
|
||||
uZ1FbdQBcnJ2u3bI93ewQAvqQ3tjOqgell5n7kJ1B3Vjk8bVzda1zPKH9vcvF0fc
|
||||
gXdPrVOzBCa5Su8CAwEAAaNTMFEwHQYDVR0OBBYEFO3om6AZ9q/+r6kXo7hAhOBD
|
||||
SeTbMB8GA1UdIwQYMBaAFO3om6AZ9q/+r6kXo7hAhOBDSeTbMA8GA1UdEwEB/wQF
|
||||
MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAMxKFUWYTQz/ACVY8lV18QCGxcvNj3Uz
|
||||
ZdtNUEDkxu6yKsl+1otREbuxqnfNjrGLmlLQfU/GlY+PCF85SYm1Ep4yKdZ7J+1c
|
||||
MG+PB5NS3cV7BnoJ6WnXk7KJRX+dYpCr+jQmQbtTshk6dM2a6THjyPzKkyDflcfM
|
||||
tXQROGDG9O/5DvF8Eqz13Gel5Wukept9mHtDHapU0BooFTXNqh+tPmFU76tKCQZV
|
||||
h0Qt9BC8A6bDEaULVlXpvNTuDCrCMGhiYEo2++PD/e5YT1UDVNSokanyFIUoCJAn
|
||||
X5u+VjRfaVibiWu8E63qoKv+oXBf9pwlNeE8KBlydzf5OQgx8FEkbfc=
|
||||
-----END CERTIFICATE-----
|
27
microservices/httpsserver/certs/myRoot.key
Normal file
27
microservices/httpsserver/certs/myRoot.key
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEA1j7HYqtTj3nTqF4SHazRDm9ONdRs/nzXikeGUnjdfentBgxs
|
||||
n8EG6fEsDdrwa+66SAPVbGvRPS4ejn8wvFGHqvVMTLzQgClSzIJwA7eN1Ma0iviJ
|
||||
5ucA4v8PDRMZYNHKXlJkLCgGxVI58KgnIyz7KAH4EsT7TkOrkXADcKnE/mvrt58G
|
||||
ljZj1u7WJcALXv2sZpW+0szdnLkb61DRowlg6pVHq29KutiDjiAmIzbvS7o6zzRX
|
||||
vbd8+0RS8psdA6lmiV4daxu5nUVt1AFycna7dsj3d7BAC+pDe2M6qB6WXmfuQnUH
|
||||
dWOTxtXN1rXM8of29y8XR9yBd0+tU7MEJrlK7wIDAQABAoIBAQC0GzaWthybAvly
|
||||
ExL7q2pbzipbimbOUbkI4DQFZOIelebSLOOsMSNUy5ATXbi7o4cqPz7N1J2j5v99
|
||||
H2OjDI8WovwvjpNhClw23Hi6RzaOZzUjluinGg9exLisbx/oirSrMmxPyp5Wh1d5
|
||||
/oJYSdohufYIIVx6YNz8eMQLlEys7BcAs9uDbfrEh2lhSCRd+eVER/p2U+EE3YFe
|
||||
OPhE7S7/5fDHidA/vU5YL0zyDcTiqec8lF3b63L39zYsckUjvbJ9gXru+RUFsnYT
|
||||
FCz/8axvSyiRj9M162BtrwV1lANgbck+unmk9j63bMaNUFHdlFxovxZDA4C6napJ
|
||||
+5dnwduBAoGBAO3UqDRxSWvelTv5vSFWaiJoFKU23PGX46Fsy+b8ttj+8Jz94333
|
||||
u+1t5fEnpS46QhQtiVRB42pezBncJ+CdjQ92ikcJZL7o8NYttlmTVg2i/v+dnxmL
|
||||
T+Tgl89VUOgfKdlRwpgG64dMT1HFQJlMKkKMzdS6FxQtSclYSq0yYVxhAoGBAOac
|
||||
2ijcy0xlhDinsmikxBveaxl8pTeF0jmLlXmNRTuSXkk9tXi5yurV+e4M9oG7pvYU
|
||||
4LUthIvtbmPgDhANN5+45bJqNWw3ovaLb0/60XsET4fiR8W0muXMHcBySpFQsvRm
|
||||
/daw41S+f4rv2XqyaLLbwmgPiusGlJMDENQQCmlPAoGASPA2Idc4gDeEJx+hTE8X
|
||||
P7QR2NVpj0JY0lHuesm4PfZ5znviv+gxH1Db+0iAVRwS1eNdQZTvbNjj2W52YGGR
|
||||
OFPPdpe/6PjBm73rNa+E7au2bqhlec0K1JO4myJ8LKQaDocPmdZNd3IExXwsIpeE
|
||||
QmKyYXIsz8hP38sPI+zWhSECgYBzJz2Ui/QEGOj2NV7T+/plBCIsnt4NJIh97aJd
|
||||
CNraTVNBdUvplbSqoOBlKxnoXCCZ3oD6V1lJWez2eEntX/w3iGdCOOCmQf3g6G1T
|
||||
3aW+rL9d1fMK2Q1D1DHDCA8OEuLZQZhdHQTXKyya3vuU1gOL1Ep2FdTDWQzVgAFm
|
||||
MwBP5wKBgC7jFtvny07N3NQN/KX758LxN043Awx7DstraYj93jDQ8xT5naiXC/8m
|
||||
YoGB9aE6v+uxllBN5QdTSdzL0vpmkLYfnLbKSq54WVOflSAvL6VjxI9o9HMFqGF2
|
||||
wcEp3pm+ub20bZBdFoxP15X3IisUGiQcrg/q4ZGHxOvJuzI9q4b0
|
||||
-----END RSA PRIVATE KEY-----
|
1
microservices/httpsserver/certs/myRoot.srl
Normal file
1
microservices/httpsserver/certs/myRoot.srl
Normal file
@ -0,0 +1 @@
|
||||
73771BE66A4800A9EBDEF9018EBEDCDB7701BCC7
|
6
microservices/httpsserver/certs/server-cert.conf
Normal file
6
microservices/httpsserver/certs/server-cert.conf
Normal file
@ -0,0 +1,6 @@
|
||||
authorityKeyIdentifier=keyid,issuer
|
||||
basicConstraints=CA:FALSE
|
||||
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
|
||||
subjectAltName = @alt_names
|
||||
[alt_names]
|
||||
DNS.1 = test.example.private
|
12
microservices/httpsserver/certs/server-cert.request.conf
Normal file
12
microservices/httpsserver/certs/server-cert.request.conf
Normal file
@ -0,0 +1,12 @@
|
||||
[req]
|
||||
distinguished_name = dn
|
||||
default_bits = 2048
|
||||
prompt = no
|
||||
default_md = sha256
|
||||
[dn]
|
||||
C=DE
|
||||
ST=BW
|
||||
L=Reutlingen
|
||||
O=Source Fellows GmbH
|
||||
emailAddress=webmaster@example.private
|
||||
CN = test.example.private
|
23
microservices/httpsserver/certs/test.example.crt
Normal file
23
microservices/httpsserver/certs/test.example.crt
Normal file
@ -0,0 +1,23 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIID0zCCArugAwIBAgIUc3cb5mpIAKnr3vkBjr7c23cBvMcwDQYJKoZIhvcNAQEL
|
||||
BQAwUjELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0JhV8ODwrwxEzARBgNVBAcMClJl
|
||||
dXRsaW5nZW4xHDAaBgNVBAoME1NvdXJjZSBGZWxsb3dzIEdtYkgwHhcNMjAwNzA4
|
||||
MDQwNzA0WhcNMzAwNzA2MDQwNzA0WjCBljELMAkGA1UEBhMCREUxCzAJBgNVBAgM
|
||||
AkJXMRMwEQYDVQQHDApSZXV0bGluZ2VuMRwwGgYDVQQKDBNTb3VyY2UgRmVsbG93
|
||||
cyBHbWJIMSgwJgYJKoZIhvcNAQkBFhl3ZWJtYXN0ZXJAZXhhbXBsZS5wcml2YXRl
|
||||
MR0wGwYDVQQDDBR0ZXN0LmV4YW1wbGUucHJpdmF0ZTCCASIwDQYJKoZIhvcNAQEB
|
||||
BQADggEPADCCAQoCggEBAK46AzTKQy+/SFeseHbRZbuQZnYznIjiWW57A2dGCSg2
|
||||
tuI0811lV5Fx7MMlPEdvHOycwg678hMDvwLv5GvZQg06Pz/rvRxSls6g+S0dPAGE
|
||||
NPgNaWDqVa8G58FVdzfe1NFRYLvf/oaFXkE6WJvdgVHuZoNj1IrjqBQMoFRNBeub
|
||||
JJHNEJZhX5KdMWqFxJBM4jDzXt1PUIFgeFbtOHnnK6/1ga6yXvtvusS/1tZYZpNp
|
||||
1czr5l2cw0VXAcgVDu3qQIOtvYtCkUZO57436UNHKE3uT3gLzzAKRxfrS8LbVG2H
|
||||
V82dT5or77bPT2N/GyPJwWgzi50yIfX7vpRmTPHipt0CAwEAAaNcMFowHwYDVR0j
|
||||
BBgwFoAU7eiboBn2r/6vqRejuECE4ENJ5NswCQYDVR0TBAIwADALBgNVHQ8EBAMC
|
||||
BPAwHwYDVR0RBBgwFoIUdGVzdC5leGFtcGxlLnByaXZhdGUwDQYJKoZIhvcNAQEL
|
||||
BQADggEBAFYzh53rfQmEw//rCCeZCjWnyyHuW52DdEYLOJVmT3rkogmIkuFuw7n4
|
||||
KNEqw1eDwNCYMFV0uemiWpI80qvtQO8RvaSoWlJs/hTYVI/BIL0xlR8/tOUhshep
|
||||
qwAv9LJISd5RcmTJ6Ag3ytR1f6skBuzHdUbODTZBh/L+tM/ypHF+kRnqqjDkEC3r
|
||||
kMb81hoU6xALpjwqCzRawbEC3OIw2QQUqVB+zsW45hnhhHKVrLkkyO9djSoReHOy
|
||||
lrz7liWcZBlTUjuH+M3WCb8Qr9FD1Cz1f2Ejq0pR6WLTL3c/tcWpZiNUpFYGnscF
|
||||
fLyZekegMNG1PqawmEgxBfTAxrONwbo=
|
||||
-----END CERTIFICATE-----
|
18
microservices/httpsserver/certs/test.example.csr
Normal file
18
microservices/httpsserver/certs/test.example.csr
Normal file
@ -0,0 +1,18 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIIC3DCCAcQCAQAwgZYxCzAJBgNVBAYTAkRFMQswCQYDVQQIDAJCVzETMBEGA1UE
|
||||
BwwKUmV1dGxpbmdlbjEcMBoGA1UECgwTU291cmNlIEZlbGxvd3MgR21iSDEoMCYG
|
||||
CSqGSIb3DQEJARYZd2VibWFzdGVyQGV4YW1wbGUucHJpdmF0ZTEdMBsGA1UEAwwU
|
||||
dGVzdC5leGFtcGxlLnByaXZhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
||||
AoIBAQCuOgM0ykMvv0hXrHh20WW7kGZ2M5yI4lluewNnRgkoNrbiNPNdZVeRcezD
|
||||
JTxHbxzsnMIOu/ITA78C7+Rr2UINOj8/670cUpbOoPktHTwBhDT4DWlg6lWvBufB
|
||||
VXc33tTRUWC73/6GhV5BOlib3YFR7maDY9SK46gUDKBUTQXrmySRzRCWYV+SnTFq
|
||||
hcSQTOIw817dT1CBYHhW7Th55yuv9YGusl77b7rEv9bWWGaTadXM6+ZdnMNFVwHI
|
||||
FQ7t6kCDrb2LQpFGTue+N+lDRyhN7k94C88wCkcX60vC21Rth1fNnU+aK++2z09j
|
||||
fxsjycFoM4udMiH1+76UZkzx4qbdAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEA
|
||||
Uz43p2rJGBNxao94QiKV+AsGoHJeogT8ghJqAsyMrpLTs0ETmVEdtmwO+cujpYOd
|
||||
bWzJ4WPhemyUbyV4/Igx7U43A0OkAN1xmLHXkuDAZa3Ox43lP1027A193Ik/eAdk
|
||||
IhZixL/MJUaub7nTC6uSOq73wo4TcQku9cZUvs9+9t6yOjeMAfNXsyfshXq3hlxd
|
||||
aRqbydeSuAn1TYBB8fNWZmLCRaAQ88SHTa3WA3Sapc+JAxbLlz7UWpMcn5Ua4jsD
|
||||
vgnhXHhUcaGSB2bGUPxolSj1al7I3q8HrzgCSSHnoBBl3LJ0jpkd56+0VHJ351+4
|
||||
cziMZngB/7t5LDDKr7q/Yg==
|
||||
-----END CERTIFICATE REQUEST-----
|
28
microservices/httpsserver/certs/test.example.key
Normal file
28
microservices/httpsserver/certs/test.example.key
Normal file
@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCuOgM0ykMvv0hX
|
||||
rHh20WW7kGZ2M5yI4lluewNnRgkoNrbiNPNdZVeRcezDJTxHbxzsnMIOu/ITA78C
|
||||
7+Rr2UINOj8/670cUpbOoPktHTwBhDT4DWlg6lWvBufBVXc33tTRUWC73/6GhV5B
|
||||
Olib3YFR7maDY9SK46gUDKBUTQXrmySRzRCWYV+SnTFqhcSQTOIw817dT1CBYHhW
|
||||
7Th55yuv9YGusl77b7rEv9bWWGaTadXM6+ZdnMNFVwHIFQ7t6kCDrb2LQpFGTue+
|
||||
N+lDRyhN7k94C88wCkcX60vC21Rth1fNnU+aK++2z09jfxsjycFoM4udMiH1+76U
|
||||
Zkzx4qbdAgMBAAECggEBAJOAUc6TnqYBz4FKZwJQ7UwKSHSx5UiOOSCrzInWZVJC
|
||||
YDrKkW70qVpdlRDxqULg8x/u5uwKejtW5JPb/QrBeIYyVfIL5qLf2QU+izaClZbD
|
||||
EwUedaSzP69arUKk1LXcVViRCNCGJrpElzOp7fKnaSCwMOHz1rFvY5D1z5cPTn/U
|
||||
Bsa0r2tGRtEfuUMfceMFaR5BnqJRjP8TuwscoqlOO/bBC1N5lGahJ77dlUB5L1QS
|
||||
98Ajwgnsl4QZTqhkoVkAPf3jG5rogF9tJQfBdxHPTUaWawE8GnBcUricq4fjhUA3
|
||||
b6zZVyvjI8dPI02UZdkkdTsOpRkXQJ1pz36hypu5GIECgYEA36KivMvoe8fOuzCc
|
||||
bnMdT7mCvd77y+m4u0lT8kbCi+HKuGUgYQpCKx9ifIuW9CtdG8YwbWw0Z6QxvfSV
|
||||
rTdN/23zDQco5uHe5miLQDVyn3LuAbkYkmKTe3V3Y2XkRL1zptAZ82XBWa3aw6+j
|
||||
rIoKRCJ9jLrrGIuFNyU9YevCAPkCgYEAx3DbRXzlEWF3uiYWMpy37DfwgTs6vCjq
|
||||
0MAyW03hn7oZ3waghGjuJ5LiYaC/kLk1JUbjCBQEvtgyAVJ6AMatkgWmMlyMjlu8
|
||||
480gjLDbiJafvFpaExclK3iZDvhUhBunBje8hIGpWw637MbQB2z7bDiuhTTKp8zb
|
||||
pN5/YKwoMgUCgYEA1g9rrEGV/92KkXz/T22akfRlI+9rn4zRSVvwIYj/sTtoesY5
|
||||
jwltuq8o60QGMyPK1MoJEsQvCUGOZ1/VYV79ptCMhFzlFtL/NBa/q689T0iIb1fI
|
||||
IF6BAvy2UYt3SyD4saSiImu0/m0+aG8XwRDEsOE+wdUtMWpjEhzwO2maYqkCgYA6
|
||||
M2f5tkHOuafLzdOKf4t4xrZLsDIquLIVqxDG7kpaZ1+nYvKy0UA2kjm4DcX5gOLO
|
||||
dwpH0De2TbcCBcSOt2vtgfKHHdTysjjELZdDF1VpXbNNrvw8N/Pj5LSd1sArMTqj
|
||||
qN49uOzoIrpvwXDxyc7xPPVI8Cf3oeOzEC8R0guE1QKBgG1kyv5p2CfE26aL3+eO
|
||||
o9VAY36Fr/oM74wBySC9J22G9a0oNegW3eEuGvnGMRc4fkSoIlJjqA53on0OcG3h
|
||||
Eua1qz02v6LpIKs3RvmlY/PFfv3TosVjQQXnEH8XRBVqPIVI9xwP1GbjWYE2kKMq
|
||||
VM8bquSy+WIsUuD0eFhnx+rC
|
||||
-----END PRIVATE KEY-----
|
5
microservices/httpsserver/go.mod
Normal file
5
microservices/httpsserver/go.mod
Normal file
@ -0,0 +1,5 @@
|
||||
module golang.source-fellows.com/samples/https/server
|
||||
|
||||
go 1.14
|
||||
|
||||
require golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
|
9
microservices/httpsserver/go.sum
Normal file
9
microservices/httpsserver/go.sum
Normal file
@ -0,0 +1,9 @@
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3 h1:0GoQqolDA55aaLxZyTzK/Y2ePZzZTUrRacwib7cNsYQ=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
19
microservices/httpsserver/main.go
Normal file
19
microservices/httpsserver/main.go
Normal file
@ -0,0 +1,19 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
fmt.Fprintln(w, "Hello World")
|
||||
})
|
||||
|
||||
certFile := "./certs/test.example.crt"
|
||||
keyFile := "./certs/test.example.key"
|
||||
|
||||
http.ListenAndServeTLS(":8443", certFile, keyFile, nil)
|
||||
|
||||
}
|
46
microservices/httpsservercert/README.md
Normal file
46
microservices/httpsservercert/README.md
Normal file
@ -0,0 +1,46 @@
|
||||
Zertifikate erstellen
|
||||
=====================
|
||||
|
||||
AUSFÜHRE IM cert VERZEICHNIS
|
||||
|
||||
- Root Zertifikat erstellen:
|
||||
```
|
||||
openssl genrsa -out myRoot.key 2048
|
||||
openssl req -x509 -new -nodes -key myRoot.key -sha256 -days 3650 -out myRoot.crt
|
||||
```
|
||||
|
||||
- Zertifikat für Server erstellen:
|
||||
```
|
||||
#CSR erstellen
|
||||
openssl req -new -sha256 -nodes -out test.example.csr -newkey rsa:2048 -keyout test.example.key -config server-cert.request.conf
|
||||
|
||||
openssl x509 -req -in test.example.csr -CA myRoot.crt -CAkey myRoot.key -CAcreateserial -out test.example.crt -days 3650 -sha256
|
||||
```
|
||||
|
||||
-CA anlegen
|
||||
```
|
||||
mkdir -p ca/certsdb
|
||||
touch ca/index.txt
|
||||
touch ca/index.txt.attr
|
||||
echo '01' > ca/serial
|
||||
```
|
||||
|
||||
- Client-Zertifikat erstellen
|
||||
|
||||
```
|
||||
openssl genrsa -des3 -out user.key # key is 1234
|
||||
openssl req -new -key user.key -out user.req -config user-cert.request.conf
|
||||
openssl ca -cert test.example.crt -keyfile test.example.key -out user.crt -in user.req -config user-cert.conf
|
||||
openssl pkcs12 -export -in user.crt -inkey user.key -out user-client.p12
|
||||
```
|
||||
|
||||
- Chain
|
||||
|
||||
```
|
||||
cat
|
||||
```
|
||||
|
||||
- Curl
|
||||
```
|
||||
curl --cacert ./certs/myRoot.crt --cert ./certs/user.crt --key ./certs/user.key -v https://test.example.private:8443
|
||||
```
|
71
microservices/httpsservercert/certs/ca/certsdb/01.pem
Normal file
71
microservices/httpsservercert/certs/ca/certsdb/01.pem
Normal file
@ -0,0 +1,71 @@
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 1 (0x0)
|
||||
Serial Number: 1 (0x1)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer: C=DE, ST=BW, L=Reutlingen, O=Source Fellows GmbH/emailAddress=webmaster@example.private, CN=test.example.private
|
||||
Validity
|
||||
Not Before: Jul 9 04:15:47 2020 GMT
|
||||
Not After : Jul 9 04:15:47 2021 GMT
|
||||
Subject: C=DE, ST=BW, L=Reutlingen, O=Source Fellows GmbH, CN=test.example.private/emailAddress=user@example.private
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public-Key: (2048 bit)
|
||||
Modulus:
|
||||
00:e3:a9:b6:c5:35:06:6d:12:ee:e7:ee:60:89:49:
|
||||
2a:ac:b2:be:3d:f7:c5:4d:55:08:fc:80:43:aa:fd:
|
||||
05:6c:43:94:a5:02:c9:1f:fc:70:c4:44:85:5a:b8:
|
||||
f9:95:f8:8a:5c:2e:12:55:43:23:f2:d0:34:c3:a4:
|
||||
41:89:14:a9:d1:19:d4:0d:d0:58:87:38:9f:6c:1d:
|
||||
89:2d:23:60:8f:9e:af:f4:5a:f0:d0:a4:fd:4a:49:
|
||||
9b:19:df:97:20:db:80:7b:ee:f2:ba:e7:9a:b4:3c:
|
||||
48:74:9c:57:61:0b:4e:ee:eb:53:5d:ca:3d:9e:f3:
|
||||
d2:d5:1a:f7:7a:34:1d:09:73:44:1c:af:3d:31:72:
|
||||
90:e9:43:0b:b3:c9:30:58:21:df:27:5b:39:42:85:
|
||||
f1:ec:d9:1c:89:38:64:92:d6:da:f9:22:c1:e9:b5:
|
||||
22:bf:3a:32:10:f9:e3:e6:b3:73:1d:d2:7e:a9:a6:
|
||||
27:86:83:8c:7e:9d:4f:39:d0:53:45:0b:f7:89:8b:
|
||||
f2:8c:43:44:42:a9:4a:81:83:60:bb:1f:63:f5:75:
|
||||
fa:73:3b:85:c9:62:7d:1d:8a:61:4c:3c:f9:23:a3:
|
||||
3d:97:78:6f:6d:13:db:88:79:fb:89:0b:3e:a6:50:
|
||||
b8:72:9a:c8:d3:7b:d2:ec:6c:15:3d:ab:f7:8b:c8:
|
||||
50:9b
|
||||
Exponent: 65537 (0x10001)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
95:b9:66:f0:95:05:82:2c:9b:f6:85:ea:68:7c:ae:18:b5:d1:
|
||||
12:10:22:2f:2f:1f:5f:d8:15:b6:b3:87:4a:dc:b1:1c:1d:c3:
|
||||
8c:80:2f:cb:d2:bd:36:35:53:27:20:c0:b8:5f:58:92:8e:60:
|
||||
2a:01:f1:08:38:d0:97:6f:4f:a1:57:17:e7:b9:fc:e1:67:7a:
|
||||
97:1b:b3:e1:36:26:06:b2:32:9d:5a:12:4b:2d:b7:0b:8b:c8:
|
||||
09:bc:5c:b1:8f:f8:42:24:97:10:6d:6a:eb:82:99:0a:bf:e8:
|
||||
fe:9c:1d:52:f2:2d:78:18:a4:9f:33:27:88:54:86:09:11:0e:
|
||||
fd:d5:5c:0d:65:c4:78:bd:cc:2f:34:59:e0:13:e8:02:ed:98:
|
||||
c4:9e:7f:5e:f7:9b:18:d1:c6:76:eb:1b:dc:76:6a:a6:ab:f3:
|
||||
b5:8f:b5:0a:ad:cf:07:d5:cf:6c:69:ae:0c:f5:dc:f2:b2:11:
|
||||
2b:b2:b6:a5:b5:63:6b:1f:0d:7b:cd:07:81:59:40:5e:12:c9:
|
||||
41:73:cf:08:87:3c:ab:38:51:27:c2:ad:c6:57:20:dc:bd:fe:
|
||||
cf:ea:b5:37:29:be:c1:f4:9b:61:ad:a3:f8:5c:d7:7b:65:2e:
|
||||
80:f9:6b:dd:42:a8:62:ae:52:0d:95:f7:67:04:10:b9:97:24:
|
||||
48:33:fb:22
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDnTCCAoUCAQEwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNVBAYTAkRFMQswCQYD
|
||||
VQQIDAJCVzETMBEGA1UEBwwKUmV1dGxpbmdlbjEcMBoGA1UECgwTU291cmNlIEZl
|
||||
bGxvd3MgR21iSDEoMCYGCSqGSIb3DQEJARYZd2VibWFzdGVyQGV4YW1wbGUucHJp
|
||||
dmF0ZTEdMBsGA1UEAwwUdGVzdC5leGFtcGxlLnByaXZhdGUwHhcNMjAwNzA5MDQx
|
||||
NTQ3WhcNMjEwNzA5MDQxNTQ3WjCBkTELMAkGA1UEBhMCREUxCzAJBgNVBAgMAkJX
|
||||
MRMwEQYDVQQHDApSZXV0bGluZ2VuMRwwGgYDVQQKDBNTb3VyY2UgRmVsbG93cyBH
|
||||
bWJIMR0wGwYDVQQDDBR0ZXN0LmV4YW1wbGUucHJpdmF0ZTEjMCEGCSqGSIb3DQEJ
|
||||
ARYUdXNlckBleGFtcGxlLnByaXZhdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
||||
ggEKAoIBAQDjqbbFNQZtEu7n7mCJSSqssr4998VNVQj8gEOq/QVsQ5SlAskf/HDE
|
||||
RIVauPmV+IpcLhJVQyPy0DTDpEGJFKnRGdQN0FiHOJ9sHYktI2CPnq/0WvDQpP1K
|
||||
SZsZ35cg24B77vK655q0PEh0nFdhC07u61Ndyj2e89LVGvd6NB0Jc0Qcrz0xcpDp
|
||||
QwuzyTBYId8nWzlChfHs2RyJOGSS1tr5IsHptSK/OjIQ+ePms3Md0n6ppieGg4x+
|
||||
nU850FNFC/eJi/KMQ0RCqUqBg2C7H2P1dfpzO4XJYn0dimFMPPkjoz2XeG9tE9uI
|
||||
efuJCz6mULhymsjTe9LsbBU9q/eLyFCbAgMBAAEwDQYJKoZIhvcNAQEFBQADggEB
|
||||
AJW5ZvCVBYIsm/aF6mh8rhi10RIQIi8vH1/YFbazh0rcsRwdw4yAL8vSvTY1Uycg
|
||||
wLhfWJKOYCoB8Qg40JdvT6FXF+e5/OFnepcbs+E2JgayMp1aEksttwuLyAm8XLGP
|
||||
+EIklxBtauuCmQq/6P6cHVLyLXgYpJ8zJ4hUhgkRDv3VXA1lxHi9zC80WeAT6ALt
|
||||
mMSef173mxjRxnbrG9x2aqar87WPtQqtzwfVz2xprgz13PKyESuytqW1Y2sfDXvN
|
||||
B4FZQF4SyUFzzwiHPKs4USfCrcZXINy9/s/qtTcpvsH0m2Gto/hc13tlLoD5a91C
|
||||
qGKuUg2V92cEELmXJEgz+yI=
|
||||
-----END CERTIFICATE-----
|
1
microservices/httpsservercert/certs/ca/index.txt
Normal file
1
microservices/httpsservercert/certs/ca/index.txt
Normal file
@ -0,0 +1 @@
|
||||
V 210709041547Z 01 unknown /C=DE/ST=BW/L=Reutlingen/O=Source Fellows GmbH/CN=test.example.private/emailAddress=user@example.private
|
1
microservices/httpsservercert/certs/ca/index.txt.attr
Normal file
1
microservices/httpsservercert/certs/ca/index.txt.attr
Normal file
@ -0,0 +1 @@
|
||||
unique_subject = yes
|
1
microservices/httpsservercert/certs/ca/serial
Normal file
1
microservices/httpsservercert/certs/ca/serial
Normal file
@ -0,0 +1 @@
|
||||
02
|
1
microservices/httpsservercert/certs/ca/serial.old
Normal file
1
microservices/httpsservercert/certs/ca/serial.old
Normal file
@ -0,0 +1 @@
|
||||
01
|
21
microservices/httpsservercert/certs/myRoot.crt
Normal file
21
microservices/httpsservercert/certs/myRoot.crt
Normal file
@ -0,0 +1,21 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDhTCCAm2gAwIBAgIUS7TqIYrkdb2kEmtuawe8h/54VVIwDQYJKoZIhvcNAQEL
|
||||
BQAwUjELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0JhV8ODwrwxEzARBgNVBAcMClJl
|
||||
dXRsaW5nZW4xHDAaBgNVBAoME1NvdXJjZSBGZWxsb3dzIEdtYkgwHhcNMjAwNzA4
|
||||
MDM1ODE4WhcNMzAwNzA2MDM1ODE4WjBSMQswCQYDVQQGEwJERTEQMA4GA1UECAwH
|
||||
QmFXw4PCvDETMBEGA1UEBwwKUmV1dGxpbmdlbjEcMBoGA1UECgwTU291cmNlIEZl
|
||||
bGxvd3MgR21iSDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANY+x2Kr
|
||||
U49506heEh2s0Q5vTjXUbP5814pHhlJ43X3p7QYMbJ/BBunxLA3a8GvuukgD1Wxr
|
||||
0T0uHo5/MLxRh6r1TEy80IApUsyCcAO3jdTGtIr4iebnAOL/Dw0TGWDRyl5SZCwo
|
||||
BsVSOfCoJyMs+ygB+BLE+05Dq5FwA3CpxP5r67efBpY2Y9bu1iXAC179rGaVvtLM
|
||||
3Zy5G+tQ0aMJYOqVR6tvSrrYg44gJiM270u6Os80V723fPtEUvKbHQOpZoleHWsb
|
||||
uZ1FbdQBcnJ2u3bI93ewQAvqQ3tjOqgell5n7kJ1B3Vjk8bVzda1zPKH9vcvF0fc
|
||||
gXdPrVOzBCa5Su8CAwEAAaNTMFEwHQYDVR0OBBYEFO3om6AZ9q/+r6kXo7hAhOBD
|
||||
SeTbMB8GA1UdIwQYMBaAFO3om6AZ9q/+r6kXo7hAhOBDSeTbMA8GA1UdEwEB/wQF
|
||||
MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAMxKFUWYTQz/ACVY8lV18QCGxcvNj3Uz
|
||||
ZdtNUEDkxu6yKsl+1otREbuxqnfNjrGLmlLQfU/GlY+PCF85SYm1Ep4yKdZ7J+1c
|
||||
MG+PB5NS3cV7BnoJ6WnXk7KJRX+dYpCr+jQmQbtTshk6dM2a6THjyPzKkyDflcfM
|
||||
tXQROGDG9O/5DvF8Eqz13Gel5Wukept9mHtDHapU0BooFTXNqh+tPmFU76tKCQZV
|
||||
h0Qt9BC8A6bDEaULVlXpvNTuDCrCMGhiYEo2++PD/e5YT1UDVNSokanyFIUoCJAn
|
||||
X5u+VjRfaVibiWu8E63qoKv+oXBf9pwlNeE8KBlydzf5OQgx8FEkbfc=
|
||||
-----END CERTIFICATE-----
|
27
microservices/httpsservercert/certs/myRoot.key
Normal file
27
microservices/httpsservercert/certs/myRoot.key
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEA1j7HYqtTj3nTqF4SHazRDm9ONdRs/nzXikeGUnjdfentBgxs
|
||||
n8EG6fEsDdrwa+66SAPVbGvRPS4ejn8wvFGHqvVMTLzQgClSzIJwA7eN1Ma0iviJ
|
||||
5ucA4v8PDRMZYNHKXlJkLCgGxVI58KgnIyz7KAH4EsT7TkOrkXADcKnE/mvrt58G
|
||||
ljZj1u7WJcALXv2sZpW+0szdnLkb61DRowlg6pVHq29KutiDjiAmIzbvS7o6zzRX
|
||||
vbd8+0RS8psdA6lmiV4daxu5nUVt1AFycna7dsj3d7BAC+pDe2M6qB6WXmfuQnUH
|
||||
dWOTxtXN1rXM8of29y8XR9yBd0+tU7MEJrlK7wIDAQABAoIBAQC0GzaWthybAvly
|
||||
ExL7q2pbzipbimbOUbkI4DQFZOIelebSLOOsMSNUy5ATXbi7o4cqPz7N1J2j5v99
|
||||
H2OjDI8WovwvjpNhClw23Hi6RzaOZzUjluinGg9exLisbx/oirSrMmxPyp5Wh1d5
|
||||
/oJYSdohufYIIVx6YNz8eMQLlEys7BcAs9uDbfrEh2lhSCRd+eVER/p2U+EE3YFe
|
||||
OPhE7S7/5fDHidA/vU5YL0zyDcTiqec8lF3b63L39zYsckUjvbJ9gXru+RUFsnYT
|
||||
FCz/8axvSyiRj9M162BtrwV1lANgbck+unmk9j63bMaNUFHdlFxovxZDA4C6napJ
|
||||
+5dnwduBAoGBAO3UqDRxSWvelTv5vSFWaiJoFKU23PGX46Fsy+b8ttj+8Jz94333
|
||||
u+1t5fEnpS46QhQtiVRB42pezBncJ+CdjQ92ikcJZL7o8NYttlmTVg2i/v+dnxmL
|
||||
T+Tgl89VUOgfKdlRwpgG64dMT1HFQJlMKkKMzdS6FxQtSclYSq0yYVxhAoGBAOac
|
||||
2ijcy0xlhDinsmikxBveaxl8pTeF0jmLlXmNRTuSXkk9tXi5yurV+e4M9oG7pvYU
|
||||
4LUthIvtbmPgDhANN5+45bJqNWw3ovaLb0/60XsET4fiR8W0muXMHcBySpFQsvRm
|
||||
/daw41S+f4rv2XqyaLLbwmgPiusGlJMDENQQCmlPAoGASPA2Idc4gDeEJx+hTE8X
|
||||
P7QR2NVpj0JY0lHuesm4PfZ5znviv+gxH1Db+0iAVRwS1eNdQZTvbNjj2W52YGGR
|
||||
OFPPdpe/6PjBm73rNa+E7au2bqhlec0K1JO4myJ8LKQaDocPmdZNd3IExXwsIpeE
|
||||
QmKyYXIsz8hP38sPI+zWhSECgYBzJz2Ui/QEGOj2NV7T+/plBCIsnt4NJIh97aJd
|
||||
CNraTVNBdUvplbSqoOBlKxnoXCCZ3oD6V1lJWez2eEntX/w3iGdCOOCmQf3g6G1T
|
||||
3aW+rL9d1fMK2Q1D1DHDCA8OEuLZQZhdHQTXKyya3vuU1gOL1Ep2FdTDWQzVgAFm
|
||||
MwBP5wKBgC7jFtvny07N3NQN/KX758LxN043Awx7DstraYj93jDQ8xT5naiXC/8m
|
||||
YoGB9aE6v+uxllBN5QdTSdzL0vpmkLYfnLbKSq54WVOflSAvL6VjxI9o9HMFqGF2
|
||||
wcEp3pm+ub20bZBdFoxP15X3IisUGiQcrg/q4ZGHxOvJuzI9q4b0
|
||||
-----END RSA PRIVATE KEY-----
|
1
microservices/httpsservercert/certs/myRoot.srl
Normal file
1
microservices/httpsservercert/certs/myRoot.srl
Normal file
@ -0,0 +1 @@
|
||||
73771BE66A4800A9EBDEF9018EBEDCDB7701BCC8
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user