Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/UrbanAirSharp/Request/Base/DeleteRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ namespace UrbanAirSharp.Request.Base
{
public class DeleteRequest<TResponse> : BaseRequest<TResponse> where TResponse : BaseResponse, new()
{
public DeleteRequest()
: base(ServiceModelConfig.Host, ServiceModelConfig.HttpClient, ServiceModelConfig.SerializerSettings)
public DeleteRequest(ServiceModelConfig serviceModelConfig)
: base(serviceModelConfig.Host, serviceModelConfig.HttpClient, serviceModelConfig.SerializerSettings)
{
RequestMethod = HttpMethod.Delete;
}
Expand Down
4 changes: 2 additions & 2 deletions src/UrbanAirSharp/Request/Base/GetRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ namespace UrbanAirSharp.Request.Base
/// </summary>
public class GetRequest<TResponse> : BaseRequest<TResponse> where TResponse : BaseResponse, new()
{
public GetRequest()
: base(ServiceModelConfig.Host, ServiceModelConfig.HttpClient, ServiceModelConfig.SerializerSettings)
public GetRequest(ServiceModelConfig serviceModelConfig)
: base(serviceModelConfig.Host, serviceModelConfig.HttpClient, serviceModelConfig.SerializerSettings)
{
RequestMethod = HttpMethod.Get;
}
Expand Down
11 changes: 6 additions & 5 deletions src/UrbanAirSharp/Request/Base/PostRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ namespace UrbanAirSharp.Request.Base

protected TContent Content;

public PostRequest(TContent content)
: base(ServiceModelConfig.Host, ServiceModelConfig.HttpClient, ServiceModelConfig.SerializerSettings)
public PostRequest(TContent content, ServiceModelConfig serviceModelConfig)
: base(serviceModelConfig.Host, serviceModelConfig.HttpClient, serviceModelConfig.SerializerSettings)
{
RequestMethod = HttpMethod.Post;
Content = content;
Expand All @@ -38,9 +38,10 @@ public override async Task<TResponse> ExecuteAsync()

Log.Debug("Payload - " + json);

var response = await HttpClient.PostAsync(Host + RequestUrl, new StringContent(json, Encoding, MediaType));

return await DeserializeResponseAsync(response);
using (var response = await HttpClient.PostAsync(Host + RequestUrl, new StringContent(json, Encoding, MediaType)))
{
return await DeserializeResponseAsync(response);
}
}
}
}
4 changes: 2 additions & 2 deletions src/UrbanAirSharp/Request/Base/PutRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ namespace UrbanAirSharp.Request.Base

protected TContent Content;

public PutRequest(TContent content)
: base(ServiceModelConfig.Host, ServiceModelConfig.HttpClient, ServiceModelConfig.SerializerSettings)
public PutRequest(TContent content, ServiceModelConfig serviceModelConfig)
: base(serviceModelConfig.Host, serviceModelConfig.HttpClient, serviceModelConfig.SerializerSettings)
{
RequestMethod = HttpMethod.Put;
Content = content;
Expand Down
2 changes: 1 addition & 1 deletion src/UrbanAirSharp/Request/DeviceTokenRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ namespace UrbanAirSharp.Request
/// <see cref="http://docs.urbanairship.com/reference/api/v3/registration.html"/>
public class DeviceTokenRequest : PutRequest<BaseResponse, DeviceToken>
{
public DeviceTokenRequest(DeviceToken device) : base(device)
public DeviceTokenRequest(DeviceToken device, ServiceModelConfig serviceModelConfig) : base(device, serviceModelConfig)
{
if (string.IsNullOrEmpty(device.Token))
throw new ArgumentException("The device tokens Token field is required", "device");
Expand Down
4 changes: 2 additions & 2 deletions src/UrbanAirSharp/Request/PushRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ namespace UrbanAirSharp.Request
/// </summary>
public class PushRequest : PostRequest<PushResponse, Push>
{
public PushRequest(Push push)
: base(push)
public PushRequest(Push push, ServiceModelConfig serviceModelConfig)
: base(push, serviceModelConfig)
{
RequestUrl = "api/push/";
}
Expand Down
4 changes: 2 additions & 2 deletions src/UrbanAirSharp/Request/PushValidateRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ namespace UrbanAirSharp.Request
/// </summary>
public class PushValidateRequest : PushRequest
{
public PushValidateRequest(Push push)
: base(push)
public PushValidateRequest(Push push, ServiceModelConfig serviceModelConfig)
: base(push, serviceModelConfig)
{
RequestUrl = "api/push/validate/";
}
Expand Down
4 changes: 2 additions & 2 deletions src/UrbanAirSharp/Request/ScheduleCreateRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ namespace UrbanAirSharp.Request
/// </summary>
public class ScheduleCreateRequest : PostRequest<ScheduleCreateResponse, Schedule>
{
public ScheduleCreateRequest(Schedule schedule)
: base(schedule)
public ScheduleCreateRequest(Schedule schedule, ServiceModelConfig serviceModelConfig)
: base(schedule, serviceModelConfig)
{
RequestUrl = "api/schedules/";
}
Expand Down
3 changes: 2 additions & 1 deletion src/UrbanAirSharp/Request/ScheduleDeleteRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ namespace UrbanAirSharp.Request
/// </summary>
public class ScheduleDeleteRequest : DeleteRequest<BaseResponse>
{
public ScheduleDeleteRequest(Guid scheduleId)
public ScheduleDeleteRequest(Guid scheduleId, ServiceModelConfig serviceModelConfig)
: base(serviceModelConfig)
{
RequestUrl = "api/schedules/" + scheduleId + "/";
}
Expand Down
4 changes: 2 additions & 2 deletions src/UrbanAirSharp/Request/ScheduleEditRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ namespace UrbanAirSharp.Request
/// </summary>
public class ScheduleEditRequest : PutRequest<ScheduleEditResponse, Schedule>
{
public ScheduleEditRequest(Guid scheduleId, Schedule schedule)
: base (schedule)
public ScheduleEditRequest(Guid scheduleId, Schedule schedule, ServiceModelConfig serviceModelConfig)
: base (schedule, serviceModelConfig)
{
RequestUrl = "api/schedules/" + scheduleId + "/";
}
Expand Down
3 changes: 2 additions & 1 deletion src/UrbanAirSharp/Request/ScheduleGetRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ namespace UrbanAirSharp.Request
/// </summary>
public class ScheduleGetRequest : GetRequest<ScheduleGetResponse>
{
public ScheduleGetRequest(Guid scheduleId)
public ScheduleGetRequest(Guid scheduleId, ServiceModelConfig serviceModelConfig)
: base(serviceModelConfig)
{
RequestUrl = "api/schedules/" + scheduleId + "/";
}
Expand Down
3 changes: 2 additions & 1 deletion src/UrbanAirSharp/Request/ScheduleListRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ namespace UrbanAirSharp.Request
/// </summary>
public class ScheduleListRequest : GetRequest<ScheduleListResponse>
{
public ScheduleListRequest()
public ScheduleListRequest(ServiceModelConfig serviceModelConfig)
: base(serviceModelConfig)
{
RequestUrl = "api/schedules/";
}
Expand Down
4 changes: 2 additions & 2 deletions src/UrbanAirSharp/Request/TagCreateRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ namespace UrbanAirSharp.Request
/// </summary>
public class TagCreateRequest : PutRequest<BaseResponse, Tag>
{
public TagCreateRequest(Tag tag)
: base(tag)
public TagCreateRequest(Tag tag, ServiceModelConfig serviceModelConfig)
: base(tag, serviceModelConfig)
{
RequestUrl = "api/tags/" + tag.TagName + "/";
}
Expand Down
3 changes: 2 additions & 1 deletion src/UrbanAirSharp/Request/TagDeleteRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ namespace UrbanAirSharp.Request
/// </summary>
public class TagDeleteRequest : DeleteRequest<BaseResponse>
{
public TagDeleteRequest(String tag)
public TagDeleteRequest(String tag, ServiceModelConfig serviceModelConfig)
:base(serviceModelConfig)
{
RequestUrl = "api/tags/" + tag + "/";
}
Expand Down
3 changes: 2 additions & 1 deletion src/UrbanAirSharp/Request/TagListRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ namespace UrbanAirSharp.Request
/// </summary>
public class TagListRequest : GetRequest<TagListResponse>
{
public TagListRequest()
public TagListRequest(ServiceModelConfig serviceModelConfig)
: base(serviceModelConfig)
{
RequestUrl = "api/tags/";
}
Expand Down
29 changes: 17 additions & 12 deletions src/UrbanAirSharp/ServiceModelConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,31 @@

namespace UrbanAirSharp
{
public static class ServiceModelConfig
public class ServiceModelConfig
{
public static readonly String Host = "https://go.urbanairship.com/";
public static readonly HttpClient HttpClient = new HttpClient();
public static readonly JsonSerializerSettings SerializerSettings = new JsonSerializerSettings();
public readonly String Host = "https://go.urbanairship.com/";
public readonly HttpClient HttpClient = new HttpClient();
public readonly JsonSerializerSettings SerializerSettings = new JsonSerializerSettings();

public static void Create(String uaAppKey, String uaAppMAsterSecret)
{
var auth = String.Format("{0}:{1}", uaAppKey, uaAppMAsterSecret);
auth = Convert.ToBase64String(Encoding.ASCII.GetBytes(auth));
public static ServiceModelConfig Create(String uaAppKey, String uaAppMAsterSecret)
{
return new ServiceModelConfig(uaAppKey, uaAppMAsterSecret);
}

SerializerSettings.Converters.Add(new StringEnumConverter { CamelCaseText = true });
public ServiceModelConfig(String uaAppKey, String uaAppMAsterSecret)
{
var auth = String.Format("{0}:{1}", uaAppKey, uaAppMAsterSecret);
auth = Convert.ToBase64String(Encoding.ASCII.GetBytes(auth));

HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", auth);
HttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "application/vnd.urbanairship+json; version=3;");
//System.Net.ServicePointManager.Expect100Continue = false;
SerializerSettings.Converters.Add(new StringEnumConverter { CamelCaseText = true });
SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
SerializerSettings.DateParseHandling = DateParseHandling.DateTime;
SerializerSettings.DateFormatHandling = DateFormatHandling.IsoDateFormat;
SerializerSettings.DateFormatString = "yyyy-MM-ddTH:mm:ss";

HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", auth);
HttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "application/vnd.urbanairship+json; version=3;");
}
}
}
2 changes: 1 addition & 1 deletion src/UrbanAirSharp/UrbanAirSharp.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="log4net">
<HintPath>..\packages\log4net.2.0.3\lib\net40-full\log4net.dll</HintPath>
<HintPath>..\..\..\packages\log4net.2.0.3\lib\net40-full\log4net.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
Expand Down
28 changes: 15 additions & 13 deletions src/UrbanAirSharp/UrbanAirSharpGateway.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,13 @@ namespace UrbanAirSharp
public class UrbanAirSharpGateway
{
private static readonly ILog Log = LogManager.GetLogger(typeof(UrbanAirSharpGateway));
private readonly ServiceModelConfig serviceModelConfig;

public UrbanAirSharpGateway(String appKey, String appMasterSecret)

public UrbanAirSharpGateway(String appKey, String appMasterSecret)
{
XmlConfigurator.Configure();
ServiceModelConfig.Create(appKey, appMasterSecret);
serviceModelConfig = ServiceModelConfig.Create(appKey, appMasterSecret);
}

/// <summary>
Expand All @@ -63,7 +65,7 @@ public UrbanAirSharpGateway(String appKey, String appMasterSecret)
/// <returns></returns>
public PushResponse Push(String alert, IList<DeviceType> deviceTypes = null, String deviceId = null, IList<BaseAlert> deviceAlerts = null, Audience customAudience = null)
{
return SendRequest(new PushRequest(CreatePush(alert, deviceTypes, deviceId, deviceAlerts, customAudience)));
return SendRequest(new PushRequest(CreatePush(alert, deviceTypes, deviceId, deviceAlerts, customAudience), serviceModelConfig));
}

/// <summary>
Expand All @@ -78,32 +80,32 @@ public PushResponse Push(String alert, IList<DeviceType> deviceTypes = null, Str
public PushResponse Validate(String alert, IList<DeviceType> deviceTypes = null, String deviceId = null,
IList<BaseAlert> deviceAlerts = null, Audience customAudience = null)
{
return SendRequest(new PushValidateRequest(CreatePush(alert, deviceTypes, deviceId, deviceAlerts, customAudience)));
return SendRequest(new PushValidateRequest(CreatePush(alert, deviceTypes, deviceId, deviceAlerts, customAudience), serviceModelConfig));
}

public ScheduleCreateResponse CreateSchedule(Schedule schedule)
{
return SendRequest(new ScheduleCreateRequest(schedule));
return SendRequest(new ScheduleCreateRequest(schedule, serviceModelConfig));
}

public ScheduleEditResponse EditSchedule(Guid scheduleId, Schedule schedule)
{
return SendRequest(new ScheduleEditRequest(scheduleId, schedule));
return SendRequest(new ScheduleEditRequest(scheduleId, schedule, serviceModelConfig));
}

public BaseResponse DeleteSchedule(Guid scheduleId)
{
return SendRequest(new ScheduleDeleteRequest(scheduleId));
return SendRequest(new ScheduleDeleteRequest(scheduleId, serviceModelConfig));
}

public ScheduleGetResponse GetSchedule(Guid scheduleId)
{
return SendRequest(new ScheduleGetRequest(scheduleId));
return SendRequest(new ScheduleGetRequest(scheduleId, serviceModelConfig));
}

public ScheduleListResponse ListSchedules()
{
return SendRequest(new ScheduleListRequest());
return SendRequest(new ScheduleListRequest(serviceModelConfig));
}

/// <summary>
Expand All @@ -127,28 +129,28 @@ public BaseResponse RegisterDeviceToken(DeviceToken deviceToken)
if (string.IsNullOrEmpty(deviceToken.Token))
throw new ArgumentException("A device Tokens Token field is Required", "deviceToken");

return SendRequest(new DeviceTokenRequest(deviceToken));
return SendRequest(new DeviceTokenRequest(deviceToken, serviceModelConfig));
}

public BaseResponse CreateTag(Tag tag)
{
if (string.IsNullOrEmpty(tag.TagName))
throw new ArgumentException("A tag name is Required", "tag.TagName");

return SendRequest(new TagCreateRequest(tag));
return SendRequest(new TagCreateRequest(tag, serviceModelConfig));
}

public BaseResponse DeleteTag(string tag)
{
if (string.IsNullOrEmpty(tag))
throw new ArgumentException("A tag is Required", "tag");

return SendRequest(new TagDeleteRequest(tag));
return SendRequest(new TagDeleteRequest(tag, serviceModelConfig));
}

public TagListResponse ListTags()
{
return SendRequest(new TagListRequest());
return SendRequest(new TagListRequest(serviceModelConfig));
}

public static Push CreatePush(String alert, IList<DeviceType> deviceTypes = null, String deviceId = null, IList<BaseAlert> deviceAlerts = null, Audience customAudience = null)
Expand Down