public async Task <PredictResults> Predict(string endPointUrl, Stream imageStream) { var bearer = await _credential.GetAccessTokenForRequestAsync(); imageStream.Position = 0; var requestBody = new { payload = new { image = new { imageBytes = Utils.StreamToBase64(imageStream) } } }; using (var client = new HttpClient()) { var contentStr = JsonConvert.SerializeObject(requestBody); var content = new StringContent(contentStr, Encoding.UTF8, "application/json"); client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", bearer); var result = await client.PostAsync(endPointUrl, content); if (!result.IsSuccessStatusCode) { throw new Exception($"{result.StatusCode} - {result.ReasonPhrase}"); } var strResult = await result.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <PredictResults>(strResult)); } }
public async Task AccessTokenCredential() { const string fakeAccessToken = "FakeAccessToken"; // Create an access-token credential, and check the access token is correct. ICredential cred = GoogleCredential.FromAccessToken(fakeAccessToken); Assert.Equal(fakeAccessToken, await cred.GetAccessTokenForRequestAsync()); // Check the auth header is added correctly to an HTTP request. var httpHandler = new FakeHandler(); var httpClient = new Http.ConfigurableHttpClient(new Http.ConfigurableMessageHandler(httpHandler)); cred.Initialize(httpClient); await httpClient.GetAsync("http://localhost/TestRequest"); Assert.Equal("Bearer", httpHandler.RequestHeaders.Authorization.Scheme); Assert.Equal(fakeAccessToken, httpHandler.RequestHeaders.Authorization.Parameter); }