(function(){ "use strict"; angular .module("app.repositories") .factory("repository.apiMediaUploader", mediaUploaderRepository); function mediaUploaderRepository($http, $q, webApi, IM, convertHelper, webApiConstants){ return { uploadImage: uploadImage, uploadImageFormData:uploadImageFormData, uploadCareProviderLicense: uploadCareProviderLicense }; function uploadImage(dataImage, thumb) { var imageUploadFileLimit = 1024 * 1024 * 25; // 25 MB var supportedImageMIMETypes = ["image/jpeg", "image/png", "image/jpg", "image/gif"]; var formData = new FormData(); var imgBlob = convertHelper.dataURIToBlob(dataImage); return $q(function (resolve, reject) { if (supportedImageMIMETypes.indexOf(imgBlob.type) > -1 && imgBlob.size <= imageUploadFileLimit) { formData.append("file", imgBlob, convertHelper.renderImageName(imgBlob.type)); $http.post(webApiConstants.DOMAIN + '/api/v1/content/images', formData, { "transformRequest": angular.identity, "headers": { 'Content-Type': undefined }, params: {"thumb": thumb} }).success(function (postResult) { resolve(postResult); }); } else { reject(null); } }); } function dataURIToBlob(dataURI) { var binary = atob(dataURI.split(',')[1]); var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; var array = []; for (var i = 0; i < binary.length; i++) { array.push(binary.charCodeAt(i)); } return new Blob([new Uint8Array(array)], { type: mimeString }); } function uploadImageFormData(formData, thumb) { var imgBlob = formData; return $q(function (resolve, reject) { $http.post(webApiConstants.DOMAIN + '/api/v1/content/images', imgBlob, { "transformRequest": angular.identity, "headers": { 'Content-Type': undefined }, params: {"thumb": thumb} }).success(function (postResult) { resolve(postResult); }); }); } function uploadCareProviderLicense(formData) { var imgBlob = formData; return $q(function (resolve, reject) { $http.post(webApiConstants.DOMAIN + '/api/v1/files/Post', imgBlob, { "transformRequest": angular.identity, "headers": { 'Content-Type': undefined } }).success(function (postResult) { resolve(postResult); }); }); } } // IoC container. mediaUploaderRepository.$inject = [ "$http", "$q", "webApi", "helpers.internalMessages", "helpers.convert", "webApi.constants" ]; })();