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); }
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); }
public override Task <HelloResp> SayHello(HelloReq request, ServerCallContext context) { return(Task.FromResult(new HelloResp { Result = "Hey, " + request.Name + "!" })); }