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
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@ assets/
# App Settings
appsettings.json

# Experimental
Triggers/

# Private Keys
*.pfx

Expand Down
25 changes: 25 additions & 0 deletions src/Converters/CoordinatesArrayJsonConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
namespace OpenWeatherMap.Converters
{
using System;
using Newtonsoft.Json;
using OpenWeatherMap.Triggers;

internal sealed class CoordinatesArrayJsonConverter : JsonConverter
{
/// <inheritdoc/>
public override bool CanConvert(Type objectType) => true;

/// <inheritdoc/>
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var coordinates = serializer.Deserialize<int[]>(reader);
return new Coordinates(coordinates);
}

/// <inheritdoc/>
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
serializer.Serialize(writer, ((Coordinates)value).AsArray());
}
}
}
29 changes: 29 additions & 0 deletions src/Converters/DefaultJsonConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
namespace OpenWeatherMap.Converters
{
using System;
using Newtonsoft.Json;

internal sealed class DefaultJsonConverter : JsonConverter
{
/// <inheritdoc/>
public override bool CanRead => false;

/// <inheritdoc/>
public override bool CanWrite => false;

/// <inheritdoc/>
public override bool CanConvert(Type objectType) => true;

/// <inheritdoc/>
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotSupportedException();
}

/// <inheritdoc/>
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotSupportedException();
}
}
}
51 changes: 51 additions & 0 deletions src/Converters/GeoAreaJsonConverter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
namespace OpenWeatherMap.Converters
{
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using OpenWeatherMap.Triggers.Area;

internal sealed class GeoAreaJsonConverter : JsonConverter
{
/// <inheritdoc/>
public override bool CanWrite => false;

/// <inheritdoc/>
public override bool CanConvert(Type objectType) => true;

/// <inheritdoc/>
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var data = JObject.Load(reader);
var type = data["type"].ToObject<GeoAreaType>(serializer);
var area = FromType(type);

using (var tokenReader = data.CreateReader())
{
serializer.Populate(tokenReader, area);
}

return area;
}

/// <inheritdoc/>
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotSupportedException();
}

private static IGeoArea FromType(GeoAreaType type)
{
switch (type)
{
case GeoAreaType.Point: return new Point();
case GeoAreaType.MultiPoint: return new MultiPoint();
case GeoAreaType.Polygon: return new Polygon();
case GeoAreaType.MultiPolygon: return new MultiPolygon();
}

throw new ArgumentOutOfRangeException(nameof(type), type,
"The specified type is not defined in the GeoAreaType enumeration.");
}
}
}
1 change: 0 additions & 1 deletion src/Entities/WeatherForecast.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
{
using System.Collections.Generic;
using Newtonsoft.Json;
using OpenWeatherMap.Entities;

/// <summary>
/// Represents the response object of a weather forecast request.
Expand Down
13 changes: 1 addition & 12 deletions src/OpenWeatherMap4NET.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<PackageProjectUrl></PackageProjectUrl>
<Description>A wrapper for the OpenWeatherMap.org RESTful api service.</Description>
<Authors>Angelo Breuer</Authors>
<Version>1.0.4</Version>
<Version>1.0.5</Version>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<RepositoryUrl>https://github.com/angelobreuer/OpenWeatherMap4NET</RepositoryUrl>
<PackageTags>openweathermap, weather, wrapper, OpenWeatherMap4NET</PackageTags>
Expand All @@ -26,17 +26,6 @@
<DocumentationFile>OpenWeatherMap4NET.xml</DocumentationFile>
</PropertyGroup>

<ItemGroup>
<Compile Remove="Triggers\**" />
<EmbeddedResource Remove="Triggers\**" />
<None Remove="Triggers\**" />
</ItemGroup>

<ItemGroup>
<Compile Remove="OpenWeatherMapTriggerOptions.cs" />
<Compile Remove="OpenWeatherMapTriggerService.cs" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
<PackageReference Include="System.Runtime.Caching" Version="4.5.0" />
Expand Down
174 changes: 158 additions & 16 deletions src/OpenWeatherMap4NET.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions src/OpenWeatherMapOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ public class OpenWeatherMapOptions
/// </summary>
public Uri BaseAddress { get; set; } = new Uri("https://api.openweathermap.org/data/");

public TimeSpan PollInterval { get; set; } = TimeSpan.FromSeconds(40);

/// <summary>
/// Validates the open weather map options.
/// </summary>
Expand Down
Loading