aboutsummaryrefslogtreecommitdiff
path: root/_example
diff options
context:
space:
mode:
authorroot <sina@snix.ir>2022-02-02 20:48:37 +0000
committerroot <sina@snix.ir>2022-02-02 20:48:37 +0000
commit777e3ada4b2f671e720be04d77da1aebfa2e9bc3 (patch)
tree2ce1cd1f4dc20b5d6e14bfc4fe555bc2901b350f /_example
parentf464a924ce181f3e02767402e95701ac800d9df8 (diff)
new stuff
Diffstat (limited to '_example')
-rw-r--r--_example/go.mod11
-rw-r--r--_example/go.sum14
-rw-r--r--_example/main.go97
3 files changed, 122 insertions, 0 deletions
diff --git a/_example/go.mod b/_example/go.mod
new file mode 100644
index 0000000..f390d60
--- /dev/null
+++ b/_example/go.mod
@@ -0,0 +1,11 @@
+module httpec
+
+go 1.17
+
+require snix.ir/ecookie v0.0.0-20220202195550-f464a924ce18
+
+require (
+ golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838 // indirect
+ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 // indirect
+ snix.ir/rabbitio v0.0.0-20220123060014-f8c9838efbd6 // indirect
+)
diff --git a/_example/go.sum b/_example/go.sum
new file mode 100644
index 0000000..07da0a6
--- /dev/null
+++ b/_example/go.sum
@@ -0,0 +1,14 @@
+golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838 h1:71vQrMauZZhcTVK6KdYM+rklehEEwb3E+ZhaE5jrPrE=
+golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+snix.ir/ecookie v0.0.0-20220202195550-f464a924ce18 h1:AetXmIVUnnfeTlArpR8PC5H+3IL6apj83zNT44AU/wY=
+snix.ir/ecookie v0.0.0-20220202195550-f464a924ce18/go.mod h1:95u5fjKPnI0AYOVjc/34csuV8fh/wSBqucTkI8dK8rM=
+snix.ir/rabbitio v0.0.0-20220123060014-f8c9838efbd6 h1:LYGzvcaDnb0d6ZGWpG3j0qJjEIseRJaFwLN8gbIZ+Io=
+snix.ir/rabbitio v0.0.0-20220123060014-f8c9838efbd6/go.mod h1:fGdJrOtVK0uqEI8x6SBI/NPAAQmtQi/4sjwQPShasEA=
diff --git a/_example/main.go b/_example/main.go
new file mode 100644
index 0000000..a327ebe
--- /dev/null
+++ b/_example/main.go
@@ -0,0 +1,97 @@
+package main
+
+import (
+ "encoding/json"
+ "fmt"
+ "log"
+ "net/http"
+ "time"
+
+ "snix.ir/ecookie"
+)
+
+type te struct {
+ IMMMMM int `json:"i"`
+ DMMMMM int `json:"d"`
+ Expire time.Time `json:"expire"`
+ SuperSecret string `json:"secret"`
+}
+
+var key = []byte{
+ 0x11, 0x12, 0x13, 0x14,
+ 0x11, 0x12, 0x13, 0x14,
+ 0x11, 0x12, 0x13, 0x14,
+ 0x11, 0x12, 0x13, 0x14,
+}
+
+func main() {
+ http.HandleFunc("/set", setHand)
+ http.HandleFunc("/get", getHand)
+ err := http.ListenAndServe(":8080", nil)
+ log.Fatal(err)
+}
+
+func setHand(w http.ResponseWriter, r *http.Request) {
+ x := new(te)
+ x.DMMMMM = 10000
+ x.IMMMMM = 90000
+ x.Expire = time.Now().Add(time.Hour)
+ x.SuperSecret = "some super secret data.. "
+
+ d, err := json.Marshal(x)
+ if err != nil {
+ fmt.Println(err)
+ w.WriteHeader(http.StatusBadGateway)
+ return
+ }
+ cc, err := ecookie.NewEncryptor(key)
+ if err != nil {
+ fmt.Println(err)
+ w.WriteHeader(http.StatusBadGateway)
+ return
+ }
+ ec, err := cc.Encrypt(d)
+ if err != nil {
+ fmt.Println(err)
+ w.WriteHeader(http.StatusBadGateway)
+ return
+ }
+ http.SetCookie(w, &http.Cookie{
+ Name: "auth",
+ Value: string(ec),
+ })
+
+ w.WriteHeader(http.StatusOK)
+ w.Write(ec)
+}
+
+func getHand(w http.ResponseWriter, r *http.Request) {
+ x, err := r.Cookie("auth")
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+
+ ee, err := ecookie.NewDecryptor(key)
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+
+ ll, err := ee.Decrypt([]byte(x.Value))
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+
+ vv := new(te)
+ err = json.Unmarshal(ll, vv)
+ if err != nil {
+ fmt.Println(err)
+ return
+ }
+
+ fmt.Println(vv)
+ fmt.Fprintf(w, "%+v", *vv)
+
+}

Snix LLC Git Repository Holder Copyright(C) 2022 All Rights Reserved Email To Snix.IR