Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejs
function clearToken() {
    sessionStorage.removeItem('api_type_ebf530f9-083c-43a1-bf93-cd47a853495b');
    sessionStorage.removeItem('api_token_ebf530f9-083c-43a1-bf93-cd47a853495b');
}

function getToken() {
    // Use Cached authorization token information if available
    //

    var type = sessionStorage.getItem('api_type_ebf530f9-083c-43a1-bf93-cd47a853495b');
    var token = sessionStorage.getItem('api_token_ebf530f9-083c-43a1-bf93-cd47a853495b');

    var result = $.Deferred();

    if (type != null && token != null) {
        result.resolve({
            type: type,
            token: token
        });

        return result.promise();
    }

// TODO replace these values with your clientId and client secret values
    var clientId = '<replace>';
    var clientSecret = '<replace>';

    var auth = btoa(clientId + ":" + clientSecret);

    // Get and Cache new authorization token.
    //

    $.ajax({
        url: 'https://justinw-officewww.commercevisionyourwebsiteurl.com.au/api/token',
        method: 'post',
        headers: {'Authorization': 'Basic ' + auth},
        data: { 'grant_type': 'client_credentials' }
    }).then(function(response) {
        type = response.token_type;
        token = response.access_token;

        sessionStorage.setItem('api_type_ebf530f9-083c-43a1-bf93-cd47a853495b', type);
        sessionStorage.setItem('api_token_ebf530f9-083c-43a1-bf93-cd47a853495b', token);

        result.resolve({
            type: type,
            token: token
        });
    });

    return result.promise();
}

function createUser(user) {
    function createOptions(tokenInfo) {
        return {
            url: 'https://justinw-office.commercevision.com.au/api/User',
            method: 'post',
            headers: { 'Authorization': tokenInfo.type + ' ' + tokenInfo.token },
            contentType: 'application/json',
            data: JSON.stringify(user)
        };
    }

    var prom = $.Deferred();

    // Get token (cached or retrieve) and make call. On failure due to token having expired, retrieve
    // a new token and retry.
    //

    getToken().then(function(token) {
        $.ajax(createOptions(token))
            .done(function(response) {
                prom.resolve(response);
            })
            .fail(function(response) {
                if (response.status == 401) {
                    clearToken();

                    getToken().then(function(token) {
                        $.ajax(createOptions(token))
                            .done(function(response) {
                                prom.resolve(response);
                            })});
                    return;
                }

                console.error(response);
            });
    });

    return prom.promise();
}

createUser({
    "EmailAddress" : "user-does-not-exist",
    "FirstName" : "user-name",
    "Surname" : "user-surname",
    "PhoneNumber" : "0419 000 000",
    "NotifyEmailAddress" : "someone@somedomain.com",
    "CustomerCodes" : [
        "046008",
        "046018"
    ],
    "SendWelcomeEmail": false
}).done(function(response) {
// TODO do something with the response here
    console.log(response);
});

...