You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by mr...@apache.org on 2016/09/02 17:06:30 UTC
[07/10] usergrid-dotnet git commit: Initial commit of Usergrid .NET
SDK into its own rep
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Manager/AuthenticationManager.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Manager/AuthenticationManager.cs b/Usergrid.Sdk/Manager/AuthenticationManager.cs
new file mode 100644
index 0000000..d733683
--- /dev/null
+++ b/Usergrid.Sdk/Manager/AuthenticationManager.cs
@@ -0,0 +1,74 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using RestSharp;
+using Usergrid.Sdk.Model;
+using Usergrid.Sdk.Payload;
+
+namespace Usergrid.Sdk.Manager
+{
+ internal class AuthenticationManager : ManagerBase, IAuthenticationManager
+ {
+ public AuthenticationManager(IUsergridRequest request) : base(request)
+ {
+ }
+
+ public void ChangePassword(string userName, string oldPassword, string newPassword)
+ {
+ var payload = new ChangePasswordPayload {OldPassword = oldPassword, NewPassword = newPassword};
+ IRestResponse response = Request.ExecuteJsonRequest(string.Format("/users/{0}/password", userName), Method.POST, payload);
+ ValidateResponse(response);
+ }
+
+ public void Login(string loginId, string secret, AuthType authType)
+ {
+ if (authType == AuthType.None)
+ {
+ Request.AccessToken = null;
+ return;
+ }
+
+ object body = GetLoginBody(loginId, secret, authType);
+
+ IRestResponse<LoginResponse> response = Request.ExecuteJsonRequest<LoginResponse>("/token", Method.POST, body);
+ ValidateResponse(response);
+
+ Request.AccessToken = response.Data.AccessToken;
+ }
+
+ private object GetLoginBody(string loginId, string secret, AuthType authType)
+ {
+ object body = null;
+
+ if (authType == AuthType.Organization || authType == AuthType.Application)
+ {
+ body = new ClientIdLoginPayload
+ {
+ ClientId = loginId,
+ ClientSecret = secret
+ };
+ }
+ else if (authType == AuthType.User)
+ {
+ body = new UserLoginPayload
+ {
+ UserName = loginId,
+ Password = secret
+ };
+ }
+ return body;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Manager/ConnectionManager.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Manager/ConnectionManager.cs b/Usergrid.Sdk/Manager/ConnectionManager.cs
new file mode 100644
index 0000000..c253af6
--- /dev/null
+++ b/Usergrid.Sdk/Manager/ConnectionManager.cs
@@ -0,0 +1,99 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System.Collections.Generic;
+using System.Net;
+using Newtonsoft.Json;
+using RestSharp;
+using Usergrid.Sdk.Model;
+using Usergrid.Sdk.Payload;
+
+namespace Usergrid.Sdk.Manager
+{
+ internal class ConnectionManager : ManagerBase, IConnectionManager
+ {
+ internal ConnectionManager(IUsergridRequest request) : base(request)
+ {
+ }
+
+ public void CreateConnection(Connection connection)
+ {
+ // e.g. /user/fred/following/user/barney
+ IRestResponse response = Request.ExecuteJsonRequest(string.Format(
+ "/{0}/{1}/{2}/{3}/{4}",
+ connection.ConnectorCollectionName,
+ connection.ConnectorIdentifier,
+ connection.ConnectionName,
+ connection.ConnecteeCollectionName,
+ connection.ConnecteeIdentifier), Method.POST);
+
+ ValidateResponse(response);
+ }
+
+ public IList<UsergridEntity> GetConnections(Connection connection)
+ {
+ // e.g. /user/fred/following
+ IRestResponse response = Request.ExecuteJsonRequest(string.Format("/{0}/{1}/{2}",
+ connection.ConnectorCollectionName,
+ connection.ConnectorIdentifier,
+ connection.ConnectionName), Method.GET);
+
+ if (response.StatusCode == HttpStatusCode.NotFound)
+ {
+ return default(List<UsergridEntity>);
+ }
+
+ ValidateResponse(response);
+
+ var entity = JsonConvert.DeserializeObject<UsergridGetResponse<UsergridEntity>>(response.Content);
+
+ return entity.Entities;
+ }
+
+ public IList<TConnectee> GetConnections<TConnectee>(Connection connection)
+ {
+ // e.g. /user/fred/following/user
+ IRestResponse response = Request.ExecuteJsonRequest(string.Format("/{0}/{1}/{2}/{3}",
+ connection.ConnectorCollectionName,
+ connection.ConnectorIdentifier,
+ connection.ConnectionName,
+ connection.ConnecteeCollectionName), Method.GET);
+
+ if (response.StatusCode == HttpStatusCode.NotFound)
+ {
+ return default(List<TConnectee>);
+ }
+
+ ValidateResponse(response);
+
+ var entity = JsonConvert.DeserializeObject<UsergridGetResponse<TConnectee>>(response.Content);
+
+ return entity.Entities;
+ }
+
+ public void DeleteConnection(Connection connection)
+ {
+ IRestResponse response = Request.ExecuteJsonRequest(string.Format(
+ "/{0}/{1}/{2}/{3}/{4}",
+ connection.ConnectorCollectionName,
+ connection.ConnectorIdentifier,
+ connection.ConnectionName,
+ connection.ConnecteeCollectionName,
+ connection.ConnecteeIdentifier), Method.DELETE);
+
+ ValidateResponse(response);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Manager/EntityManager.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Manager/EntityManager.cs b/Usergrid.Sdk/Manager/EntityManager.cs
new file mode 100644
index 0000000..349d16e
--- /dev/null
+++ b/Usergrid.Sdk/Manager/EntityManager.cs
@@ -0,0 +1,177 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using RestSharp;
+using Usergrid.Sdk.Model;
+using Usergrid.Sdk.Payload;
+
+namespace Usergrid.Sdk.Manager {
+ internal class EntityManager : ManagerBase, IEntityManager {
+ private readonly IDictionary<Type, Stack<string>> _cursorStates = new Dictionary<Type, Stack<string>>();
+ private readonly IDictionary<Type, int> _pageSizes = new Dictionary<Type, int>();
+
+ internal EntityManager(IUsergridRequest request) : base(request) {}
+
+ public T CreateEntity<T>(string collection, T entity) {
+ IRestResponse response = Request.ExecuteJsonRequest("/" + collection, Method.POST, entity);
+ ValidateResponse(response);
+ var returnedEntity = JsonConvert.DeserializeObject<UsergridGetResponse<T>>(response.Content);
+
+ return returnedEntity.Entities.FirstOrDefault();
+ }
+
+ public void DeleteEntity(string collection, string identifer) {
+ IRestResponse response = Request.ExecuteJsonRequest(string.Format("/{0}/{1}", collection, identifer), Method.DELETE);
+ ValidateResponse(response);
+ }
+
+ public void UpdateEntity<T>(string collection, string identifer, T entity) {
+ IRestResponse response = Request.ExecuteJsonRequest(string.Format("/{0}/{1}", collection, identifer), Method.PUT, entity);
+ ValidateResponse(response);
+ }
+
+ public T GetEntity<T>(string collectionName, string identifer) {
+ IRestResponse response = Request.ExecuteJsonRequest(string.Format("/{0}/{1}", collectionName, identifer), Method.GET);
+
+ if (response.StatusCode == HttpStatusCode.NotFound)
+ return default(T);
+ ValidateResponse(response);
+
+ var entity = JsonConvert.DeserializeObject<UsergridGetResponse<T>>(response.Content);
+
+ return entity.Entities.FirstOrDefault();
+ }
+
+ public UsergridCollection<T> GetEntities<T>(string collectionName, int limit = 10, string query = null) {
+ _pageSizes.Remove(typeof (T));
+ _pageSizes.Add(typeof (T), limit);
+
+ string url = string.Format("/{0}?limit={1}", collectionName, limit);
+ if (query != null)
+ url += "&query=" + query;
+
+ IRestResponse response = Request.ExecuteJsonRequest(url, Method.GET);
+
+ if (response.StatusCode == HttpStatusCode.NotFound)
+ return new UsergridCollection<T>();
+
+ ValidateResponse(response);
+
+ var getResponse = JsonConvert.DeserializeObject<UsergridGetResponse<T>>(response.Content);
+ var collection = new UsergridCollection<T>(getResponse.Entities);
+
+ _cursorStates.Remove(typeof (T));
+
+ if (getResponse.Cursor != null) {
+ collection.HasNext = true;
+ collection.HasPrevious = false;
+ _cursorStates.Add(typeof (T), new Stack<string>(new[] {null, null, getResponse.Cursor}));
+ }
+
+ return collection;
+ }
+
+ public UsergridCollection<T> GetNextEntities<T>(string collectionName, string query = null) {
+ if (!_cursorStates.ContainsKey(typeof (T))) {
+ return new UsergridCollection<T>();
+ }
+
+ Stack<string> stack = _cursorStates[typeof (T)];
+ string cursor = stack.Peek();
+
+ if (cursor == null) {
+ return new UsergridCollection<T> {HasNext = false, HasPrevious = true};
+ }
+
+ int limit = _pageSizes[typeof (T)];
+
+ string url = string.Format("/{0}?cursor={1}&limit={2}", collectionName, cursor, limit);
+ if (query != null)
+ url += "&query=" + query;
+
+ IRestResponse response = Request.ExecuteJsonRequest(url, Method.GET);
+
+ if (response.StatusCode == HttpStatusCode.NotFound)
+ return new UsergridCollection<T>();
+
+ ValidateResponse(response);
+
+ var getResponse = JsonConvert.DeserializeObject<UsergridGetResponse<T>>(response.Content);
+ var collection = new UsergridCollection<T>(getResponse.Entities);
+
+ if (getResponse.Cursor != null) {
+ collection.HasNext = true;
+ stack.Push(getResponse.Cursor);
+ }
+ else {
+ stack.Push(null);
+ }
+
+ collection.HasPrevious = true;
+
+ return collection;
+ }
+
+ public UsergridCollection<T> GetPreviousEntities<T>(string collectionName, string query = null) {
+ if (!_cursorStates.ContainsKey(typeof (T))) {
+ var error = new UsergridError
+ {
+ Error = "cursor_not_initialized",
+ Description = "Call GetEntities method to initialize the cursor"
+ };
+ throw new UsergridException(error);
+ }
+
+ Stack<string> stack = _cursorStates[typeof (T)];
+ stack.Pop();
+ stack.Pop();
+ string cursor = stack.Peek();
+
+ int limit = _pageSizes[typeof (T)];
+
+ if (cursor == null) {
+ return GetEntities<T>(collectionName, limit);
+ }
+
+ string url = string.Format("/{0}?cursor={1}&limit={2}", collectionName, cursor, limit);
+ if (query != null)
+ url += "&query=" + query;
+
+ IRestResponse response = Request.ExecuteJsonRequest(url, Method.GET);
+
+ if (response.StatusCode == HttpStatusCode.NotFound)
+ return new UsergridCollection<T>();
+
+ ValidateResponse(response);
+
+ var getResponse = JsonConvert.DeserializeObject<UsergridGetResponse<T>>(response.Content);
+ var collection = new UsergridCollection<T>(getResponse.Entities)
+ {
+ HasNext = true,
+ HasPrevious = true
+ };
+
+ stack.Push(getResponse.Cursor);
+
+ return collection;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Manager/IAuthenticationManager.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Manager/IAuthenticationManager.cs b/Usergrid.Sdk/Manager/IAuthenticationManager.cs
new file mode 100644
index 0000000..797ebd0
--- /dev/null
+++ b/Usergrid.Sdk/Manager/IAuthenticationManager.cs
@@ -0,0 +1,25 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using Usergrid.Sdk.Model;
+
+namespace Usergrid.Sdk.Manager
+{
+ internal interface IAuthenticationManager
+ {
+ void ChangePassword(string userName, string oldPassword, string newPassword);
+ void Login(string loginId, string secret, AuthType authType);
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Manager/IConnectionManager.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Manager/IConnectionManager.cs b/Usergrid.Sdk/Manager/IConnectionManager.cs
new file mode 100644
index 0000000..563b164
--- /dev/null
+++ b/Usergrid.Sdk/Manager/IConnectionManager.cs
@@ -0,0 +1,26 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System.Collections.Generic;
+using Usergrid.Sdk.Model;
+
+namespace Usergrid.Sdk.Manager {
+ internal interface IConnectionManager {
+ void CreateConnection(Connection connection);
+ IList<UsergridEntity> GetConnections(Connection connection);
+ IList<TConnectee> GetConnections<TConnectee>(Connection connection);
+ void DeleteConnection(Connection connection);
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Manager/IEntityManager.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Manager/IEntityManager.cs b/Usergrid.Sdk/Manager/IEntityManager.cs
new file mode 100644
index 0000000..4ab8a1f
--- /dev/null
+++ b/Usergrid.Sdk/Manager/IEntityManager.cs
@@ -0,0 +1,30 @@
+\ufeff// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using Usergrid.Sdk.Model;
+
+namespace Usergrid.Sdk.Manager
+{
+ public interface IEntityManager
+ {
+ T CreateEntity<T>(string collection, T entity);
+ void DeleteEntity(string collection, string identifer /*name or uuid*/);
+ void UpdateEntity<T>(string collection, string identifer /*name or uuid*/, T entity);
+ T GetEntity<T>(string collectionName, string identifer /*name or uuid*/);
+ UsergridCollection<T> GetEntities<T> (string collectionName, int limit = 10, string query = null);
+ UsergridCollection<T> GetNextEntities<T>(string collectionName, string query = null);
+ UsergridCollection<T> GetPreviousEntities<T>(string collectionName, string query = null);
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Manager/INotificationsManager.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Manager/INotificationsManager.cs b/Usergrid.Sdk/Manager/INotificationsManager.cs
new file mode 100644
index 0000000..34fd1ea
--- /dev/null
+++ b/Usergrid.Sdk/Manager/INotificationsManager.cs
@@ -0,0 +1,27 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System.Collections.Generic;
+using Usergrid.Sdk.Model;
+
+namespace Usergrid.Sdk.Manager
+{
+ internal interface INotificationsManager
+ {
+ void CreateNotifierForApple(string notifierName, string environment, string p12CertificatePath);
+ void CreateNotifierForAndroid(string notifierName, string apiKey);
+ void PublishNotification (IEnumerable<Notification> notification, INotificationRecipients recipients, NotificationSchedulerSettings schedulingSettings = null);
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Manager/ManagerBase.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Manager/ManagerBase.cs b/Usergrid.Sdk/Manager/ManagerBase.cs
new file mode 100644
index 0000000..00aa167
--- /dev/null
+++ b/Usergrid.Sdk/Manager/ManagerBase.cs
@@ -0,0 +1,42 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System.Collections.Generic;
+using System.Net;
+using Newtonsoft.Json;
+using RestSharp;
+using Usergrid.Sdk.Model;
+
+namespace Usergrid.Sdk.Manager
+{
+ internal abstract class ManagerBase
+ {
+ protected readonly IUsergridRequest Request;
+
+ internal ManagerBase(IUsergridRequest request)
+ {
+ Request = request;
+ }
+
+ protected void ValidateResponse(IRestResponse response)
+ {
+ if (response.StatusCode != HttpStatusCode.OK)
+ {
+ var userGridError = JsonConvert.DeserializeObject<UsergridError>(response.Content);
+ throw new UsergridException(userGridError);
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Manager/NotificationsManager.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Manager/NotificationsManager.cs b/Usergrid.Sdk/Manager/NotificationsManager.cs
new file mode 100644
index 0000000..96fa138
--- /dev/null
+++ b/Usergrid.Sdk/Manager/NotificationsManager.cs
@@ -0,0 +1,77 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+using System.Collections.Generic;
+using RestSharp;
+using Usergrid.Sdk.Model;
+using Usergrid.Sdk.Payload;
+
+namespace Usergrid.Sdk.Manager
+{
+ internal class NotificationsManager : ManagerBase, INotificationsManager
+ {
+ public NotificationsManager(IUsergridRequest request) : base(request)
+ {
+ }
+
+ public void CreateNotifierForApple(string notifierName, string environment, string p12CertificatePath)
+ {
+ var formParameters = new Dictionary<string, object>
+ {
+ {"name", notifierName},
+ {"provider", "apple"},
+ {"environment", environment}
+ };
+
+ var fileParameters = new Dictionary<string, string>
+ {
+ {"p12Certificate", p12CertificatePath}
+ };
+
+
+ IRestResponse response = Request.ExecuteMultipartFormDataRequest("/notifiers", Method.POST, formParameters, fileParameters);
+ ValidateResponse(response);
+ }
+
+ public void CreateNotifierForAndroid(string notifierName, string apiKey)
+ {
+ IRestResponse response = Request.ExecuteJsonRequest("/notifiers", Method.POST, new AndroidNotifierPayload {ApiKey = apiKey, Name = notifierName});
+ ValidateResponse(response);
+ }
+
+ public void PublishNotification(IEnumerable<Notification> notifications, INotificationRecipients recipients, NotificationSchedulerSettings schedulerSettings = null)
+ {
+ var payload = new NotificationPayload();
+ foreach (Notification notification in notifications)
+ {
+ payload.Payloads.Add(notification.NotifierIdentifier, notification.GetPayload());
+ }
+
+ if (schedulerSettings != null)
+ {
+ if (schedulerSettings.DeliverAt != DateTime.MinValue)
+ payload.DeliverAt = schedulerSettings.DeliverAt.ToUnixTime();
+ if (schedulerSettings.ExpireAt != DateTime.MinValue)
+ payload.ExpireAt = schedulerSettings.ExpireAt.ToUnixTime();
+ }
+
+ string query = recipients.BuildQuery();
+
+ IRestResponse response = Request.ExecuteJsonRequest(query, Method.POST, payload);
+ ValidateResponse(response);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/AndroidNotification.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/AndroidNotification.cs b/Usergrid.Sdk/Model/AndroidNotification.cs
new file mode 100644
index 0000000..f3e4260
--- /dev/null
+++ b/Usergrid.Sdk/Model/AndroidNotification.cs
@@ -0,0 +1,37 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using RestSharp;
+using Usergrid.Sdk.Payload;
+
+namespace Usergrid.Sdk.Model
+{
+
+ public class AndroidNotification : Notification
+ {
+ public AndroidNotification(string notifierIdentifier, string message) : base(notifierIdentifier, message)
+ {
+ }
+
+ internal override object GetPayload()
+ {
+ return new {data = Message};
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/AppleNotification.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/AppleNotification.cs b/Usergrid.Sdk/Model/AppleNotification.cs
new file mode 100644
index 0000000..0c9229d
--- /dev/null
+++ b/Usergrid.Sdk/Model/AppleNotification.cs
@@ -0,0 +1,49 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using RestSharp;
+using Usergrid.Sdk.Payload;
+
+namespace Usergrid.Sdk.Model
+{
+
+ public class AppleNotification : Notification
+ {
+ public AppleNotification(string notifierIdentifier, string message, string sound = null)
+ : base(notifierIdentifier, message)
+ {
+ Sound = sound;
+ }
+
+ public string Sound { get; set; }
+
+ internal override object GetPayload()
+ {
+
+ if (Sound != null)
+ {
+ return new {aps = new {alert = Message, sound = Sound}};
+ }
+ else
+ {
+ return Message;
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/AuthType.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/AuthType.cs b/Usergrid.Sdk/Model/AuthType.cs
new file mode 100644
index 0000000..c1922ce
--- /dev/null
+++ b/Usergrid.Sdk/Model/AuthType.cs
@@ -0,0 +1,25 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Usergrid.Sdk.Model
+{
+ public enum AuthType
+ {
+ Organization,
+ Application,
+ User,
+ None
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/Connection.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/Connection.cs b/Usergrid.Sdk/Model/Connection.cs
new file mode 100644
index 0000000..b044350
--- /dev/null
+++ b/Usergrid.Sdk/Model/Connection.cs
@@ -0,0 +1,24 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Usergrid.Sdk.Model {
+ public class Connection {
+ public string ConnectorCollectionName { get; set; }
+ public string ConnectorIdentifier { get; set; }
+ public string ConnecteeCollectionName { get; set; }
+ public string ConnecteeIdentifier { get; set; }
+ public string ConnectionName { get; set; }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/INotificationRecipients.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/INotificationRecipients.cs b/Usergrid.Sdk/Model/INotificationRecipients.cs
new file mode 100644
index 0000000..6f4d05c
--- /dev/null
+++ b/Usergrid.Sdk/Model/INotificationRecipients.cs
@@ -0,0 +1,32 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+
+namespace Usergrid.Sdk.Model
+{
+ public interface INotificationRecipients
+ {
+ INotificationRecipients AddUserWithName(string name);
+ INotificationRecipients AddUserWithUuid(string uuid);
+ INotificationRecipients AddUserWithQuery(string query);
+ INotificationRecipients AddGroupWithPath(string path);
+ INotificationRecipients AddGroupWithQuery(string query);
+ INotificationRecipients AddDeviceWithName(string name);
+ INotificationRecipients AddDeviceWithQuery(string query);
+ string BuildQuery();
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/Notification.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/Notification.cs b/Usergrid.Sdk/Model/Notification.cs
new file mode 100644
index 0000000..be94993
--- /dev/null
+++ b/Usergrid.Sdk/Model/Notification.cs
@@ -0,0 +1,31 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Usergrid.Sdk.Model
+{
+ public abstract class Notification
+ {
+ protected Notification(string notifierIdentifier, string message)
+ {
+ NotifierIdentifier = notifierIdentifier;
+ Message = message;
+ }
+
+ public string NotifierIdentifier { get; set; }
+ public string Message { get; set; }
+
+ internal abstract object GetPayload();
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/NotificationRecipients.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/NotificationRecipients.cs b/Usergrid.Sdk/Model/NotificationRecipients.cs
new file mode 100644
index 0000000..0aa79cd
--- /dev/null
+++ b/Usergrid.Sdk/Model/NotificationRecipients.cs
@@ -0,0 +1,137 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+
+namespace Usergrid.Sdk.Model
+{
+ public class NotificationRecipients : INotificationRecipients
+ {
+ string _userName;
+ string _userUuid;
+ string _userQuery;
+ string _groupPath;
+ string _groupQuery;
+ string _deviceName;
+ string _deviceQuery;
+
+ public INotificationRecipients AddUserWithName (string name)
+ {
+ if (_userUuid != null)
+ throw new ArgumentException("User name and uuid can not be added at the same time.");
+ _userName = name;
+ return this;
+ }
+
+ public INotificationRecipients AddUserWithUuid (string uuid)
+ {
+ if (_userName != null)
+ throw new ArgumentException ("User name and uuid can not be added at the same time.");
+
+ _userUuid = uuid;
+ return this;
+ }
+
+ public INotificationRecipients AddUserWithQuery (string query)
+ {
+ if (_userName != null || _userUuid != null)
+ throw new ArgumentException("User query can not be added together with user name or uuid.");
+
+ _userQuery = query;
+ return this;
+ }
+
+ public INotificationRecipients AddGroupWithPath (string path)
+ {
+ if (_groupQuery != null)
+ throw new ArgumentException("Group path and query can not be added at the same time.");
+
+ _groupPath = path;
+ return this;
+ }
+
+ public INotificationRecipients AddGroupWithQuery (string query)
+ {
+ if (_groupPath != null)
+ throw new ArgumentException("Group path and query can not be added at the same time.");
+
+ _groupQuery = query;
+ return this;
+ }
+
+ public INotificationRecipients AddDeviceWithName (string name)
+ {
+ if (_deviceQuery != null)
+ throw new ArgumentException("Device name and query can not be added at the same time.");
+
+ _deviceName = name;
+ return this;
+ }
+
+ public INotificationRecipients AddDeviceWithQuery (string query)
+ {
+ if (_deviceName != null)
+ throw new ArgumentException("Device name and query can not be added at the same time.");
+
+ _deviceQuery = query;
+ return this;
+ }
+
+ public string BuildQuery()
+ {
+ var query = string.Empty;
+
+ if (_groupPath != null)
+ {
+ query += string.Format ("/groups/{0}", _groupPath);
+ }
+
+ if (_groupQuery != null)
+ {
+ query += string.Format ("/groups;ql={0}", _groupQuery);
+ }
+
+ if (_userName != null)
+ {
+ query += string.Format ("/users/{0}", _userName);
+ }
+
+ if (_userUuid != null)
+ {
+ query += string.Format ("/users/{0}", _userUuid);
+ }
+
+ if (_userQuery != null)
+ {
+ query += string.Format ("/users;ql={0}", _userQuery);
+ }
+
+ if (_deviceName != null)
+ {
+ query += string.Format ("/devices/{0}", _deviceName);
+ }
+
+ if (_deviceQuery != null)
+ {
+ query += string.Format ("/devices;ql={0}", _deviceQuery);
+ }
+
+ query += "/notifications";
+
+ return query;
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/NotificationSchedulerSettings.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/NotificationSchedulerSettings.cs b/Usergrid.Sdk/Model/NotificationSchedulerSettings.cs
new file mode 100644
index 0000000..45b7261
--- /dev/null
+++ b/Usergrid.Sdk/Model/NotificationSchedulerSettings.cs
@@ -0,0 +1,35 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+using Newtonsoft.Json;
+
+namespace Usergrid.Sdk.Model
+{
+ public class NotificationSchedulerSettings
+ {
+ [JsonProperty("deliver")]
+ public DateTime DeliverAt {get;set;}
+ [JsonProperty("expire")]
+ public DateTime ExpireAt { get; set;}
+
+ public NotificationSchedulerSettings()
+ {
+ DeliverAt = DateTime.MinValue;
+ ExpireAt = DateTime.MinValue;
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/UnixDateTimeHelper.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/UnixDateTimeHelper.cs b/Usergrid.Sdk/Model/UnixDateTimeHelper.cs
new file mode 100644
index 0000000..d2b8017
--- /dev/null
+++ b/Usergrid.Sdk/Model/UnixDateTimeHelper.cs
@@ -0,0 +1,53 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+
+namespace Usergrid.Sdk
+{
+ public static class UnixDateTimeHelper
+ {
+ private const string InvalidUnixEpochErrorMessage = "Unix epoc starts January 1st, 1970";
+
+ /// <summary>
+ /// Convert a long into a DateTime
+ /// </summary>
+ public static DateTime FromUnixTime(this Int64 self)
+ {
+ var ret = new DateTime(1970, 1, 1);
+ return ret.AddSeconds(self/1000);
+ }
+
+ /// <summary>
+ /// Convert a DateTime into a long
+ /// </summary>
+ public static Int64 ToUnixTime(this DateTime self)
+ {
+
+ if (self == DateTime.MinValue)
+ {
+ return 0;
+ }
+
+ var epoc = new DateTime(1970, 1, 1);
+ var delta = self - epoc;
+
+ if (delta.TotalSeconds < 0) throw new ArgumentOutOfRangeException(InvalidUnixEpochErrorMessage);
+
+ return (long) delta.TotalSeconds * 1000;
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/UserGridEntity.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/UserGridEntity.cs b/Usergrid.Sdk/Model/UserGridEntity.cs
new file mode 100644
index 0000000..889a43a
--- /dev/null
+++ b/Usergrid.Sdk/Model/UserGridEntity.cs
@@ -0,0 +1,45 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+using Newtonsoft.Json;
+
+namespace Usergrid.Sdk.Model
+{
+ public class UsergridEntity
+ {
+ public string Uuid { get; set; }
+ public string Type { get; set; }
+ public string Name { get; set; }
+
+ [JsonProperty("created")]
+ private long createdLong { get; set; }
+
+ [JsonIgnore]
+ public DateTime CreatedDate
+ {
+ get { return createdLong.FromUnixTime(); }
+ }
+
+ [JsonProperty("modified")]
+ private long modifiedLong { get; set; }
+
+ [JsonIgnore]
+ public DateTime ModifiedDate
+ {
+ get { return modifiedLong.FromUnixTime(); }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/UsergridActivity.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/UsergridActivity.cs b/Usergrid.Sdk/Model/UsergridActivity.cs
new file mode 100644
index 0000000..0d39b0a
--- /dev/null
+++ b/Usergrid.Sdk/Model/UsergridActivity.cs
@@ -0,0 +1,50 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+using Newtonsoft.Json;
+
+namespace Usergrid.Sdk.Model
+{
+ public class UsergridActivity
+ {
+ public UsergridActivity(){}
+
+ public UsergridActivity(UsergridUser user, UsergridImage image = null){
+ Actor = new UsergridActor {
+ DisplayName = user.Name,
+ Email = user.Email,
+ Image = image,
+ UserName = user.UserName,
+ Uuid = user.Uuid
+ };
+ }
+
+ public UsergridActor Actor {get;set;}
+
+ public string Verb {get;set;}
+
+ public string Content { get; set;}
+
+ [JsonProperty("published")]
+ private long PublishedLong { get; set;}
+
+ [JsonIgnore]
+ public DateTime PublishedDate {
+ get { return PublishedLong.FromUnixTime(); }
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/UsergridActor.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/UsergridActor.cs b/Usergrid.Sdk/Model/UsergridActor.cs
new file mode 100644
index 0000000..8e562ec
--- /dev/null
+++ b/Usergrid.Sdk/Model/UsergridActor.cs
@@ -0,0 +1,29 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+
+namespace Usergrid.Sdk
+{
+ public class UsergridActor
+ {
+ public string DisplayName {get;set;}
+ public string Uuid { get; set;}
+ public string UserName {get;set;}
+ public UsergridImage Image {get;set;}
+ public string Email {get;set;}
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/UsergridCollection.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/UsergridCollection.cs b/Usergrid.Sdk/Model/UsergridCollection.cs
new file mode 100644
index 0000000..ca801a4
--- /dev/null
+++ b/Usergrid.Sdk/Model/UsergridCollection.cs
@@ -0,0 +1,30 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+using System.Collections.Generic;
+
+namespace Usergrid.Sdk
+{
+ public class UsergridCollection<T> : List<T>
+ {
+ public UsergridCollection() : base() {}
+ public UsergridCollection(IEnumerable<T> items) : base(items) {}
+
+ public bool HasNext {get;set;}
+ public bool HasPrevious {get;set;}
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/UsergridDevice.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/UsergridDevice.cs b/Usergrid.Sdk/Model/UsergridDevice.cs
new file mode 100644
index 0000000..b0837a9
--- /dev/null
+++ b/Usergrid.Sdk/Model/UsergridDevice.cs
@@ -0,0 +1,22 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+
+namespace Usergrid.Sdk.Model
+{
+ public class UsergridDevice : UsergridEntity {}
+}
+
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/UsergridEntitySerializer.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/UsergridEntitySerializer.cs b/Usergrid.Sdk/Model/UsergridEntitySerializer.cs
new file mode 100644
index 0000000..2ca84ed
--- /dev/null
+++ b/Usergrid.Sdk/Model/UsergridEntitySerializer.cs
@@ -0,0 +1,51 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace Usergrid.Sdk.Model
+{
+ public class EntitySerializer : JsonConverter
+ {
+ public override object ReadJson (JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
+ {
+ var jsonSerializer = new JsonSerializer ();
+
+ var obj = JObject.Load(reader);
+ var r1 = obj.CreateReader();
+ var r2 = obj.CreateReader ();
+
+ var usergridEntity = jsonSerializer.Deserialize (r1, objectType);
+ var entityProperty = usergridEntity.GetType ().GetProperty ("Entity");
+ var entity = jsonSerializer.Deserialize(r2, entityProperty.PropertyType);
+ entityProperty.SetValue (usergridEntity, entity, null);
+
+ return usergridEntity;
+ }
+
+ public override void WriteJson (JsonWriter writer, object value, JsonSerializer serializer)
+ {
+ throw new NotImplementedException ();
+ }
+
+ public override bool CanConvert (Type objectType)
+ {
+ return typeof(UsergridEntity).IsAssignableFrom (objectType);
+ }
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/UsergridError.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/UsergridError.cs b/Usergrid.Sdk/Model/UsergridError.cs
new file mode 100644
index 0000000..b70433b
--- /dev/null
+++ b/Usergrid.Sdk/Model/UsergridError.cs
@@ -0,0 +1,31 @@
+\ufeff// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using Newtonsoft.Json;
+
+namespace Usergrid.Sdk.Model
+{
+ public class UsergridError
+ {
+ [JsonProperty(PropertyName = "error")]
+ public string Error { get; set; }
+
+ [JsonProperty(PropertyName = "exception")]
+ public string Exception { get; set; }
+
+ [JsonProperty(PropertyName = "error_description")]
+ public string Description { get; set; }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/UsergridException.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/UsergridException.cs b/Usergrid.Sdk/Model/UsergridException.cs
new file mode 100644
index 0000000..c7f9816
--- /dev/null
+++ b/Usergrid.Sdk/Model/UsergridException.cs
@@ -0,0 +1,30 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+using Usergrid.Sdk.Model;
+
+namespace Usergrid.Sdk.Model
+{
+ public class UsergridException : Exception
+ {
+ public UsergridException(UsergridError error) : base(error.Description)
+ {
+ ErrorCode = error.Error;
+ }
+
+ public string ErrorCode { get; set; }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/UsergridGroup.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/UsergridGroup.cs b/Usergrid.Sdk/Model/UsergridGroup.cs
new file mode 100644
index 0000000..6be20f6
--- /dev/null
+++ b/Usergrid.Sdk/Model/UsergridGroup.cs
@@ -0,0 +1,24 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Usergrid.Sdk.Model
+{
+ public class UsergridGroup : UsergridEntity
+ {
+ public string Title { get; set; }
+ public string Path { get; set; }
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/UsergridImage.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/UsergridImage.cs b/Usergrid.Sdk/Model/UsergridImage.cs
new file mode 100644
index 0000000..53d7a24
--- /dev/null
+++ b/Usergrid.Sdk/Model/UsergridImage.cs
@@ -0,0 +1,28 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+
+namespace Usergrid.Sdk
+{
+ public class UsergridImage
+ {
+ public int Duration {get;set;}
+ public int Height {get;set;}
+ public int Width {get;set;}
+ public string Url {get;set;}
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/UsergridNotifier.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/UsergridNotifier.cs b/Usergrid.Sdk/Model/UsergridNotifier.cs
new file mode 100644
index 0000000..a6f6964
--- /dev/null
+++ b/Usergrid.Sdk/Model/UsergridNotifier.cs
@@ -0,0 +1,23 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Usergrid.Sdk.Model
+{
+ public class UsergridNotifier : UsergridEntity
+ {
+ public string Provider { get; set; }
+ public string Environment { get; set; }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Model/UsergridUser.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Model/UsergridUser.cs b/Usergrid.Sdk/Model/UsergridUser.cs
new file mode 100644
index 0000000..dbddb2c
--- /dev/null
+++ b/Usergrid.Sdk/Model/UsergridUser.cs
@@ -0,0 +1,27 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using Newtonsoft.Json;
+
+namespace Usergrid.Sdk.Model
+{
+ public class UsergridUser : UsergridEntity
+ {
+ [JsonProperty("username")]
+ public string UserName { get; set; }
+ [JsonProperty("email")]
+ public string Email { get; set; }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Payload/AndroidNotifierPayload.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Payload/AndroidNotifierPayload.cs b/Usergrid.Sdk/Payload/AndroidNotifierPayload.cs
new file mode 100644
index 0000000..ec41723
--- /dev/null
+++ b/Usergrid.Sdk/Payload/AndroidNotifierPayload.cs
@@ -0,0 +1,29 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+namespace Usergrid.Sdk.Payload
+{
+ internal class AndroidNotifierPayload
+ {
+ public string Name { get; set; }
+
+ public string Provider
+ {
+ get { return "google"; }
+ }
+
+ public string ApiKey { get; set; }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Payload/CancelNotificationPayload.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Payload/CancelNotificationPayload.cs b/Usergrid.Sdk/Payload/CancelNotificationPayload.cs
new file mode 100644
index 0000000..aa3694b
--- /dev/null
+++ b/Usergrid.Sdk/Payload/CancelNotificationPayload.cs
@@ -0,0 +1,25 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using Newtonsoft.Json;
+
+namespace Usergrid.Sdk.Payload
+{
+ internal class CancelNotificationPayload
+ {
+ [JsonProperty(PropertyName = "canceled")]
+ internal bool Canceled { get; set; }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Payload/ChangePasswordPayload.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Payload/ChangePasswordPayload.cs b/Usergrid.Sdk/Payload/ChangePasswordPayload.cs
new file mode 100644
index 0000000..9143664
--- /dev/null
+++ b/Usergrid.Sdk/Payload/ChangePasswordPayload.cs
@@ -0,0 +1,28 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using Newtonsoft.Json;
+
+namespace Usergrid.Sdk.Payload
+{
+ internal class ChangePasswordPayload
+ {
+ [JsonProperty(PropertyName = "oldpassword")]
+ internal string OldPassword { get; set; }
+
+ [JsonProperty(PropertyName = "newpassword")]
+ internal string NewPassword { get; set; }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Payload/ClientIdLoginPayload.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Payload/ClientIdLoginPayload.cs b/Usergrid.Sdk/Payload/ClientIdLoginPayload.cs
new file mode 100644
index 0000000..b7b155b
--- /dev/null
+++ b/Usergrid.Sdk/Payload/ClientIdLoginPayload.cs
@@ -0,0 +1,34 @@
+\ufeff// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using Newtonsoft.Json;
+
+namespace Usergrid.Sdk.Payload
+{
+ internal class ClientIdLoginPayload
+ {
+ [JsonProperty(PropertyName = "grant_type")]
+ internal string GrantType
+ {
+ get { return "client_credentials"; }
+ }
+
+ [JsonProperty(PropertyName = "client_id")]
+ internal string ClientId { get; set; }
+
+ [JsonProperty(PropertyName = "client_secret")]
+ internal string ClientSecret { get; set; }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Payload/LoginResponse.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Payload/LoginResponse.cs b/Usergrid.Sdk/Payload/LoginResponse.cs
new file mode 100644
index 0000000..07bee35
--- /dev/null
+++ b/Usergrid.Sdk/Payload/LoginResponse.cs
@@ -0,0 +1,25 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using Newtonsoft.Json;
+
+namespace Usergrid.Sdk.Payload
+{
+ internal class LoginResponse
+ {
+ [JsonProperty(PropertyName = "access_token")]
+ public string AccessToken { get; set; }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Payload/NotificationPayload.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Payload/NotificationPayload.cs b/Usergrid.Sdk/Payload/NotificationPayload.cs
new file mode 100644
index 0000000..499af3a
--- /dev/null
+++ b/Usergrid.Sdk/Payload/NotificationPayload.cs
@@ -0,0 +1,38 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using RestSharp;
+using Newtonsoft.Json;
+
+namespace Usergrid.Sdk.Payload
+{
+ internal class NotificationPayload
+ {
+
+ public IDictionary<string, object> Payloads { get; set; }
+ [JsonProperty("deliver", NullValueHandling = NullValueHandling.Ignore)]
+ public long? DeliverAt {get;set;}
+ [JsonProperty("expire", NullValueHandling = NullValueHandling.Ignore)]
+ public long? ExpireAt { get; set;}
+
+ public NotificationPayload()
+ {
+ Payloads = new Dictionary<string, object>();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Payload/UserLoginPayload.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Payload/UserLoginPayload.cs b/Usergrid.Sdk/Payload/UserLoginPayload.cs
new file mode 100644
index 0000000..a45ca71
--- /dev/null
+++ b/Usergrid.Sdk/Payload/UserLoginPayload.cs
@@ -0,0 +1,34 @@
+\ufeff// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using Newtonsoft.Json;
+
+namespace Usergrid.Sdk.Payload
+{
+ internal class UserLoginPayload
+ {
+ [JsonProperty(PropertyName = "grant_type")]
+ internal string GrantType
+ {
+ get { return "password"; }
+ }
+
+ [JsonProperty(PropertyName = "username")]
+ internal string UserName { get; set; }
+
+ [JsonProperty(PropertyName = "password")]
+ internal string Password { get; set; }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Payload/UsergridGetResponse.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Payload/UsergridGetResponse.cs b/Usergrid.Sdk/Payload/UsergridGetResponse.cs
new file mode 100644
index 0000000..b29c7b9
--- /dev/null
+++ b/Usergrid.Sdk/Payload/UsergridGetResponse.cs
@@ -0,0 +1,28 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System.Collections.Generic;
+using Newtonsoft.Json;
+
+namespace Usergrid.Sdk.Payload
+{
+ public class UsergridGetResponse<T>
+ {
+ [JsonProperty(PropertyName = "cursor")]
+ internal string Cursor;
+ [JsonProperty(PropertyName = "entities")]
+ internal IList<T> Entities;
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Properties/AssemblyInfo.cs b/Usergrid.Sdk/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..bca6c49
--- /dev/null
+++ b/Usergrid.Sdk/Properties/AssemblyInfo.cs
@@ -0,0 +1,51 @@
+\ufeff// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+
+[assembly: AssemblyTitle("Usergrid.Sdk")]
+[assembly: AssemblyCompany("Apigee")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+
+[assembly: Guid("8718e539-88e7-44ce-8c8f-b2ca37632a81")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+
+[assembly: AssemblyVersion("0.1.0.0")]
+[assembly: AssemblyFileVersion("0.1.0.0")]
+[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
+[assembly: InternalsVisibleTo("Usergrid.Sdk.Tests")]
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/RestSharpJsonSerializer.cs
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/RestSharpJsonSerializer.cs b/Usergrid.Sdk/RestSharpJsonSerializer.cs
new file mode 100644
index 0000000..ff4557c
--- /dev/null
+++ b/Usergrid.Sdk/RestSharpJsonSerializer.cs
@@ -0,0 +1,38 @@
+\ufeff// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
+using RestSharp.Serializers;
+
+namespace Usergrid.Sdk
+{
+ public class RestSharpJsonSerializer : ISerializer
+ {
+ public string Serialize(object obj)
+ {
+ var serializeObject = JsonConvert.SerializeObject(obj, new JsonSerializerSettings()
+ {
+ ContractResolver = new CamelCasePropertyNamesContractResolver()
+ });
+ return serializeObject;
+ }
+
+ public string RootElement { get; set; }
+ public string Namespace { get; set; }
+ public string DateFormat { get; set; }
+ public string ContentType { get; set; }
+ }
+}
http://git-wip-us.apache.org/repos/asf/usergrid-dotnet/blob/94c0483c/Usergrid.Sdk/Usergrid.Sdk.csproj
----------------------------------------------------------------------
diff --git a/Usergrid.Sdk/Usergrid.Sdk.csproj b/Usergrid.Sdk/Usergrid.Sdk.csproj
new file mode 100644
index 0000000..d422771
--- /dev/null
+++ b/Usergrid.Sdk/Usergrid.Sdk.csproj
@@ -0,0 +1,124 @@
+\ufeff<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{437D108F-528C-4B2A-B399-06CF02DEB08B}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Usergrid.Sdk</RootNamespace>
+ <AssemblyName>Usergrid.Sdk</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ <Reference Include="System.Configuration" />
+ <Reference Include="Newtonsoft.Json">
+ <HintPath>..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll</HintPath>
+ </Reference>
+ <Reference Include="RestSharp">
+ <HintPath>..\packages\RestSharp.104.1\lib\net4\RestSharp.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Client.cs" />
+ <Compile Include="IClient.cs" />
+ <Compile Include="IUsergridRequest.cs" />
+ <Compile Include="Manager\INotificationsManager.cs" />
+ <Compile Include="Manager\NotificationsManager.cs" />
+ <Compile Include="Model\Connection.cs" />
+ <Compile Include="Model\UsergridEntity.cs" />
+ <Compile Include="Model\UsergridError.cs" />
+ <Compile Include="Model\UsergridNotifier.cs" />
+ <Compile Include="Payload\AndroidNotifierPayload.cs" />
+ <Compile Include="Payload\CancelNotificationPayload.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="RestSharpJsonSerializer.cs" />
+ <Compile Include="UsergridRequest.cs" />
+ <Compile Include="Model\UsergridUser.cs" />
+ <Compile Include="Model\UsergridGroup.cs" />
+ <Compile Include="Payload\UserLoginPayload.cs" />
+ <Compile Include="Payload\ChangePasswordPayload.cs" />
+ <Compile Include="Payload\ClientIdLoginPayload.cs" />
+ <Compile Include="Payload\LoginResponse.cs" />
+ <Compile Include="Payload\UsergridGetResponse.cs" />
+ <Compile Include="Manager\EntityManager.cs" />
+ <Compile Include="Manager\IAuthenticationManager.cs" />
+ <Compile Include="Manager\IConnectionManager.cs" />
+ <Compile Include="Manager\IEntityManager.cs" />
+ <Compile Include="Manager\ManagerBase.cs" />
+ <Compile Include="Model\UsergridException.cs" />
+ <Compile Include="Model\AuthType.cs" />
+ <Compile Include="Manager\AuthenticationManager.cs" />
+ <Compile Include="Manager\ConnectionManager.cs" />
+ <Compile Include="Model\UsergridCollection.cs" />
+ <Compile Include="Model\UsergridEntitySerializer.cs" />
+ <Compile Include="Model\UsergridActivity.cs" />
+ <Compile Include="Model\UsergridActor.cs" />
+ <Compile Include="Model\UsergridImage.cs" />
+ <Compile Include="Model\UnixDateTimeHelper.cs" />
+ <Compile Include="Model\INotificationRecipients.cs" />
+ <Compile Include="Model\NotificationRecipients.cs" />
+ <Compile Include="Model\Notification.cs" />
+ <Compile Include="Model\AndroidNotification.cs" />
+ <Compile Include="Model\AppleNotification.cs" />
+ <Compile Include="Payload\NotificationPayload.cs" />
+ <Compile Include="Model\NotificationSchedulerSettings.cs" />
+ <Compile Include="Model\UsergridDevice.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="packages.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+ <ItemGroup />
+</Project>