summaryrefslogtreecommitdiff
path: root/www/lib/ngCordova/dist/ng-cordova.js
diff options
context:
space:
mode:
authorpliablepixels <pliablepixels@gmail.com>2016-04-10 10:47:35 -0400
committerpliablepixels <pliablepixels@gmail.com>2016-04-10 10:47:35 -0400
commita29f9a676a6ea3bad56ede05cd1a1c82ffbbe8e9 (patch)
tree7e6e6bfb23390a64344fdfe2272a5da04c2dd97c /www/lib/ngCordova/dist/ng-cordova.js
parent42bc21f7d0b4acfeefa5f4c2708203be78f57778 (diff)
#219 - everything upgraded
Former-commit-id: 15f58d10df83feda8199a1b904433e625ef36b44
Diffstat (limited to 'www/lib/ngCordova/dist/ng-cordova.js')
-rw-r--r--www/lib/ngCordova/dist/ng-cordova.js2646
1 files changed, 753 insertions, 1893 deletions
diff --git a/www/lib/ngCordova/dist/ng-cordova.js b/www/lib/ngCordova/dist/ng-cordova.js
index b95e950c..a59620b6 100644
--- a/www/lib/ngCordova/dist/ng-cordova.js
+++ b/www/lib/ngCordova/dist/ng-cordova.js
@@ -1,6 +1,6 @@
/*!
* ngCordova
- * v0.1.20-alpha
+ * v0.1.26-alpha
* Copyright 2015 Drifty Co. http://drifty.com/
* See LICENSE in this repository for license information
*/
@@ -229,6 +229,24 @@ angular.module('ngCordova.plugins.appVersion', [])
.factory('$cordovaAppVersion', ['$q', function ($q) {
return {
+ getAppName: function () {
+ var q = $q.defer();
+ cordova.getAppVersion.getAppName(function (name) {
+ q.resolve(name);
+ });
+
+ return q.promise;
+ },
+
+ getPackageName: function () {
+ var q = $q.defer();
+ cordova.getAppVersion.getPackageName(function (pack) {
+ q.resolve(pack);
+ });
+
+ return q.promise;
+ },
+
getVersionNumber: function () {
var q = $q.defer();
cordova.getAppVersion.getVersionNumber(function (version) {
@@ -417,8 +435,8 @@ angular.module('ngCordova.plugins.badge', [])
};
}]);
-// install : cordova plugin add https://github.com/wildabeast/BarcodeScanner.git
-// link : https://github.com/wildabeast/BarcodeScanner
+// install : cordova plugin add https://github.com/phonegap/phonegap-plugin-barcodescanner.git
+// link : https://github.com/phonegap/phonegap-plugin-barcodescanner
angular.module('ngCordova.plugins.barcodeScanner', [])
@@ -500,13 +518,230 @@ angular.module('ngCordova.plugins.batteryStatus', [])
$injector.get('$cordovaBatteryStatus'); //ensure the factory and subsequent event listeners get initialised
}]);
+// install : cordova plugin add https://github.com/petermetz/cordova-plugin-ibeacon.git
+// link : https://github.com/petermetz/cordova-plugin-ibeacon
+
+angular.module('ngCordova.plugins.beacon', [])
+
+ .factory('$cordovaBeacon', ['$window', '$rootScope', '$timeout', '$q', function ($window, $rootScope, $timeout, $q) {
+ var callbackDidDetermineStateForRegion = null;
+ var callbackDidStartMonitoringForRegion = null;
+ var callbackDidExitRegion = null;
+ var callbackDidEnterRegion = null;
+ var callbackDidRangeBeaconsInRegion = null;
+ var callbackPeripheralManagerDidStartAdvertising = null;
+ var callbackPeripheralManagerDidUpdateState = null;
+ var callbackDidChangeAuthorizationStatus = null;
+
+ document.addEventListener('deviceready', function () {
+ if ($window.cordova &&
+ $window.cordova.plugins &&
+ $window.cordova.plugins.locationManager) {
+ var delegate = new $window.cordova.plugins.locationManager.Delegate();
+
+ delegate.didDetermineStateForRegion = function (pluginResult) {
+ $timeout(function () {
+ $rootScope.$broadcast('$cordovaBeacon:didDetermineStateForRegion', pluginResult);
+ });
+
+ if (callbackDidDetermineStateForRegion) {
+ callbackDidDetermineStateForRegion(pluginResult);
+ }
+ };
+
+ delegate.didStartMonitoringForRegion = function (pluginResult) {
+ $timeout(function () {
+ $rootScope.$broadcast('$cordovaBeacon:didStartMonitoringForRegion', pluginResult);
+ });
+
+ if (callbackDidStartMonitoringForRegion) {
+ callbackDidStartMonitoringForRegion(pluginResult);
+ }
+ };
+
+ delegate.didExitRegion = function (pluginResult) {
+ $timeout(function () {
+ $rootScope.$broadcast('$cordovaBeacon:didExitRegion', pluginResult);
+ });
+
+ if (callbackDidExitRegion) {
+ callbackDidExitRegion(pluginResult);
+ }
+ };
+
+ delegate.didEnterRegion = function (pluginResult) {
+ $timeout(function () {
+ $rootScope.$broadcast('$cordovaBeacon:didEnterRegion', pluginResult);
+ });
+
+ if (callbackDidEnterRegion) {
+ callbackDidEnterRegion(pluginResult);
+ }
+ };
+
+ delegate.didRangeBeaconsInRegion = function (pluginResult) {
+ $timeout(function () {
+ $rootScope.$broadcast('$cordovaBeacon:didRangeBeaconsInRegion', pluginResult);
+ });
+
+ if (callbackDidRangeBeaconsInRegion) {
+ callbackDidRangeBeaconsInRegion(pluginResult);
+ }
+ };
+
+ delegate.peripheralManagerDidStartAdvertising = function (pluginResult) {
+ $timeout(function () {
+ $rootScope.$broadcast('$cordovaBeacon:peripheralManagerDidStartAdvertising', pluginResult);
+ });
+
+ if (callbackPeripheralManagerDidStartAdvertising) {
+ callbackPeripheralManagerDidStartAdvertising(pluginResult);
+ }
+ };
+
+ delegate.peripheralManagerDidUpdateState = function (pluginResult) {
+ $timeout(function () {
+ $rootScope.$broadcast('$cordovaBeacon:peripheralManagerDidUpdateState', pluginResult);
+ });
+
+ if (callbackPeripheralManagerDidUpdateState) {
+ callbackPeripheralManagerDidUpdateState(pluginResult);
+ }
+ };
+
+ delegate.didChangeAuthorizationStatus = function (status) {
+ $timeout(function () {
+ $rootScope.$broadcast('$cordovaBeacon:didChangeAuthorizationStatus', status);
+ });
+
+ if (callbackDidChangeAuthorizationStatus) {
+ callbackDidChangeAuthorizationStatus(status);
+ }
+ };
+
+ $window.cordova.plugins.locationManager.setDelegate(delegate);
+ }
+ }, false);
+
+ return {
+ setCallbackDidDetermineStateForRegion: function (callback) {
+ callbackDidDetermineStateForRegion = callback;
+ },
+ setCallbackDidStartMonitoringForRegion: function (callback) {
+ callbackDidStartMonitoringForRegion = callback;
+ },
+ setCallbackDidExitRegion: function (callback) {
+ callbackDidExitRegion = callback;
+ },
+ setCallbackDidEnterRegion: function (callback) {
+ callbackDidEnterRegion = callback;
+ },
+ setCallbackDidRangeBeaconsInRegion: function (callback) {
+ callbackDidRangeBeaconsInRegion = callback;
+ },
+ setCallbackPeripheralManagerDidStartAdvertising: function (callback) {
+ callbackPeripheralManagerDidStartAdvertising = callback;
+ },
+ setCallbackPeripheralManagerDidUpdateState: function (callback) {
+ callbackPeripheralManagerDidUpdateState = callback;
+ },
+ setCallbackDidChangeAuthorizationStatus: function (callback) {
+ callbackDidChangeAuthorizationStatus = callback;
+ },
+ createBeaconRegion: function (identifier, uuid, major, minor, notifyEntryStateOnDisplay) {
+ major = major || undefined;
+ minor = minor || undefined;
+
+ return new $window.cordova.plugins.locationManager.BeaconRegion(
+ identifier,
+ uuid,
+ major,
+ minor,
+ notifyEntryStateOnDisplay
+ );
+ },
+ isBluetoothEnabled: function () {
+ return $q.when($window.cordova.plugins.locationManager.isBluetoothEnabled());
+ },
+ enableBluetooth: function () {
+ return $q.when($window.cordova.plugins.locationManager.enableBluetooth());
+ },
+ disableBluetooth: function () {
+ return $q.when($window.cordova.plugins.locationManager.disableBluetooth());
+ },
+ startMonitoringForRegion: function (region) {
+ return $q.when($window.cordova.plugins.locationManager.startMonitoringForRegion(region));
+ },
+ stopMonitoringForRegion: function (region) {
+ return $q.when($window.cordova.plugins.locationManager.stopMonitoringForRegion(region));
+ },
+ requestStateForRegion: function (region) {
+ return $q.when($window.cordova.plugins.locationManager.requestStateForRegion(region));
+ },
+ startRangingBeaconsInRegion: function (region) {
+ return $q.when($window.cordova.plugins.locationManager.startRangingBeaconsInRegion(region));
+ },
+ stopRangingBeaconsInRegion: function (region) {
+ return $q.when($window.cordova.plugins.locationManager.stopRangingBeaconsInRegion(region));
+ },
+ getAuthorizationStatus: function () {
+ return $q.when($window.cordova.plugins.locationManager.getAuthorizationStatus());
+ },
+ requestWhenInUseAuthorization: function () {
+ return $q.when($window.cordova.plugins.locationManager.requestWhenInUseAuthorization());
+ },
+ requestAlwaysAuthorization: function () {
+ return $q.when($window.cordova.plugins.locationManager.requestAlwaysAuthorization());
+ },
+ getMonitoredRegions: function () {
+ return $q.when($window.cordova.plugins.locationManager.getMonitoredRegions());
+ },
+ getRangedRegions: function () {
+ return $q.when($window.cordova.plugins.locationManager.getRangedRegions());
+ },
+ isRangingAvailable: function () {
+ return $q.when($window.cordova.plugins.locationManager.isRangingAvailable());
+ },
+ isMonitoringAvailableForClass: function (region) {
+ return $q.when($window.cordova.plugins.locationManager.isMonitoringAvailableForClass(region));
+ },
+ startAdvertising: function (region, measuredPower) {
+ return $q.when($window.cordova.plugins.locationManager.startAdvertising(region, measuredPower));
+ },
+ stopAdvertising: function () {
+ return $q.when($window.cordova.plugins.locationManager.stopAdvertising());
+ },
+ isAdvertisingAvailable: function () {
+ return $q.when($window.cordova.plugins.locationManager.isAdvertisingAvailable());
+ },
+ isAdvertising: function () {
+ return $q.when($window.cordova.plugins.locationManager.isAdvertising());
+ },
+ disableDebugLogs: function () {
+ return $q.when($window.cordova.plugins.locationManager.disableDebugLogs());
+ },
+ enableDebugNotifications: function () {
+ return $q.when($window.cordova.plugins.locationManager.enableDebugNotifications());
+ },
+ disableDebugNotifications: function () {
+ return $q.when($window.cordova.plugins.locationManager.disableDebugNotifications());
+ },
+ enableDebugLogs: function () {
+ return $q.when($window.cordova.plugins.locationManager.enableDebugLogs());
+ },
+ appendToDeviceLog: function (message) {
+ return $q.when($window.cordova.plugins.locationManager.appendToDeviceLog(message));
+ }
+ };
+ }]);
+
// install : cordova plugin add https://github.com/don/cordova-plugin-ble-central.git
// link : https://github.com/don/cordova-plugin-ble-central
/* globals ble: true */
angular.module('ngCordova.plugins.ble', [])
- .factory('$cordovaBLE', ['$q', '$timeout', function ($q, $timeout) {
+ .factory('$cordovaBLE', ['$q', '$timeout', '$log', function ($q, $timeout, $log) {
return {
scan: function (services, seconds) {
@@ -529,6 +764,20 @@ angular.module('ngCordova.plugins.ble', [])
return q.promise;
},
+ startScan: function (services, callback, errorCallback) {
+ return ble.startScan(services, callback, errorCallback);
+ },
+
+ stopScan: function () {
+ var q = $q.defer();
+ ble.stopScan(function () {
+ q.resolve();
+ }, function (error) {
+ q.reject(error);
+ });
+ return q.promise;
+ },
+
connect: function (deviceID) {
var q = $q.defer();
ble.connect(deviceID, function (result) {
@@ -569,9 +818,9 @@ angular.module('ngCordova.plugins.ble', [])
return q.promise;
},
- writeCommand: function (deviceID, serviceUUID, characteristicUUID, data) {
+ writeWithoutResponse: function (deviceID, serviceUUID, characteristicUUID, data) {
var q = $q.defer();
- ble.writeCommand(deviceID, serviceUUID, characteristicUUID, data, function (result) {
+ ble.writeWithoutResponse(deviceID, serviceUUID, characteristicUUID, data, function (result) {
q.resolve(result);
}, function (error) {
q.reject(error);
@@ -579,9 +828,18 @@ angular.module('ngCordova.plugins.ble', [])
return q.promise;
},
- startNotification: function (deviceID, serviceUUID, characteristicUUID) {
+ writeCommand: function (deviceID, serviceUUID, characteristicUUID, data) {
+ $log.warning('writeCommand is deprecated, use writeWithoutResponse');
+ return this.writeWithoutResponse(deviceID, serviceUUID, characteristicUUID, data);
+ },
+
+ startNotification: function (deviceID, serviceUUID, characteristicUUID, callback, errorCallback) {
+ return ble.startNotification(deviceID, serviceUUID, characteristicUUID, callback, errorCallback);
+ },
+
+ stopNotification: function (deviceID, serviceUUID, characteristicUUID) {
var q = $q.defer();
- ble.startNotification(deviceID, serviceUUID, characteristicUUID, function (result) {
+ ble.stopNotification(deviceID, serviceUUID, characteristicUUID, function (result) {
q.resolve(result);
}, function (error) {
q.reject(error);
@@ -589,9 +847,9 @@ angular.module('ngCordova.plugins.ble', [])
return q.promise;
},
- stopNotification: function (deviceID, serviceUUID, characteristicUUID) {
+ isConnected: function (deviceID) {
var q = $q.defer();
- ble.stopNotification(deviceID, serviceUUID, characteristicUUID, function (result) {
+ ble.isConnected(deviceID, function (result) {
q.resolve(result);
}, function (error) {
q.reject(error);
@@ -599,9 +857,9 @@ angular.module('ngCordova.plugins.ble', [])
return q.promise;
},
- isConnected: function (deviceID) {
+ enable: function () {
var q = $q.defer();
- ble.isConnected(deviceID, function (result) {
+ ble.enable(function (result) {
q.resolve(result);
}, function (error) {
q.reject(error);
@@ -1332,11 +1590,11 @@ angular.module('ngCordova.plugins.cardIO', [])
* Configuring defaultRespFields using $cordovaNgCardIOProvider
*
*/
- this.setCardIOResponseFields = function (filelds) {
- if (!filelds || !angular.isArray(filelds)) {
+ this.setCardIOResponseFields = function (fields) {
+ if (!fields || !angular.isArray(fields)) {
return;
}
- defaultRespFields = filelds;
+ defaultRespFields = fields;
};
/**
@@ -1526,12 +1784,13 @@ angular.module('ngCordova.plugins.datePicker', [])
options = options || {date: new Date(), mode: 'date'};
$window.datePicker.show(options, function (date) {
q.resolve(date);
+ }, function (error){
+ q.reject(error);
});
return q.promise;
}
};
}]);
-
// install : cordova plugin add cordova-plugin-device
// link : https://github.com/apache/cordova-plugin-device
@@ -1627,6 +1886,7 @@ angular.module('ngCordova.plugins.deviceMotion', [])
if (angular.isUndefined(navigator.accelerometer) ||
!angular.isFunction(navigator.accelerometer.getCurrentAcceleration)) {
q.reject('Device do not support watchAcceleration');
+ return q.promise;
}
navigator.accelerometer.getCurrentAcceleration(function (result) {
@@ -1644,6 +1904,7 @@ angular.module('ngCordova.plugins.deviceMotion', [])
if (angular.isUndefined(navigator.accelerometer) ||
!angular.isFunction(navigator.accelerometer.watchAcceleration)) {
q.reject('Device do not support watchAcceleration');
+ return q.promise;
}
var watchID = navigator.accelerometer.watchAcceleration(function (result) {
@@ -1795,6 +2056,71 @@ angular.module('ngCordova.plugins.dialogs', [])
beep: function (times) {
return navigator.notification.beep(times);
+ },
+
+ activityStart: function (message, title) {
+ var q = $q.defer();
+
+ if (cordova.platformId === 'android') {
+ navigator.notification.activityStart(title, message);
+ q.resolve();
+ } else {
+ q.reject(message, title);
+ }
+
+ return q.promise;
+ },
+
+ activityStop: function () {
+ var q = $q.defer();
+
+ if (cordova.platformId === 'android') {
+ navigator.notification.activityStop();
+ q.resolve();
+ } else {
+ q.reject();
+ }
+
+ return q.promise;
+ },
+
+ progressStart: function (message, title) {
+ var q = $q.defer();
+
+ if (cordova.platformId === 'android') {
+ navigator.notification.progressStart(title, message);
+ q.resolve();
+ } else {
+ q.reject(message, title);
+ }
+
+ return q.promise;
+ },
+
+ progressStop: function () {
+ var q = $q.defer();
+
+ if (cordova.platformId === 'android') {
+ navigator.notification.progressStop();
+ q.resolve();
+ } else {
+ q.reject();
+ }
+
+ return q.promise;
+ },
+
+ progressValue: function (value) {
+ var q = $q.defer();
+
+ if (cordova.platformId === 'android') {
+ navigator.notification.progressValue(value);
+ q.resolve();
+ } else {
+ q.reject(value);
+ }
+
+ return q.promise;
}
};
}]);
@@ -2678,6 +3004,34 @@ angular.module('ngCordova.plugins.file', [])
q.reject(e);
}
return q.promise;
+ },
+
+ readFileMetadata: function (path, file) {
+ var q = $q.defer();
+
+ if ((/^\//.test(file))) {
+ q.reject('directory cannot start with \/');
+ }
+
+ try {
+ var directory = path + file;
+ $window.resolveLocalFileSystemURL(directory, function (fileEntry) {
+ fileEntry.file(function (result) {
+ q.resolve(result);
+ }, function (error) {
+ error.message = $cordovaFileError[error.code];
+ q.reject(error);
+ });
+ }, function (err) {
+ err.message = $cordovaFileError[err.code];
+ q.reject(err);
+ });
+ } catch (e) {
+ e.message = $cordovaFileError[e.code];
+ q.reject(e);
+ }
+
+ return q.promise;
}
/*
@@ -2713,9 +3067,6 @@ angular.module('ngCordova.plugins.file', [])
return q.promise;
},
- readFileMetadata: function (filePath) {
- //return getFile(filePath, {create: false});
- }
*/
};
@@ -4321,7 +4672,7 @@ angular.module('ngCordova.plugins.instagram', [])
if (err) {
q.reject(err);
} else {
- q.resolve(installed || true);
+ q.resolve(installed);
}
});
return q.promise;
@@ -4435,7 +4786,7 @@ angular.module('ngCordova.plugins.launchNavigator', [])
.factory('$cordovaLaunchNavigator', ['$q', function ($q) {
return {
- navigate: function (destination, start, successFn, errorFn, options) {
+ navigate: function (destination, start, options) {
var q = $q.defer();
launchnavigator.navigate(
destination,
@@ -5176,6 +5527,7 @@ angular.module('ngCordova.plugins', [
'ngCordova.plugins.badge',
'ngCordova.plugins.barcodeScanner',
'ngCordova.plugins.batteryStatus',
+ 'ngCordova.plugins.beacon',
'ngCordova.plugins.ble',
'ngCordova.plugins.bluetoothSerial',
'ngCordova.plugins.brightness',
@@ -5221,12 +5573,12 @@ angular.module('ngCordova.plugins', [
'ngCordova.plugins.mopubAds',
'ngCordova.plugins.nativeAudio',
'ngCordova.plugins.network',
- 'ngCordovaOauth',
'ngCordova.plugins.pinDialog',
- 'ngCordova.plugins.prefs',
+ 'ngCordova.plugins.preferences',
'ngCordova.plugins.printer',
'ngCordova.plugins.progressIndicator',
'ngCordova.plugins.push',
+ 'ngCordova.plugins.push_v5',
'ngCordova.plugins.sms',
'ngCordova.plugins.socialSharing',
'ngCordova.plugins.spinnerDialog',
@@ -5365,9 +5717,9 @@ angular.module('ngCordova.plugins.nativeAudio', [])
return q.promise;
},
- preloadComplex: function (id, assetPath, volume, voices) {
+ preloadComplex: function (id, assetPath, volume, voices, delay) {
var q = $q.defer();
- $window.plugins.NativeAudio.preloadComplex(id, assetPath, volume, voices, function (result) {
+ $window.plugins.NativeAudio.preloadComplex(id, assetPath, volume, voices, delay, function (result) {
q.resolve(result);
}, function (err) {
q.reject(err);
@@ -5378,11 +5730,11 @@ angular.module('ngCordova.plugins.nativeAudio', [])
play: function (id, completeCallback) {
var q = $q.defer();
- $window.plugins.NativeAudio.play(id, completeCallback, function (err) {
- q.reject(err);
- }, function (result) {
+ $window.plugins.NativeAudio.play(id, function (result) {
q.resolve(result);
- });
+ }, function (err) {
+ q.reject(err);
+ }, completeCallback);
return q.promise;
},
@@ -5517,38 +5869,165 @@ angular.module('ngCordova.plugins.pinDialog', [])
};
}]);
-// install :
-// link :
+// install : cordova plugin add cordova-plugin-app-preferences
+// link : https://github.com/apla/me.apla.cordova.app-preferences
-angular.module('ngCordova.plugins.prefs', [])
+angular.module('ngCordova.plugins.preferences', [])
.factory('$cordovaPreferences', ['$window', '$q', function ($window, $q) {
- return {
- set: function (key, value) {
- var q = $q.defer();
-
- $window.appgiraffe.plugins.applicationPreferences.set(key, value, function (result) {
- q.resolve(result);
- }, function (err) {
- q.reject(err);
- });
-
- return q.promise;
- },
-
- get: function (key) {
- var q = $q.defer();
-
- $window.appgiraffe.plugins.applicationPreferences.get(key, function (value) {
- q.resolve(value);
- }, function (err) {
- q.reject(err);
- });
-
- return q.promise;
- }
+ return {
+
+ pluginNotEnabledMessage: 'Plugin not enabled',
+
+ /**
+ * Decorate the promise object.
+ * @param promise The promise object.
+ */
+ decoratePromise: function (promise){
+ promise.success = function (fn) {
+ promise.then(fn);
+ return promise;
+ };
+
+ promise.error = function (fn) {
+ promise.then(null, fn);
+ return promise;
+ };
+ },
+
+ /**
+ * Store the value of the given dictionary and key.
+ * @param key The key of the preference.
+ * @param value The value to set.
+ * @param dict The dictionary. It's optional.
+ * @returns Returns a promise.
+ */
+ store: function (key, value, dict) {
+ var deferred = $q.defer();
+ var promise = deferred.promise;
+
+ function ok(value){
+ deferred.resolve(value);
+ }
+
+ function errorCallback(error){
+ deferred.reject(new Error(error));
+ }
+
+ if($window.plugins){
+ var storeResult;
+ if(arguments.length === 3){
+ storeResult = $window.plugins.appPreferences.store(dict, key, value);
+ } else {
+ storeResult = $window.plugins.appPreferences.store(key, value);
+ }
+
+ storeResult.then(ok, errorCallback);
+ } else {
+ deferred.reject(new Error(this.pluginNotEnabledMessage));
+ }
+
+ this.decoratePromise(promise);
+ return promise;
+ },
+
+ /**
+ * Fetch the value by the given dictionary and key.
+ * @param key The key of the preference to retrieve.
+ * @param dict The dictionary. It's optional.
+ * @returns Returns a promise.
+ */
+ fetch: function (key, dict) {
+ var deferred = $q.defer();
+ var promise = deferred.promise;
+
+ function ok(value){
+ deferred.resolve(value);
+ }
+
+ function errorCallback(error){
+ deferred.reject(new Error(error));
+ }
+
+ if($window.plugins){
+ var fetchResult;
+ if(arguments.length === 2){
+ fetchResult = $window.plugins.appPreferences.fetch(dict, key);
+ } else {
+ fetchResult = $window.plugins.appPreferences.fetch(key);
+ }
+ fetchResult.then(ok, errorCallback);
+ } else {
+ deferred.reject(new Error(this.pluginNotEnabledMessage));
+ }
+
+ this.decoratePromise(promise);
+ return promise;
+ },
+
+ /**
+ * Remove the value by the given key.
+ * @param key The key of the preference to retrieve.
+ * @param dict The dictionary. It's optional.
+ * @returns Returns a promise.
+ */
+ remove: function (key, dict) {
+ var deferred = $q.defer();
+ var promise = deferred.promise;
+
+ function ok(value){
+ deferred.resolve(value);
+ }
+
+ function errorCallback(error){
+ deferred.reject(new Error(error));
+ }
+
+ if($window.plugins){
+ var removeResult;
+ if(arguments.length === 2){
+ removeResult = $window.plugins.appPreferences.remove(dict, key);
+ } else {
+ removeResult = $window.plugins.appPreferences.remove(key);
+ }
+ removeResult.then(ok, errorCallback);
+ } else {
+ deferred.reject(new Error(this.pluginNotEnabledMessage));
+ }
+
+ this.decoratePromise(promise);
+ return promise;
+ },
+
+ /**
+ * Show the application preferences.
+ * @returns Returns a promise.
+ */
+ show: function () {
+ var deferred = $q.defer();
+ var promise = deferred.promise;
+
+ function ok(value){
+ deferred.resolve(value);
+ }
+
+ function errorCallback(error){
+ deferred.reject(new Error(error));
+ }
+
+ if($window.plugins){
+ $window.plugins.appPreferences.show()
+ .then(ok, errorCallback);
+ } else {
+ deferred.reject(new Error(this.pluginNotEnabledMessage));
+ }
+
+ this.decoratePromise(promise);
+ return promise;
+ }
};
+
}]);
// install : cordova plugin add https://github.com/katzer/cordova-plugin-printer.git
@@ -5731,6 +6210,156 @@ angular.module('ngCordova.plugins.push', [])
};
}]);
+
+// install : cordova plugin add phonegap-plugin-push
+// link : https://github.com/phonegap/phonegap-plugin-push
+
+angular.module('ngCordova.plugins.push_v5', [])
+ .factory('$cordovaPushV5',['$q', '$rootScope', '$timeout', function ($q, $rootScope, $timeout) {
+ /*global PushNotification*/
+
+ var push;
+ return {
+ initialize : function (options) {
+ var q = $q.defer();
+ push = PushNotification.init(options);
+ q.resolve(push);
+ return q.promise;
+ },
+ onNotification : function () {
+ $timeout(function () {
+ push.on('notification', function (notification) {
+ $rootScope.$emit('$cordovaPushV5:notificationReceived', notification);
+ });
+ });
+ },
+ onError : function () {
+ $timeout(function () {
+ push.on('error', function (error) { $rootScope.$emit('$cordovaPushV5:errorOccurred', error);});
+ });
+ },
+ register : function () {
+ var q = $q.defer();
+ if (push === undefined) {
+ q.reject(new Error('init must be called before any other operation'));
+ } else {
+ push.on('registration', function (data) {
+ q.resolve(data.registrationId);
+ });
+ }
+ return q.promise;
+ },
+ unregister : function () {
+ var q = $q.defer();
+ if (push === undefined) {
+ q.reject(new Error('init must be called before any other operation'));
+ } else {
+ push.unregister(function (success) {
+ q.resolve(success);
+ },function (error) {
+ q.reject(error);
+ });
+ }
+ return q.promise;
+ },
+ getBadgeNumber : function () {
+ var q = $q.defer();
+ if (push === undefined) {
+ q.reject(new Error('init must be called before any other operation'));
+ } else {
+ push.getApplicationIconBadgeNumber(function (success) {
+ q.resolve(success);
+ }, function (error) {
+ q.reject(error);
+ });
+ }
+ return q.promise;
+ },
+ setBadgeNumber : function (number) {
+ var q = $q.defer();
+ if (push === undefined) {
+ q.reject(new Error('init must be called before any other operation'));
+ } else {
+ push.setApplicationIconBadgeNumber(function (success) {
+ q.resolve(success);
+ }, function (error) {
+ q.reject(error);
+ }, number);
+ }
+ return q.promise;
+ },
+ finish: function (){
+ var q = $q.defer();
+ if (push === undefined) {
+ q.reject(new Error('init must be called before any other operation'));
+ } else {
+ push.finish(function (success) {
+ q.resolve(success);
+ }, function (error) {
+ q.reject(error);
+ });
+ }
+ return q.promise;
+ }
+ };
+ }]);
+
+// install : cordova plugin add https://github.com/gitawego/cordova-screenshot.git
+// link : https://github.com/gitawego/cordova-screenshot
+
+angular.module('ngCordova.plugins.screenshot', [])
+.factory('$cordovaScreenshot', ['$q', function ($q) {
+ return {
+ captureToFile: function (opts) {
+
+ var options = opts || {};
+
+ var extension = options.extension || 'jpg';
+ var quality = options.quality || '100';
+
+ var defer = $q.defer();
+
+ if (!navigator.screenshot) {
+ defer.resolve(null);
+ return defer.promise;
+ }
+
+ navigator.screenshot.save(function (error, res) {
+ if (error) {
+ defer.reject(error);
+ } else {
+ defer.resolve(res.filePath);
+ }
+ }, extension, quality, options.filename);
+
+ return defer.promise;
+ },
+ captureToUri: function (opts) {
+
+ var options = opts || {};
+
+ var extension = options.extension || 'jpg';
+ var quality = options.quality || '100';
+
+ var defer = $q.defer();
+
+ if (!navigator.screenshot) {
+ defer.resolve(null);
+ return defer.promise;
+ }
+
+ navigator.screenshot.URI(function (error, res) {
+ if (error) {
+ defer.reject(error);
+ } else {
+ defer.resolve(res.URI);
+ }
+ }, extension, quality, options.filename);
+
+ return defer.promise;
+ }
+ };
+}]);
// install : cordova plugin add https://github.com/cordova-sms/cordova-sms-plugin.git
// link : https://github.com/cordova-sms/cordova-sms-plugin
@@ -5894,6 +6523,8 @@ angular.module('ngCordova.plugins.socialSharing', [])
q.reject();
}
});
+
+ return q.promise;
}
};
}]);
@@ -5945,14 +6576,18 @@ angular.module('ngCordova.plugins.sqlite', [])
return {
openDB: function (options, background) {
- if (typeof options !== 'object') {
- options = {name: options};
- }
- if (typeof background !== 'undefined') {
- options.bgType = background;
+
+ if (angular.isObject(options) && !angular.isString(options)) {
+ if (typeof background !== 'undefined') {
+ options.bgType = background;
+ }
+ return $window.sqlitePlugin.openDatabase(options);
}
- return $window.sqlitePlugin.openDatabase(options);
+ return $window.sqlitePlugin.openDatabase({
+ name: options,
+ bgType: background
+ });
},
execute: function (db, query, binding) {
@@ -6169,7 +6804,6 @@ angular.module('ngCordova.plugins.toast', [])
return q.promise;
},
-
show: function (message, duration, position) {
var q = $q.defer();
$window.plugins.toast.show(message, duration, position, function (response) {
@@ -6178,6 +6812,17 @@ angular.module('ngCordova.plugins.toast', [])
q.reject(error);
});
return q.promise;
+ },
+
+ hide: function () {
+ var q = $q.defer();
+ try {
+ $window.plugins.toast.hide();
+ q.resolve();
+ } catch (error) {
+ q.reject(error && error.message);
+ }
+ return q.promise;
}
};
@@ -6224,6 +6869,51 @@ angular.module('ngCordova.plugins.touchid', [])
};
}]);
+// install : cordova plugin add https://github.com/aerogear/aerogear-cordova-push.git
+// link : https://github.com/aerogear/aerogear-cordova-push
+
+angular.module('ngCordova.plugins.upsPush', [])
+
+ .factory('$cordovaUpsPush', ['$q', '$window', '$rootScope', '$timeout', function ($q, $window, $rootScope, $timeout) {
+ return {
+ register: function (config) {
+ var q = $q.defer();
+
+ $window.push.register(function (notification) {
+ $timeout(function () {
+ $rootScope.$broadcast('$cordovaUpsPush:notificationReceived', notification);
+ });
+ }, function () {
+ q.resolve();
+ }, function (error) {
+ q.reject(error);
+ }, config);
+
+ return q.promise;
+ },
+
+ unregister: function (options) {
+ var q = $q.defer();
+ $window.push.unregister(function () {
+ q.resolve();
+ }, function (error) {
+ q.reject(error);
+ }, options);
+
+ return q.promise;
+ },
+
+ // iOS only
+ setBadgeNumber: function (number) {
+ var q = $q.defer();
+ $window.push.setApplicationIconBadgeNumber(function () {
+ q.resolve();
+ }, number);
+ return q.promise;
+ }
+ };
+ }]);
+
// install : cordova plugin add cordova-plugin-vibration
// link : https://github.com/apache/cordova-plugin-vibration
@@ -6368,1834 +7058,4 @@ angular.module('ngCordova.plugins.zip', [])
};
}]);
-angular.module("oauth.providers", ["oauth.utils"])
-
- .factory("$cordovaOauth", ["$q", '$http', "$cordovaOauthUtility", function($q, $http, $cordovaOauthUtility) {
-
- return {
-
- /*
- * Sign into the ADFS service (ADFS 3.0 onwards)
- *
- * @param string clientId (client registered in ADFS, with redirect_uri configured to: http://localhost/callback)
- * @param string adfsServer (url of the ADFS Server)
- * @param string relyingPartyId (url of the Relying Party (resource relying on ADFS for authentication) configured in ADFS)
- * @return promise
- */
- adfs: function(clientId, adfsServer, relyingPartyId) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var browserRef = window.open(adfsServer + '/adfs/oauth2/authorize?response_type=code&client_id=' + clientId +'&redirect_uri=http://localhost/callback&resource=' + relyingPartyId, '_blank', 'location=no');
-
- browserRef.addEventListener("loadstart", function(event) {
- if((event.url).indexOf('http://localhost/callback') === 0) {
- var requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: adfsServer + "/adfs/oauth2/token", data: "client_id=" + clientId + "&code=" + requestToken + "&redirect_uri=http://localhost/callback&grant_type=authorization_code" })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Dropbox service
- *
- * @param string appKey
- * @param object options
- * @return promise
- */
- dropbox: function(appKey, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open("https://www.dropbox.com/1/oauth2/authorize?client_id=" + appKey + "&redirect_uri=" + redirect_uri + "&response_type=token", "_blank", "location=no,clearsessioncache=yes,clearcache=yes");
- browserRef.addEventListener("loadstart", function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = [];
- for(var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- deferred.resolve({ access_token: parameterMap.access_token, token_type: parameterMap.token_type, uid: parameterMap.uid });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Digital Ocean service
- *
- * @param string clientId
- * @param string clientSecret
- * @param object options
- * @return promise
- */
- digitalOcean: function(clientId, clientSecret, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open("https://cloud.digitalocean.com/v1/oauth/authorize?client_id=" + clientId + "&redirect_uri=" + redirect_uri + "&response_type=code&scope=read%20write", "_blank", "location=no,clearsessioncache=yes,clearcache=yes");
- browserRef.addEventListener("loadstart", function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- var requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://cloud.digitalocean.com/v1/oauth/token", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&redirect_uri=" + redirect_uri + "&grant_type=authorization_code" + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Google service
- *
- * @param string clientId
- * @param array appScope
- * @param object options
- * @return promise
- */
- google: function(clientId, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://accounts.google.com/o/oauth2/auth?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope.join(" ") + '&approval_prompt=force&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener("loadstart", function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = [];
- for(var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- deferred.resolve({ access_token: parameterMap.access_token, token_type: parameterMap.token_type, expires_in: parameterMap.expires_in });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the GitHub service
- *
- * @param string clientId
- * @param string clientSecret
- * @param array appScope
- * @param object options
- * @return promise
- */
- github: function(clientId, clientSecret, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://github.com/login/oauth/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope.join(","), '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http.defaults.headers.post.accept = 'application/json';
- $http({method: "post", url: "https://github.com/login/oauth/access_token", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&redirect_uri=" + redirect_uri + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Facebook service
- *
- * @param string clientId
- * @param array appScope
- * @param object options
- * @return promise
- */
- facebook: function(clientId, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var flowUrl = "https://www.facebook.com/v2.0/dialog/oauth?client_id=" + clientId + "&redirect_uri=" + redirect_uri + "&response_type=token&scope=" + appScope.join(",");
- if(options !== undefined && options.hasOwnProperty("auth_type")) {
- flowUrl += "&auth_type=" + options.auth_type;
- }
- var browserRef = window.open(flowUrl, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = [];
- for(var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- deferred.resolve({ access_token: parameterMap.access_token, expires_in: parameterMap.expires_in });
- } else {
- if ((event.url).indexOf("error_code=100") !== 0)
- deferred.reject("Facebook returned error_code=100: Invalid permissions");
- else
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the LinkedIn service
- *
- * @param string clientId
- * @param string clientSecret
- * @param array appScope
- * @param string state
- * @param object options
- * @return promise
- */
- linkedin: function(clientId, clientSecret, appScope, state, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
-
- var browserRef = window.open('https://www.linkedin.com/uas/oauth2/authorization?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope.join(" ") + '&response_type=code&state=' + state, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
-
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://www.linkedin.com/uas/oauth2/accessToken", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&redirect_uri=" + redirect_uri + "&grant_type=authorization_code" + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Instagram service
- *
- * @param string clientId
- * @param array appScope
- * @param object options
- * @return promise
- */
- instagram: function(clientId, appScope, options) {
- var deferred = $q.defer();
-
- var split_tokens = {
- 'code':'?',
- 'token':'#'
- };
-
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- var response_type = "token";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- if(options.hasOwnProperty("response_type")) {
- response_type = options.response_type;
- }
- }
-
- var browserRef = window.open('https://api.instagram.com/oauth/authorize/?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope.join(" ") + '&response_type='+response_type, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split(split_tokens[response_type])[1];
- var parameterMap = $cordovaOauthUtility.parseResponseParameters(callbackResponse);
- if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- deferred.resolve({ access_token: parameterMap.access_token });
- } else if(parameterMap.code !== undefined && parameterMap.code !== null) {
- deferred.resolve({ code: parameterMap.code });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Box service
- *
- * @param string clientId
- * @param string clientSecret
- * @param string appState
- * @param object options
- * @return promise
- */
- box: function(clientId, clientSecret, appState, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://app.box.com/api/oauth2/authorize/?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&state=' + appState + '&response_type=code', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://app.box.com/api/oauth2/token", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&redirect_uri=" + redirect_uri + "&grant_type=authorization_code" + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Reddit service
- *
- * @param string clientId
- * @param string clientSecret
- * @param array appScope
- * @param object options
- * @return promise
- */
- reddit: function(clientId, clientSecret, appScope, compact, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://ssl.reddit.com/api/v1/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&duration=permanent&state=ngcordovaoauth&scope=' + appScope.join(",") + '&response_type=code', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http.defaults.headers.post.Authorization = 'Basic ' + btoa(clientId + ":" + clientSecret);
- $http({method: "post", url: "https://ssl.reddit.com/api/v1/access_token", data: "redirect_uri=" + redirect_uri + "&grant_type=authorization_code" + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Twitter service
- * Note that this service requires jsSHA for generating HMAC-SHA1 Oauth 1.0 signatures
- *
- * @param string clientId
- * @param string clientSecret
- * @return promise
- */
- twitter: function(clientId, clientSecret, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
-
- if(typeof jsSHA !== "undefined") {
- var oauthObject = {
- oauth_consumer_key: clientId,
- oauth_nonce: $cordovaOauthUtility.createNonce(10),
- oauth_signature_method: "HMAC-SHA1",
- oauth_timestamp: Math.round((new Date()).getTime() / 1000.0),
- oauth_version: "1.0"
- };
- var signatureObj = $cordovaOauthUtility.createSignature("POST", "https://api.twitter.com/oauth/request_token", oauthObject, { oauth_callback: redirect_uri }, clientSecret);
- $http({
- method: "post",
- url: "https://api.twitter.com/oauth/request_token",
- headers: {
- "Authorization": signatureObj.authorization_header,
- "Content-Type": "application/x-www-form-urlencoded"
- },
- data: "oauth_callback=" + encodeURIComponent(redirect_uri)
- })
- .success(function(requestTokenResult) {
- var requestTokenParameters = (requestTokenResult).split("&");
- var parameterMap = {};
- for(var i = 0; i < requestTokenParameters.length; i++) {
- parameterMap[requestTokenParameters[i].split("=")[0]] = requestTokenParameters[i].split("=")[1];
- }
- if(parameterMap.hasOwnProperty("oauth_token") === false) {
- deferred.reject("Oauth request token was not received");
- }
- var browserRef = window.open('https://api.twitter.com/oauth/authenticate?oauth_token=' + parameterMap.oauth_token, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- var callbackResponse = (event.url).split("?")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = {};
- for(var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if(parameterMap.hasOwnProperty("oauth_verifier") === false) {
- deferred.reject("Browser authentication failed to complete. No oauth_verifier was returned");
- }
- delete oauthObject.oauth_signature;
- oauthObject.oauth_token = parameterMap.oauth_token;
- var signatureObj = $cordovaOauthUtility.createSignature("POST", "https://api.twitter.com/oauth/access_token", oauthObject, { oauth_verifier: parameterMap.oauth_verifier }, clientSecret);
- $http({
- method: "post",
- url: "https://api.twitter.com/oauth/access_token",
- headers: {
- "Authorization": signatureObj.authorization_header
- },
- params: {
- "oauth_verifier": parameterMap.oauth_verifier
- }
- })
- .success(function(result) {
- var accessTokenParameters = result.split("&");
- var parameterMap = {};
- for(var i = 0; i < accessTokenParameters.length; i++) {
- parameterMap[accessTokenParameters[i].split("=")[0]] = accessTokenParameters[i].split("=")[1];
- }
- if(parameterMap.hasOwnProperty("oauth_token_secret") === false) {
- deferred.reject("Oauth access token was not received");
- }
- deferred.resolve(parameterMap);
- })
- .error(function(error) {
- deferred.reject(error);
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- })
- .error(function(error) {
- deferred.reject(error);
- });
- } else {
- deferred.reject("Missing jsSHA JavaScript library");
- }
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Meetup service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- meetup: function(clientId, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://secure.meetup.com/oauth2/authorize/?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = {};
- for(var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- deferred.resolve(parameterMap);
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Salesforce service
- *
- * Suggestion: use salesforce oauth with forcetk.js(as SDK)
- *
- * @param string loginUrl (such as: https://login.salesforce.com ; please notice community login)
- * @param string clientId (copy from connection app info)
- * @param string redirectUri (callback url in connection app info)
- * @return promise
- */
- salesforce: function (loginUrl, clientId) {
- var redirectUri = 'http://localhost/callback';
- var getAuthorizeUrl = function (loginUrl, clientId, redirectUri) {
- return loginUrl+'services/oauth2/authorize?display=touch'+
- '&response_type=token&client_id='+escape(clientId)+
- '&redirect_uri='+escape(redirectUri);
- };
- var startWith = function(string, str) {
- return (string.substr(0, str.length) === str);
- };
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var browserRef = window.open(getAuthorizeUrl(loginUrl, clientId, redirectUri), "_blank", "location=no,clearsessioncache=yes,clearcache=yes");
- browserRef.addEventListener("loadstart", function(event) {
- if(startWith(event.url, redirectUri)) {
- var oauthResponse = {};
-
- var fragment = (event.url).split('#')[1];
-
- if (fragment) {
- var nvps = fragment.split('&');
- for (var nvp in nvps) {
- var parts = nvps[nvp].split('=');
- oauthResponse[parts[0]] = unescape(parts[1]);
- }
- }
-
- if (typeof oauthResponse === 'undefined' ||
- typeof oauthResponse.access_token === 'undefined') {
- deferred.reject("Problem authenticating");
- } else {
- deferred.resolve(oauthResponse);
- }
- setTimeout(function() {
- browserRef.close();
- }, 10);
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Strava service
- *
- * @param string clientId
- * @param string clientSecret
- * @param array appScope
- * @param object options
- * @return promise
- */
- strava: function(clientId, clientSecret, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://www.strava.com/oauth/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope.join(",") + '&response_type=code&approval_prompt=force', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://www.strava.com/oauth/token", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Withings service
- * Note that this service requires jsSHA for generating HMAC-SHA1 Oauth 1.0 signatures
- *
- * @param string clientId
- * @param string clientSecret
- * @return promise
- */
- withings: function(clientId, clientSecret) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- if(typeof jsSHA !== "undefined") {
-
- // Step 1 : get a oAuth "request token"
- var oauthObject = $cordovaOauthUtility.generateOauthParametersInstance(clientId);
- oauthObject.oauth_callback = 'http://localhost/callback';
-
- var requestTokenUrlBase = "https://oauth.withings.com/account/request_token";
- var signatureObj = $cordovaOauthUtility.createSignature("GET", requestTokenUrlBase, {}, oauthObject, clientSecret);
- oauthObject.oauth_signature = signatureObj.signature;
-
- var requestTokenParameters = $cordovaOauthUtility.generateUrlParameters(oauthObject);
-
- $http({method: "get", url: requestTokenUrlBase + "?" + requestTokenParameters })
- .success(function(requestTokenResult) {
-
- // Step 2 : End-user authorization
- var parameterMap = $cordovaOauthUtility.parseResponseParameters(requestTokenResult);
- if(parameterMap.hasOwnProperty("oauth_token") === false) {
- deferred.reject("Oauth request token was not received");
- }
- var oauthObject = $cordovaOauthUtility.generateOauthParametersInstance(clientId);
- oauthObject.oauth_token = parameterMap.oauth_token;
-
- // used in step 3
- var oauthTokenSecret = parameterMap.oauth_token_secret;
-
- var authorizeUrlBase = "https://oauth.withings.com/account/authorize";
- var signatureObj = $cordovaOauthUtility.createSignature("GET", authorizeUrlBase, {}, oauthObject, clientSecret);
- oauthObject.oauth_signature = signatureObj.signature;
-
- var authorizeParameters = $cordovaOauthUtility.generateUrlParameters(oauthObject);
- var browserRef = window.open(authorizeUrlBase + '?' + authorizeParameters, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
-
- // STEP 3: User Data Access token
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf("http://localhost/callback") === 0) {
- var callbackResponse = (event.url).split("?")[1];
- parameterMap = $cordovaOauthUtility.parseResponseParameters(callbackResponse);
- if(parameterMap.hasOwnProperty("oauth_verifier") === false) {
- deferred.reject("Browser authentication failed to complete. No oauth_verifier was returned");
- }
-
- var oauthObject = $cordovaOauthUtility.generateOauthParametersInstance(clientId);
- oauthObject.oauth_token = parameterMap.oauth_token;
-
- var accessTokenUrlBase = "https://oauth.withings.com/account/access_token";
- var signatureObj = $cordovaOauthUtility.createSignature("GET", accessTokenUrlBase, {}, oauthObject, clientSecret, oauthTokenSecret);
- oauthObject.oauth_signature = signatureObj.signature;
-
- var accessTokenParameters = $cordovaOauthUtility.generateUrlParameters(oauthObject);
-
- $http({method: "get", url: accessTokenUrlBase + '?' + accessTokenParameters})
- .success(function(result) {
- var parameterMap = $cordovaOauthUtility.parseResponseParameters(result);
- if(parameterMap.hasOwnProperty("oauth_token_secret") === false) {
- deferred.reject("Oauth access token was not received");
- }
- deferred.resolve(parameterMap);
- })
- .error(function(error) {
- deferred.reject(error);
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- })
- .error(function(error) {
- deferred.reject(error);
- });
- } else {
- deferred.reject("Missing jsSHA JavaScript library");
- }
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Foursquare service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- foursquare: function(clientId, options) {
- var deferred = $q.defer();
- if (window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if ($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://foursquare.com/oauth2/authenticate?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function (event) {
- if ((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = [];
- for (var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if (parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- var promiseResponse = {
- access_token: parameterMap.access_token,
- expires_in: parameterMap.expires_in
- };
- deferred.resolve(promiseResponse);
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Magento service
- * Note that this service requires jsSHA for generating HMAC-SHA1 Oauth 1.0 signatures
- *
- * @param string baseUrl
- * @param string clientId
- * @param string clientSecret
- * @return promise
- */
- magento: function(baseUrl, clientId, clientSecret) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- if(typeof jsSHA !== "undefined") {
- var oauthObject = {
- oauth_callback: "http://localhost/callback",
- oauth_consumer_key: clientId,
- oauth_nonce: $cordovaOauthUtility.createNonce(5),
- oauth_signature_method: "HMAC-SHA1",
- oauth_timestamp: Math.round((new Date()).getTime() / 1000.0),
- oauth_version: "1.0"
- };
- var signatureObj = $cordovaOauthUtility.createSignature("POST", baseUrl + "/oauth/initiate", oauthObject, { oauth_callback: "http://localhost/callback" }, clientSecret);
- $http.defaults.headers.post.Authorization = signatureObj.authorization_header;
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: baseUrl + "/oauth/initiate", data: "oauth_callback=http://localhost/callback" })
- .success(function(requestTokenResult) {
- var requestTokenParameters = (requestTokenResult).split("&");
- var parameterMap = {};
- for(var i = 0; i < requestTokenParameters.length; i++) {
- parameterMap[requestTokenParameters[i].split("=")[0]] = requestTokenParameters[i].split("=")[1];
- }
- if(parameterMap.hasOwnProperty("oauth_token") === false) {
- deferred.reject("Oauth request token was not received");
- }
- var tokenSecret = parameterMap.oauth_token_secret;
- var browserRef = window.open(baseUrl + '/oauth/authorize?oauth_token=' + parameterMap.oauth_token, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf("http://localhost/callback") === 0) {
- var callbackResponse = (event.url).split("?")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = {};
- for(var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if(parameterMap.hasOwnProperty("oauth_verifier") === false) {
- deferred.reject("Browser authentication failed to complete. No oauth_verifier was returned");
- }
- delete oauthObject.oauth_signature;
- delete oauthObject.oauth_callback;
- oauthObject.oauth_token = parameterMap.oauth_token;
- oauthObject.oauth_nonce = $cordovaOauthUtility.createNonce(5);
- oauthObject.oauth_verifier = parameterMap.oauth_verifier;
- var signatureObj = $cordovaOauthUtility.createSignature("POST", baseUrl + "/oauth/token", oauthObject, {}, clientSecret, tokenSecret);
- $http.defaults.headers.post.Authorization = signatureObj.authorization_header;
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: baseUrl + "/oauth/token" })
- .success(function(result) {
- var accessTokenParameters = result.split("&");
- var parameterMap = {};
- for(var i = 0; i < accessTokenParameters.length; i++) {
- parameterMap[accessTokenParameters[i].split("=")[0]] = accessTokenParameters[i].split("=")[1];
- }
- if(parameterMap.hasOwnProperty("oauth_token_secret") === false) {
- deferred.reject("Oauth access token was not received");
- }
- deferred.resolve(parameterMap);
- })
- .error(function(error) {
- deferred.reject(error);
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- })
- .error(function(error) {
- deferred.reject(error);
- });
- } else {
- deferred.reject("Missing jsSHA JavaScript library");
- }
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Vkontakte service
- *
- * @param string clientId
- * @param array appScope (for example: "friends,wall,photos,messages")
- * @return promise
- */
- vkontakte: function(clientId, appScope) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var browserRef = window.open('https://oauth.vk.com/authorize?client_id=' + clientId + '&redirect_uri=http://oauth.vk.com/blank.html&response_type=token&scope=' + appScope.join(",") + '&display=touch&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- var tmp = (event.url).split("#");
- if (tmp[0] == 'https://oauth.vk.com/blank.html' || tmp[0] == 'http://oauth.vk.com/blank.html') {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = [];
- for(var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- var output = { access_token: parameterMap.access_token, expires_in: parameterMap.expires_in };
- if(parameterMap.email !== undefined && parameterMap.email !== null){
- output.email = parameterMap.email;
- }
- deferred.resolve(output);
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Odnoklassniki service
- *
- * @param string clientId
- * @param array appScope (for example: "VALUABLE_ACCESS ,GROUP_CONTENT,VIDEO_CONTENT")
- * @return promise
- */
- odnoklassniki: function (clientId, appScope)
- {
- var deferred = $q.defer();
- if (window.cordova)
- {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if ($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true)
- {
- var browserRef = window.open('http://www.odnoklassniki.ru/oauth/authorize?client_id=' + clientId + '&scope=' + appScope.join(",") + '&response_type=token&redirect_uri=http://localhost/callback' + '&layout=m', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function (event)
- {
- if ((event.url).indexOf("http://localhost/callback") === 0)
- {
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = [];
- for (var i = 0; i < responseParameters.length; i++)
- {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if (parameterMap.access_token !== undefined && parameterMap.access_token !== null)
- {
- deferred.resolve({ access_token: parameterMap.access_token, session_secret_key: parameterMap.session_secret_key });
- } else
- {
- deferred.reject("Problem authenticating");
- }
- setTimeout(function ()
- {
- browserRef.close();
- }, 10);
- }
- });
- browserRef.addEventListener('exit', function (event)
- {
- deferred.reject("The sign in flow was canceled");
- });
- } else
- {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else
- {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
-
- /*
- * Sign into the Imgur service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- imgur: function(clientId, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://api.imgur.com/oauth2/authorize?client_id=' + clientId + '&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = [];
- for(var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- deferred.resolve({ access_token: parameterMap.access_token, expires_in: parameterMap.expires_in, account_username: parameterMap.account_username });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Spotify service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- spotify: function(clientId, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://accounts.spotify.com/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token&scope=' + appScope.join(" "), '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = [];
- for(var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- deferred.resolve({ access_token: parameterMap.access_token, expires_in: parameterMap.expires_in, account_username: parameterMap.account_username });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Uber service
- *
- * @param string clientId
- * @param appScope array
- * @param object options
- * @return promise
- */
- uber: function(clientId, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://login.uber.com/oauth/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token&scope=' + appScope.join(" "), '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = [];
- for(var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- deferred.resolve({ access_token: parameterMap.access_token, token_type: parameterMap.token_type, expires_in: parameterMap.expires_in, scope: parameterMap.scope });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Windows Live Connect service
- *
- * @param string clientId
- * @param array appScope
- * @param object options
- * @return promise
- */
- windowsLive: function (clientId, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "https://login.live.com/oauth20_desktop.srf";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://login.live.com/oauth20_authorize.srf?client_id=' + clientId + "&scope=" + appScope.join(",") + '&response_type=token&display=touch' + '&redirect_uri=' + redirect_uri, '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function (event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit", function (event) { });
- browserRef.close();
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = [];
- for (var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if (parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- deferred.resolve({ access_token: parameterMap.access_token, expires_in: parameterMap.expires_in });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function (event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Yammer service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- yammer: function(clientId, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://www.yammer.com/dialog/oauth?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = [];
- for(var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- deferred.resolve({ access_token: parameterMap.access_token });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Venmo service
- *
- * @param string clientId
- * @param array appScope
- * @param object options
- * @return promise
- */
- venmo: function(clientId, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://api.venmo.com/v1/oauth/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token&scope=' + appScope.join(" "), '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = [];
- for(var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- deferred.resolve({ access_token: parameterMap.access_token, expires_in: parameterMap.expires_in });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Stripe service
- *
- * @param string clientId
- * @param string clientSecret
- * @param string appScope
- * @param object options
- * @return promise
- */
- stripe: function(clientId, clientSecret, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://connect.stripe.com/oauth/authorize?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope + '&response_type=code', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf("http://localhost/callback") === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://connect.stripe.com/oauth/token", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&redirect_uri=" + redirect_uri + "&grant_type=authorization_code" + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Rally service
- *
- * @param string clientId
- * @param string clientSecret
- * @param string appScope
- * @param object options
- * @return promise
- */
- rally: function(clientId, clientSecret, appScope, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://rally1.rallydev.com/login/oauth2/auth?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&scope=' + appScope + '&response_type=code', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf("http://localhost/callback") === 0) {
- requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://rally1.rallydev.com/login/oauth2/auth", data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&redirect_uri=" + redirect_uri + "&grant_type=authorization_code" + "&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the FamilySearch service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- familySearch: function(clientId, state, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if(cordovaMetadata.hasOwnProperty("cordova-plugin-inappbrowser") === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open("https://ident.familysearch.org/cis-web/oauth2/v3/authorization?client_id=" + clientId + "&redirect_uri=" + redirect_uri + "&response_type=code&state=" + state, "_blank", "location=no,clearsessioncache=yes,clearcache=yes");
- browserRef.addEventListener("loadstart", function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- var requestToken = (event.url).split("code=")[1];
- $http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- $http({method: "post", url: "https://ident.familysearch.org/cis-web/oauth2/v3/token", data: "client_id=" + clientId + "&redirect_uri=" + redirect_uri + "&grant_type=authorization_code&code=" + requestToken })
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(data, status) {
- deferred.reject("Problem authenticating");
- })
- .finally(function() {
- setTimeout(function() {
- browserRef.close();
- }, 10);
- });
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- },
-
- /*
- * Sign into the Envato service
- *
- * @param string clientId
- * @param object options
- * @return promise
- */
- envato: function(clientId, options) {
- var deferred = $q.defer();
- if(window.cordova) {
- var cordovaMetadata = cordova.require("cordova/plugin_list").metadata;
- if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata) === true) {
- var redirect_uri = "http://localhost/callback";
- if(options !== undefined) {
- if(options.hasOwnProperty("redirect_uri")) {
- redirect_uri = options.redirect_uri;
- }
- }
- var browserRef = window.open('https://api.envato.com/authorization?client_id=' + clientId + '&redirect_uri=' + redirect_uri + '&response_type=token', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
- browserRef.addEventListener('loadstart', function(event) {
- if((event.url).indexOf(redirect_uri) === 0) {
- browserRef.removeEventListener("exit",function(event){});
- browserRef.close();
- var callbackResponse = (event.url).split("#")[1];
- var responseParameters = (callbackResponse).split("&");
- var parameterMap = [];
- for(var i = 0; i < responseParameters.length; i++) {
- parameterMap[responseParameters[i].split("=")[0]] = responseParameters[i].split("=")[1];
- }
- if(parameterMap.access_token !== undefined && parameterMap.access_token !== null) {
- deferred.resolve({ access_token: parameterMap.access_token, expires_in: parameterMap.expires_in });
- } else {
- deferred.reject("Problem authenticating");
- }
- }
- });
- browserRef.addEventListener('exit', function(event) {
- deferred.reject("The sign in flow was canceled");
- });
- } else {
- deferred.reject("Could not find InAppBrowser plugin");
- }
- } else {
- deferred.reject("Cannot authenticate via a web browser");
- }
- return deferred.promise;
- }
-
- };
-
- }]);
-
-/*
- * Cordova AngularJS Oauth
- *
- * Created by Nic Raboy
- * http://www.nraboy.com
- *
- *
- *
- * DESCRIPTION:
- *
- * Use Oauth sign in for various web services.
- *
- *
- * REQUIRES:
- *
- * Apache Cordova 3.5+
- * Apache InAppBrowser Plugin
- * Apache Cordova Whitelist Plugin
- *
- *
- * SUPPORTS:
- *
- * Dropbox
- * Digital Ocean
- * Google
- * GitHub
- * Facebook
- * LinkedIn
- * Instagram
- * Box
- * Reddit
- * Twitter
- * Meetup
- * Salesforce
- * Strava
- * Withings
- * Foursquare
- * Magento
- * vkontakte
- * Odnoklassniki
- * ADFS
- * Imgur
- * Spotify
- * Uber
- * Windows Live Connect
- * Yammer
- * Venmo
- * Stripe
- * Rally
- * Family Search
- * Envato
- */
-
-angular.module("ngCordovaOauth", [
- "oauth.providers",
- "oauth.utils"
-]);
-
-angular.module("oauth.utils", [])
-
- .factory("$cordovaOauthUtility", ["$q", function($q) {
-
- return {
-
- /*
- * Check to see if the mandatory InAppBrowser plugin is installed
- *
- * @param
- * @return boolean
- */
- isInAppBrowserInstalled: function(cordovaMetadata) {
- var inAppBrowserNames = ["cordova-plugin-inappbrowser", "org.apache.cordova.inappbrowser"];
-
- return inAppBrowserNames.some(function(name) {
- return cordovaMetadata.hasOwnProperty(name);
- });
- },
-
- /*
- * Sign an Oauth 1.0 request
- *
- * @param string method
- * @param string endPoint
- * @param object headerParameters
- * @param object bodyParameters
- * @param string secretKey
- * @param string tokenSecret (optional)
- * @return object
- */
- createSignature: function(method, endPoint, headerParameters, bodyParameters, secretKey, tokenSecret) {
- if(typeof jsSHA !== "undefined") {
- var headerAndBodyParameters = angular.copy(headerParameters);
- var bodyParameterKeys = Object.keys(bodyParameters);
- for(var i = 0; i < bodyParameterKeys.length; i++) {
- headerAndBodyParameters[bodyParameterKeys[i]] = encodeURIComponent(bodyParameters[bodyParameterKeys[i]]);
- }
- var signatureBaseString = method + "&" + encodeURIComponent(endPoint) + "&";
- var headerAndBodyParameterKeys = (Object.keys(headerAndBodyParameters)).sort();
- for(i = 0; i < headerAndBodyParameterKeys.length; i++) {
- if(i == headerAndBodyParameterKeys.length - 1) {
- signatureBaseString += encodeURIComponent(headerAndBodyParameterKeys[i] + "=" + headerAndBodyParameters[headerAndBodyParameterKeys[i]]);
- } else {
- signatureBaseString += encodeURIComponent(headerAndBodyParameterKeys[i] + "=" + headerAndBodyParameters[headerAndBodyParameterKeys[i]] + "&");
- }
- }
- var oauthSignatureObject = new jsSHA(signatureBaseString, "TEXT");
-
- var encodedTokenSecret = '';
- if (tokenSecret) {
- encodedTokenSecret = encodeURIComponent(tokenSecret);
- }
-
- headerParameters.oauth_signature = encodeURIComponent(oauthSignatureObject.getHMAC(encodeURIComponent(secretKey) + "&" + encodedTokenSecret, "TEXT", "SHA-1", "B64"));
- var headerParameterKeys = Object.keys(headerParameters);
- var authorizationHeader = 'OAuth ';
- for(i = 0; i < headerParameterKeys.length; i++) {
- if(i == headerParameterKeys.length - 1) {
- authorizationHeader += headerParameterKeys[i] + '="' + headerParameters[headerParameterKeys[i]] + '"';
- } else {
- authorizationHeader += headerParameterKeys[i] + '="' + headerParameters[headerParameterKeys[i]] + '",';
- }
- }
- return { signature_base_string: signatureBaseString, authorization_header: authorizationHeader, signature: headerParameters.oauth_signature };
- } else {
- return "Missing jsSHA JavaScript library";
- }
- },
-
- /*
- * Create Random String Nonce
- *
- * @param integer length
- * @return string
- */
- createNonce: function(length) {
- var text = "";
- var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- for(var i = 0; i < length; i++) {
- text += possible.charAt(Math.floor(Math.random() * possible.length));
- }
- return text;
- },
-
- generateUrlParameters: function (parameters) {
- var sortedKeys = Object.keys(parameters);
- sortedKeys.sort();
-
- var params = "";
- var amp = "";
-
- for (var i = 0 ; i < sortedKeys.length; i++) {
- params += amp + sortedKeys[i] + "=" + parameters[sortedKeys[i]];
- amp = "&";
- }
-
- return params;
- },
-
- parseResponseParameters: function (response) {
- if (response.split) {
- var parameters = response.split("&");
- var parameterMap = {};
- for(var i = 0; i < parameters.length; i++) {
- parameterMap[parameters[i].split("=")[0]] = parameters[i].split("=")[1];
- }
- return parameterMap;
- }
- else {
- return {};
- }
- },
-
- generateOauthParametersInstance: function(consumerKey) {
- var nonceObj = new jsSHA(Math.round((new Date()).getTime() / 1000.0), "TEXT");
- var oauthObject = {
- oauth_consumer_key: consumerKey,
- oauth_nonce: nonceObj.getHash("SHA-1", "HEX"),
- oauth_signature_method: "HMAC-SHA1",
- oauth_timestamp: Math.round((new Date()).getTime() / 1000.0),
- oauth_version: "1.0"
- };
- return oauthObject;
- }
-
- };
-
- }]);
-
})(); \ No newline at end of file