...
Code Block | ||
---|---|---|
| ||
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); }); |
...