Exemplo n.º 1
0
        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");
    }