Exemplo n.º 1
0
        public IEnumerator Hello(HelloReq helloReq, TaskCompletionSource <HelloResp> taskCompletionSource)
        {
            // バイナリデータでリクエスト
            byte[]          data    = helloReq.ToByteArray();
            UnityWebRequest request = new UnityWebRequest(hostName + pathPrefix + "Hello", "POST");

            if (data != null && data.Length != 0)
            {
                request.uploadHandler = new UploadHandlerRaw(data);
            }
            request.downloadHandler = new DownloadHandlerBuffer();
            request.SetRequestHeader("Content-Type", "application/protobuf");
            request.SetRequestHeader("Authorization", "Bearer " + token);

            yield return(request.SendWebRequest());

            if (request.isNetworkError || request.isHttpError)
            {
                Debug.LogError(request.isNetworkError);
                Debug.LogError(request.isHttpError);
                Debug.LogError(request.error);

                // TODO: エラーハンドリング、Twirpの型を定義しておかないといけない
                // taskCompletionSource.TrySetException(new Exception(request.error));
            }

            // 結果をバイナリデータとして取得
            byte[]    result   = request.downloadHandler.data;
            HelloResp response = HelloResp.Parser.ParseFrom(result);

            taskCompletionSource.TrySetResult(response);
        }
Exemplo n.º 2
0
 public override Task <HelloResp> SayHelloStrict(HelloReq request, ServerCallContext context)
 {
     if (request.Name.Length >= 10)
     {
         const string msg = "Length of `Name` cannot be more than 10 characters";
         throw new RpcException(new Status(StatusCode.InvalidArgument, msg));
     }
     return(Task.FromResult(new HelloResp {
         Result = "Hey, " + request.Name + "!"
     }));
 }
//    private async void OnEndOfFetch(string token, string err) {
//        string t = token ?? "";
//        string e = err ?? "";
//        ManageScroll.Log(DateTime.Now.ToString("tthh時mm分ss秒fffミリ秒") + ": OnEndOfGetIDToken");
//
//        if (t != "" && e == "") {
//            // SingIn済み
//            ManageScroll.Log("token: " + t);
//
//            // Fetch実行 TODO: エラーキャッチ
//            var helloWorld = new DefaultHelloWorld(Manager.HostName, token);
//
//            string user = "******";
//            HelloReq req = new HelloReq();
//            req.Subject = user;
//
//            var awaitableCoroutine = Awaitable.Create<HelloResp>(tcs => helloWorld.Hello(req, tcs));
//            var result = await awaitableCoroutine;
//
//            ManageScroll.Log("result: " + result);
//        }
//
//        if (e != "") {
//            ManageScroll.Log("err: " + e);
//        }
//    }

    public async void OnClickButton()
    {
        ManageScroll.Log(DateTime.Now.ToString("tthh時mm分ss秒fffミリ秒") + ": Fetch");
        // 認証必要なし
        // FirebaseAuthPlugIn.CallPlugin(OnEndOfFetch);

        // Fetch実行 TODO: エラーキャッチ
        var helloWorld = new DefaultHelloWorld(Manager.HostName, "");

        HelloReq req = new HelloReq();

        req.Subject = "dummy user";

        var awaitableCoroutine = Awaitable.Create <HelloResp>(tcs => helloWorld.Hello(req, tcs));
        var result             = await awaitableCoroutine;

        ManageScroll.Log("result: " + result);
    }
Exemplo n.º 4
0
 public override Task <HelloResp> SayHello(HelloReq request, ServerCallContext context)
 {
     return(Task.FromResult(new HelloResp {
         Result = "Hey, " + request.Name + "!"
     }));
 }