public IEnumerator login(string username, string password) { // Check for existing connection SalesforceConnection connection = ApplicationState.sfConnection; if (connection != null) { sfClient.setConnection(connection); Debug.Log("Salesforce connection resumed."); yield return(true); } else // Establish a new connection { // Set OAuth settings sfClient.consumerKey = SalesforceAuthConfig.OAUTH_CONSUMER_KEY; sfClient.consumerSecret = SalesforceAuthConfig.OAUTH_CONSUMER_SECRET; // Attemp login bool isUserLogged = false; bool shouldRetry = true; while (!isUserLogged && shouldRetry) { Coroutine <bool> routine = owner.StartCoroutine <bool>( sfClient.login(username, password) ); yield return(routine.coroutine); try { isUserLogged = routine.getValue(); Debug.Log("Salesforce login successful."); // Store connection for later use ApplicationState.sfConnection = sfClient.getConnection(); } catch (SalesforceConfigurationException e) { throw e; } catch (SalesforceAuthenticationException e) { throw e; } catch (SalesforceApiException) { Debug.Log("Salesforce login failed, retrying..."); } } yield return(isUserLogged); } }
IEnumerator Start() { // Get Salesforce client component SalesforceClient sfdcClient = GetComponent <SalesforceClient>(); // Init client & log in Coroutine <bool> loginRoutine = this.StartCoroutine <bool>( sfdcClient.login() ); yield return(loginRoutine.coroutine); try { loginRoutine.getValue(); Debug.Log("Salesforce login successful."); } catch (SalesforceConfigurationException e) { Debug.Log("Salesforce login failed due to invalid auth configuration"); throw e; } catch (SalesforceAuthenticationException e) { Debug.Log("Salesforce login failed due to invalid credentials"); throw e; } catch (SalesforceApiException e) { Debug.Log(e.Message); //Debug.Log("Salesforce login failed"); throw e; } // Test insert to Unity_Test object. StartCoroutine(sfdcClient.insert(new UnityTestSFR() { Events_Name__c = "Test from Unity", Milliseconds__c = DateTime.UtcNow.Millisecond.ToString() })); // Get some cases string query = CaseSFR.BASE_QUERY + " ORDER BY Subject LIMIT 5"; Coroutine <List <CaseSFR> > getCasesRoutine = this.StartCoroutine <List <CaseSFR> >( sfdcClient.query <CaseSFR>(query) ); yield return(getCasesRoutine.coroutine); List <CaseSFR> cases = getCasesRoutine.getValue(); Debug.Log("Retrieved " + cases.Count + " cases"); // Create sample case CaseSFR caseRecord = new CaseSFR(null, "Test case", "New"); Coroutine <CaseSFR> insertCaseRoutine = this.StartCoroutine <CaseSFR>( sfdcClient.insert(caseRecord) ); yield return(insertCaseRoutine.coroutine); insertCaseRoutine.getValue(); Debug.Log("Case created"); // Update sample case caseRecord.subject = "Updated test case"; caseRecord.status = "Closed"; Coroutine <string> updateCaseRoutine = this.StartCoroutine <string>( sfdcClient.update(caseRecord) ); yield return(updateCaseRoutine.coroutine); updateCaseRoutine.getValue(); Debug.Log("Case updated"); // Delete sample case // Coroutine<string> deleteCaseRoutine = this.StartCoroutine<string>( // sfdcClient.delete(caseRecord) // ); // yield return deleteCaseRoutine.coroutine; // deleteCaseRoutine.getValue(); // Debug.Log("Case deleted"); }
IEnumerator Start() { // Get Salesforce client component SalesforceClient sfdcClient = GetComponent <SalesforceClient>(); // Init client & log in Coroutine <bool> loginRoutine = this.StartCoroutine <bool>( sfdcClient.login(salesforceUsername, salesforcePassword) ); yield return(loginRoutine.coroutine); try { loginRoutine.getValue(); Debug.Log("Salesforce login successful."); } catch (SalesforceConfigurationException e) { Debug.Log("Salesforce login failed due to invalid auth configuration"); throw e; } catch (SalesforceAuthenticationException e) { Debug.Log("Salesforce login failed due to invalid credentials"); throw e; } catch (SalesforceApiException e) { Debug.Log("Salesforce login failed"); throw e; } // Get some cases string query = Case.BASE_QUERY + " ORDER BY Subject LIMIT 5"; Coroutine <List <Case> > getCasesRoutine = this.StartCoroutine <List <Case> >( sfdcClient.query <Case>(query) ); yield return(getCasesRoutine.coroutine); List <Case> cases = getCasesRoutine.getValue(); Debug.Log("Retrieved " + cases.Count + " cases"); // Create sample case Case caseRecord = new Case(null, "Test case", "New"); Coroutine <Case> insertCaseRoutine = this.StartCoroutine <Case>( sfdcClient.insert(caseRecord) ); yield return(insertCaseRoutine.coroutine); insertCaseRoutine.getValue(); Debug.Log("Case created"); // Update sample case caseRecord.subject = "Updated test case"; caseRecord.status = "Closed"; Coroutine <string> updateCaseRoutine = this.StartCoroutine <string>( sfdcClient.update(caseRecord) ); yield return(updateCaseRoutine.coroutine); updateCaseRoutine.getValue(); Debug.Log("Case updated"); // Delete sample case Coroutine <string> deleteCaseRoutine = this.StartCoroutine <string>( sfdcClient.delete(caseRecord) ); yield return(deleteCaseRoutine.coroutine); deleteCaseRoutine.getValue(); Debug.Log("Case deleted"); }