コード例 #1
0
        public Task<CMResponse> BulkRemoveChannelSubscribers(string channelName, string[] userIdsToRemove)
        {
            var opts = new CMRequestOptions();
            opts.Parameters.Add("ids", userIdsToRemove.ToString());

            return APIService.Request(Application, string.Format("push/channel/{0}/user_ids", channelName), HttpMethod.Delete, null, opts);
        }
コード例 #2
0
        public CMRequestOptions(CMRequestOptions opts, CMUser user)
            : this()
        {
            this.Merge(opts);

            if (user != null && !string.IsNullOrEmpty(user.Session))
                this.Headers["X-CloudMine-SessionToken"] = user.Session;
        }
コード例 #3
0
        public void SearchObjectByClassAndCount()
        {
            Task<CMUserResponse<CMUserProfileMock>> loginResponse = userService.Login<CMUserProfileMock> (user);
            loginResponse.Wait ();

            // ensure the login was successful
            Assert.AreEqual (loginResponse.Result.Status, HttpStatusCode.OK);
            Assert.That (loginResponse.Result.HasErrors, Is.False);
            Assert.AreEqual (loginResponse.Result.CMUser.Session, user.Session); // ensure session set

            // lets create a user object
            PIIMock pii = new PIIMock () {
                FirstName = "Jane",
                LastName = "Doe",
                SocialSecurityNumber = "333-22-4444"
            };

            Task<CMObjectResponse> objResponse = userService.SetUserObject<PIIMock> (user, pii);
            objResponse.Wait ();

            Assert.AreEqual (objResponse.Result.Status, HttpStatusCode.OK);
            Assert.That (objResponse.Result.HasErrors, Is.False);
            Assert.That (objResponse.Result.Success.ContainsKey(pii.ID), Is.True);

            // get by id
            Task<CMObjectFetchResponse<PIIMock>> getResponse = userService.GetUserObject<PIIMock> (user, pii.ID);
            getResponse.Wait ();

            Assert.AreEqual (getResponse.Result.Status, HttpStatusCode.OK);

            CMRequestOptions opts = new CMRequestOptions () {
                Parameters = new System.Collections.Generic.Dictionary<string, string> () {
                    { "shared", "true" },
                    { "shared_only", "false" }
                }
            };

            // search
            Task<CMObjectSearchResponse<PIIMock>> searchResponse = userService.SearchUserObjects<PIIMock> (user, @"[__class__=""PIIMock"", FirstName=""Jane""]", opts);
            searchResponse.Wait ();

            Assert.AreEqual (searchResponse.Result.Status, HttpStatusCode.OK);
            Assert.That (searchResponse.Result.HasErrors, Is.False);
            Assert.That (searchResponse.Result.Success.ContainsKey (pii.ID), Is.True);
            Assert.AreEqual (searchResponse.Result.Success [pii.ID].GetType (), typeof(PIIMock));
        }
コード例 #4
0
 public CMRequestOptions(CMRequestOptions opts)
     : this()
 {
     this.Merge(opts);
 }
コード例 #5
0
        /// <summary>
        /// Merges the request shape in place instead of returning a new object.
        /// </summary>
        /// <param name="opts"></param>
        /// <returns></returns>
        public CMRequestOptions Merge(CMRequestOptions opts)
        {
            if (opts != null)
            {
                this.headers = this.headers.Concat(opts.headers).ToDictionary(e => e.Key, e => e.Value);
                this.parameters = this.parameters.Concat(opts.parameters).ToDictionary(e => e.Key, e => e.Value);
                this.query = this.query.Concat(opts.query).ToDictionary(e => e.Key, e => e.Value);
                this.count = opts.count;

                if (opts.Data != null)
                    this.Data = opts.Data;
                if (opts.Credentials != null)
                    this.Credentials = opts.Credentials;
                if (opts.limit > -1)
                    this.limit = opts.limit;
                if (opts.skip > -1)
                    this.skip = opts.skip;
                if (opts.snippet != null)
                    this.snippet = opts.snippet;
                if (!string.IsNullOrEmpty(opts.ContentType))
                    this.contentType = opts.contentType;
            }
            return this;
        }
コード例 #6
0
 public CMRequestOptions(CMRequestOptions opts)
     : this()
 {
     this.Merge(opts);
 }
コード例 #7
0
        /// <summary>
        /// Registers the android device push notifications.
        /// </summary>
        /// <returns>The android device push notifications.</returns>
        /// <param name="user">User.</param>
        /// <param name="uniqueDeviceId">Android.OS.Build.Serial</param>
        /// <param name="gcmToken">Device token from Google GCM registration.</param>
        public Task<CMResponse> RegisterAndroidDevicePushNotifications(CMUser user, string uniqueDeviceId, object gcmToken)
        {
            CMRequestOptions options = new CMRequestOptions(null, user);

            options.Headers.Add ("device_type", "android");
            options.Headers.Add ("HTTP_X_CLOUDMINE_UT", uniqueDeviceId);
            options.Headers.Add ("X-CloudMine-Agent", "Android");

            Dictionary<string, object> dataDict = new Dictionary<string, object>();
            dataDict.Add("token", gcmToken);
            dataDict.Add("device_type", "android");
            dataDict.Add("device_id", uniqueDeviceId);

            return APIService.Request(Application, "device", HttpMethod.Post, CMSerializer.ToStream(dataDict), options);
        }
