Files
grpccanary/examples/grpcentity/client.go
T

73 lines
1.7 KiB
Go

package entity
import (
"context"
"fmt"
"grpccanary/protoapi"
"math/rand"
"time"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
)
func AskingDateTime(ctx context.Context, m protoapi.IoTServiceClient) (*protoapi.DateTime, error) {
request := &protoapi.RequestDateTime{
Value: "Please send me the date and time",
}
return m.GetDate(ctx, request)
}
func AskPass(ctx context.Context, m protoapi.IoTServiceClient, seed int64, length int64) (*protoapi.RandomPass, error) {
request := &protoapi.RequestPass{
Seed: seed,
Length: length,
}
return m.GetRandomPass(ctx, request)
}
func AskUpdateSensingData(ctx context.Context, m protoapi.IoTServiceClient, deviceId string, temp float64, humid float64) (*protoapi.SensingResponse, error) {
request := &protoapi.SensingData{
DeviceId: deviceId,
Temperature: temp,
Humidity: humid,
}
return m.UpdateSensingData(ctx, request)
}
func ClientRun(addr string) {
conn, err := grpc.Dial(addr, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
fmt.Println("Dial:", err)
return
}
client := protoapi.NewIoTServiceClient(conn)
r, err := AskingDateTime(context.Background(), client)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Server Date and Time:", r.Value)
rand.Seed(time.Now().Unix())
length := int64(rand.Intn(20))
p, err := AskPass(context.Background(), client, 100, length+1)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Random Password:", p.Password)
res, err := AskUpdateSensingData(context.Background(), client, "sensor-room-01", 24.5, 52.3)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Sensing Update Success:", res.Success)
fmt.Println("Sensing Update Message:", res.Message)
}