/// <summary> /// Refresh the authentication header for the next HTTP requests. /// </summary> public virtual void RefreshOAuthHeader() { bool updated = false; OAuthToken lastToken = null; lock (syncRoot) // Threads-safe { lastToken = _token; if (null == lastToken) { lastToken = OAuthToken.Load(_userName); // DEBUG if (logger.IsDebugEnabled) { logger.DebugFormat("Retrieved last OAuth token: {0}", lastToken); } } if (null == lastToken || lastToken.IsExpired) { // Refresh the token lastToken = RefreshAccessToken(_userName, _password); updated = true; } _token = lastToken; } if (null != lastToken) { if (updated) { lastToken.Save(_userName); } // Updates the Salesforce RestAPI base URL lock (_clientTransport) { if (updated || String.IsNullOrEmpty(_clientTransport.Url)) { _clientTransport.Url = lastToken.InstanceUrl.TrimEnd('/', '\\') + "/" + StreamingAPIEndpoint; _clientTransport.SetOption(HttpRequestHeader.Authorization.ToString(), "OAuth " + lastToken.AccessToken); } } } }