public IEnumerator AcquireToken(string APIKey, AcquireTokenEventHandler handler) { if (_mutex) { yield return(new WaitUntil(() => { return !_mutex; })); } _mutex = true; if (_tokenCache.ContainsKey(APIKey)) { var cachedToken = _tokenCache[APIKey]; var args = new AcquireTokenEventArgs(cachedToken); handler.Invoke(this, args); } else { // Create headers var headers = new Dictionary <string, string>(); //headers.Add(Strings.HEADER_CONTENT_TYPE, Strings.CONTENT_TYPE_APPLICATION_OCTET_STREAM); headers.Add(CognitiveStrings.HEADER_OCP_APIM_SUBSCRIPTION_KEY, APIKey); // Request dummy data var dummyData = new byte[1] { 1 }; // If the endpoint gets 0 bytes it returns an error, // so we send 1 byte of dummy data var w = new WWW(TokenManagerStrings.URI_COGNITIVE_TOKEN, dummyData, headers); yield return(w); // Response if (string.IsNullOrEmpty(w.error)) { var token = w.text; _tokenCache.Add(APIKey, token); var args = new AcquireTokenEventArgs(token); if (handler != null) { handler.Invoke(this, args); } } else { Debug.LogError("Error obtaining auth token: " + w.error); } _mutex = false; } }
public IEnumerator WaitForMutex(string APIKey, AcquireTokenEventHandler handler) { yield return(new WaitUntil(() => { return !_mutex; })); var args = new AcquireTokenEventArgs(_tokenCache[APIKey]); }
public void AcquireTokenAsync(string APIKey, AcquireTokenEventHandler handler) { StartCoroutine(AcquireToken(APIKey, handler)); }