blob: 5efbb9b6f2ccbb9ac41aa67fc2f31dc29475a309 [file] [log] [blame]
/*
*
* * Licensed to the Apache Software Foundation (ASF) under one or more
* * contributor license agreements. 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. For additional information regarding
* * copyright in this work, please see the NOTICE file in the top level
* * directory of this distribution.
*
*/
using Newtonsoft.Json.Linq;
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Windows.Networking.PushNotifications;
namespace Usergrid.Notifications.Client
{
/// <summary>
/// encapsulates usergrid calls, use UsergridFactory
/// </summary>
public interface IUsergridClient
{
/// <summary>
/// Authenticate your calls
/// </summary>
/// <param name="user"></param>
/// <param name="password"></param>
/// <param name="isManagement"></param>
/// <returns></returns>
Task Authenticate(string user, string password, bool isManagement);
/// <summary>
/// Send a message
/// </summary>
/// <param name="method"></param>
/// <param name="url"></param>
/// <param name="obj"></param>
/// <returns></returns>
Task<EntityResponse> SendAsync(HttpMethod method, string url, object obj);
/// <summary>
/// Send a message
/// </summary>
/// <param name="method"></param>
/// <param name="url"></param>
/// <param name="obj"></param>
/// <param name="useManagementUrl"></param>
/// <returns></returns>
Task<EntityResponse> SendAsync(HttpMethod method, string url, object obj, bool useManagementUrl);
/// <summary>
/// Reference the push client, you should call register before using
/// </summary>
IPushClient Push { get; }
Exception LastException { get; }
}
/// <summary>
/// Only show http calls
/// </summary>
public interface IUsergridHttpClient
{
/// <summary>
/// Send Http call async
/// </summary>
/// <param name="method"></param>
/// <param name="url"></param>
/// <param name="obj"></param>
/// <param name="useManagementUrl">use management endpoint</param>
/// <returns></returns>
Task<EntityResponse> SendAsync(HttpMethod method, string url, object obj, bool useManagementUrl);
/// <summary>
/// send Http call async
/// </summary>
/// <param name="method"></param>
/// <param name="url"></param>
/// <param name="obj"></param>
/// <returns></returns>
Task<EntityResponse> SendAsync(HttpMethod method, string url, object obj);
}
/// <summary>
/// Push client, call register
/// </summary>
public interface IPushClient
{
/// <summary>
/// the notifier you are currently using
/// </summary>
string Notifier { get; set; }
/// <summary>
/// Device id in usergrid
/// </summary>
Guid DeviceId { get; set; }
/// <summary>
/// send a toast
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
Task<bool> SendToast(string message);
Task<bool> SendRaw(string message);
/// <summary>
/// Send a badge update
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
Task<bool> SendBadge<T>(T message);
Exception LastException { get; }
}
}