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); }
public CMRequestOptions(CMRequestOptions opts, CMUser user) : this() { this.Merge(opts); if (user != null && !string.IsNullOrEmpty(user.Session)) this.Headers["X-CloudMine-SessionToken"] = user.Session; }
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)); }
public CMRequestOptions(CMRequestOptions opts) : this() { this.Merge(opts); }
/// <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; }
/// <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); }
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); }
/// <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(); }
/// <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); }
/// <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(); }
/// <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); }