コード例 #8
0
        public Task<CMResponse> UnsubscribeToChannel(string channelName, CMUser userToRemove)
        {
            var opts = new CMRequestOptions(userToRemove);

            Dictionary<string, object> dataDict = new Dictionary<string, object>();
            dataDict.Add("user", true);

            return APIService.Request(Application, string.Format("push/channel/{0}/unsubscribe", channelName), HttpMethod.Post, CMSerializer.ToStream(dataDict), opts);
        }
コード例 #9
0
        /// <summary>
        /// Unregister WP device push notifications.
        /// </summary>
        /// <returns>The register WP device push notifications.</returns>
        /// <param name="user">User with valid session.</param>
        /// <param name="uniqueDeviceId">Windows.Phone.System.Analytics.HostInformation.PublisherHostId</param>
        public Task<CMResponse> UnRegisterWPDevicePushNotifications(CMUser user, string uniqueDeviceId)
        {
            CMRequestOptions options = new CMRequestOptions(null, user);

            options.Headers.Add ("device_type", "wp");
            options.Headers.Add ("HTTP_X_CLOUDMINE_UT", uniqueDeviceId);
            options.Headers.Add ("X-CloudMine-Agent", "wp");

            throw new NotImplementedException();
        }
コード例 #10
0
        /// <summary>
        /// Allows for unregistering a valid logged in CMUser from push notifications.
        /// </summary>
        /// <param name="user">Valid logged in CMUser</param>
        /// <param name="uniqueDeviceId">UIKit.UIDevice.CurrentDevice.IdentifierForVendor.AsString()</param>
        public Task<CMResponse> UnRegisterIOSDevicePushNotifications(CMUser user, string uniqueDeviceId)
        {
            CMRequestOptions options = new CMRequestOptions(null, user);

            options.Headers.Add ("device_type", "ios");
            options.Headers.Add ("HTTP_X_CLOUDMINE_UT", uniqueDeviceId);
            options.Headers.Add ("X-CloudMine-Agent", "iOS");

            return APIService.Request(Application, "device", HttpMethod.Delete, null, options);
        }
コード例 #11
0
        /// <summary>
        /// Registers the WP device push notifications.
        /// </summary>
        /// <returns>The WP device push notifications.</returns>
        /// <param name="user">User with valid session.</param>
        /// <param name="uniqueDeviceId">Windows.Phone.System.Analytics.HostInformation.PublisherHostId</param>
        /// <param name="wpToken">Device token.</param>
        public Task<CMResponse> RegisterWPDevicePushNotifications(CMUser user, string uniqueDeviceId, object wpToken)
        {
            CMRequestOptions options = new CMRequestOptions(null, user);

            options.Headers.Add ("device_type", "wp");
            options.Headers.Add ("HTTP_X_CLOUDMINE_UT", uniqueDeviceId);
            options.Headers.Add ("X-CloudMine-Agent", "wp");

            Dictionary<string, object> dataDict = new Dictionary<string, object>();
            dataDict.Add("token", wpToken);
            dataDict.Add("device_type", "wp");
            dataDict.Add("device_id", uniqueDeviceId);

            throw new NotImplementedException();
        }
コード例 #12
0
        /// <summary>
        /// Strips the device ID from device token callback value for the method
        /// didRegisterForRemoteNotificationsWithDeviceToken. Requires the Apple device 
        /// identification string contained in the callback and an actively logged in 
        /// CMUser to register with CloudMine.
        /// </summary>
        /// <param name="user">User with valid session</param>
        /// /// <param name="uniqueDeviceId">UIKit.UIDevice.CurrentDevice.IdentifierForVendor.AsString()</param>
        /// <param name="apnsToken">The token object returned in didRegisterForRemoteNotificationsWithDeviceToken</param>
        public Task<CMResponse> RegisterIOSDevicePushNotifications(CMUser user, string uniqueDeviceId, object apnsToken)
        {
            CMRequestOptions options = new CMRequestOptions(null, user);

            options.Headers.Add ("device_type", "ios");
            options.Headers.Add ("HTTP_X_CLOUDMINE_UT", uniqueDeviceId);
            options.Headers.Add ("X-CloudMine-Agent", "iOS");

            string deviceTokenString = StripIOSDeviceToken(apnsToken.ToString());

            Dictionary<string, string> dataDict = new Dictionary<string, string>();
            dataDict.Add("token", deviceTokenString);
            dataDict.Add("device_type", "ios");
            dataDict.Add("device_id", uniqueDeviceId);

            return APIService.Request(Application, "device", HttpMethod.Post, CMSerializer.ToStream(dataDict), options);
        }