cowyo/keystore/keystore.go

87 lines
1.7 KiB
Go

package main
import (
"encoding/json"
"fmt"
"log"
"github.com/gorilla/websocket"
)
func get(key string) interface{} {
c, _, err := websocket.DefaultDialer.Dial("wss://cowyo.com/ws", nil)
if err != nil {
log.Fatal("dial:", err)
}
defer c.Close()
done := make(chan struct{})
var value interface{}
go func() {
defer c.Close()
defer close(done)
for {
_, message, err := c.ReadMessage()
if err != nil {
// log.Println("read:", err)
return
}
var m struct {
TextData string
}
json.Unmarshal([]byte(message), &m)
json.Unmarshal([]byte(m.TextData), &value)
done <- struct{}{}
}
}()
// ask for something
c.WriteMessage(websocket.TextMessage, []byte(`{"Title":"`+key+`", "UpdateClient":true}`))
<-done
return value
}
func set(key string, message interface{}) interface{} {
c, _, err := websocket.DefaultDialer.Dial("wss://cowyo.com/ws", nil)
if err != nil {
log.Fatal("dial:", err)
}
defer c.Close()
done := make(chan struct{})
var value interface{}
go func() {
defer c.Close()
defer close(done)
for {
_, message, err := c.ReadMessage()
if err != nil {
// log.Println("read:", err)
return
}
var m struct {
TextData string
}
json.Unmarshal([]byte(message), &m)
json.Unmarshal([]byte(m.TextData), &value)
done <- struct{}{}
}
}()
// ask for something
bJson, _ := json.Marshal(message)
aa, _ := json.Marshal(map[string]interface{}{
"Title": key,
"UpdateServer": true,
"TextData": string(bJson),
})
c.WriteMessage(websocket.TextMessage, aa)
<-done
return value
}
func main() {
fmt.Println(get("data"))
fmt.Println(get("data"))
m := make(map[string]int)
m["some string"] = 29
fmt.Println(set("data2", m))
fmt.Println(get("data2"))
}