Skip to content
Merged
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
15 changes: 15 additions & 0 deletions clean-bin-and-obj.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
@Echo Off
FOR /d /r .\ %%d IN (*) DO (
@IF EXIST "%%d" (
pushd %%d
FOR /d /r %%t IN (bin\, obj\) DO (
@IF EXIST "%%t" (
ECHO "Removing %%t"
rd /s /q "%%t"
)
)
popd
)
)

pause
5 changes: 4 additions & 1 deletion src/Geo.ArcGIS/Models/Parameters/GeocodingParameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace Geo.ArcGIS.Models.Parameters
/// <summary>
/// A parameters object for the geocoding ArcGIS request.
/// </summary>
public class GeocodingParameters : IClientCredentialsParameters
public class GeocodingParameters : IClientCredentialsParameters, IAdditionalParameters
{
/// <summary>
/// Gets a list of address attributes.
Expand Down Expand Up @@ -85,5 +85,8 @@ public class GeocodingParameters : IClientCredentialsParameters

/// <inheritdoc/>
public string ClientSecret { get; set; }

/// <inheritdoc/>
public IDictionary<string, string> AdditionalParameters { get; } = new Dictionary<string, string>();
}
}
7 changes: 6 additions & 1 deletion src/Geo.ArcGIS/Models/Parameters/StorageParameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@

namespace Geo.ArcGIS.Models.Parameters
{
using System.Collections.Generic;

/// <summary>
/// A parameters object for the storage flag information in ArcGIS request.
/// </summary>
public class StorageParameters
public class StorageParameters : IAdditionalParameters
{
/// <summary>
/// Gets or sets a value indicating whether the results of the operation will be persisted.
Expand All @@ -31,5 +33,8 @@ public class StorageParameters
/// (https://developers.arcgis.com/rest/geocode/api-reference/geocoding-free-vs-paid.htm).
/// </summary>
public bool ForStorage { get; set; } = false;

/// <inheritdoc/>
public IDictionary<string, string> AdditionalParameters { get; } = new Dictionary<string, string>();
}
}
5 changes: 4 additions & 1 deletion src/Geo.ArcGIS/Models/Parameters/SuggestParameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace Geo.ArcGIS.Models.Parameters
/// <summary>
/// A parameters object for the suggest ArcGIS request.
/// </summary>
public class SuggestParameters
public class SuggestParameters : IAdditionalParameters
{
/// <summary>
/// Gets or sets the input text entered by a user, which is used by the suggest operation to generate a list of possible matches.
Expand Down Expand Up @@ -65,5 +65,8 @@ public class SuggestParameters
/// The default value is postal city.
/// </summary>
public PreferredLabelValue PreferredLabelValue { get; set; } = PreferredLabelValue.PostalCity;

/// <inheritdoc/>
public IDictionary<string, string> AdditionalParameters { get; } = new Dictionary<string, string>();
}
}
6 changes: 6 additions & 0 deletions src/Geo.ArcGIS/Services/ArcGISGeocoding.cs
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,7 @@ internal async Task<Uri> BuildAddressCandidateRequest(AddressCandidateParameters
AddStorageParameter(parameters, ref query);

query = await AddArcGISToken(parameters, query, cancellationToken).ConfigureAwait(false);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -597,6 +598,7 @@ internal async Task<Uri> BuildPlaceCandidateRequest(PlaceCandidateParameters par
AddStorageParameter(parameters, ref query);

query = await AddArcGISToken(parameters, query, cancellationToken).ConfigureAwait(false);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -686,6 +688,8 @@ internal Task<Uri> BuildSuggestRequest(SuggestParameters parameters, Cancellatio
_logger.ArcGISWarning(Resources.Services.ArcGISGeocoding.Invalid_Preferred_Label_Value);
}

query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

return Task.FromResult<Uri>(uriBuilder.Uri);
Expand Down Expand Up @@ -765,6 +769,7 @@ internal async Task<Uri> BuildReverseGeocodingRequest(ReverseGeocodingParameters
AddStorageParameter(parameters, ref query);

query = await AddArcGISToken(parameters, query, cancellationToken).ConfigureAwait(false);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -884,6 +889,7 @@ internal async Task<Uri> BuildGeocodingRequest(GeocodingParameters parameters, C
}

query = await AddArcGISToken(parameters, query, cancellationToken).ConfigureAwait(false);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down
6 changes: 5 additions & 1 deletion src/Geo.Bing/Models/Parameters/BaseParameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@

namespace Geo.Bing.Models.Parameters
{
using System.Collections.Generic;
using System.Globalization;

/// <summary>
/// Base parameters across all Bing geocoding APIs.
/// </summary>
public class BaseParameters
public class BaseParameters : IAdditionalParameters
{
/// <summary>
/// Gets or sets a value indicating whether or not to include the neighbourhood information.
Expand All @@ -34,5 +35,8 @@ public class BaseParameters
/// Gets or sets the culture to use for the request.
/// </summary>
public CultureInfo Culture { get; set; }

/// <inheritdoc/>
public IDictionary<string, string> AdditionalParameters { get; } = new Dictionary<string, string>();
}
}
3 changes: 3 additions & 0 deletions src/Geo.Bing/Services/BingGeocoding.cs
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ internal Uri BuildGeocodingRequest(GeocodingParameters parameters)
BuildLimitedResultQuery(parameters, ref query);

AddBingKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -197,6 +198,7 @@ internal Uri BuildReverseGeocodingRequest(ReverseGeocodingParameters parameters)
BuildBaseQuery(parameters, ref query);

AddBingKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -272,6 +274,7 @@ internal Uri BuildAddressGeocodingRequest(AddressGeocodingParameters parameters)
BuildLimitedResultQuery(parameters, ref query);

AddBingKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down
20 changes: 20 additions & 0 deletions src/Geo.Core/Abstractions/IAdditionalParameters.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// <copyright file="IAdditionalParameters.cs" company="Geo.NET">
// Copyright (c) Geo.NET.
// Licensed under the MIT license. See the LICENSE file in the solution root for full license information.
// </copyright>

namespace Geo
{
using System.Collections.Generic;

/// <summary>
/// Parameters that allow additional key/value pairs to be appended to the request query string.
/// </summary>
public interface IAdditionalParameters
{
/// <summary>
/// Gets the additional key/value pairs to be appended to the request query string.
/// </summary>
IDictionary<string, string> AdditionalParameters { get; }
}
}
42 changes: 42 additions & 0 deletions src/Geo.Core/Extensions/QueryStringExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// <copyright file="QueryStringExtensions.cs" company="Geo.NET">
// Copyright (c) Geo.NET.
// Licensed under the MIT license. See the LICENSE file in the solution root for full license information.
// </copyright>

namespace Geo.Core.Extensions
{
using Geo;

/// <summary>
/// Extension methods on the <see cref="QueryString"/> struct.
/// </summary>
public static class QueryStringExtensions
{
/// <summary>
/// Adds any additional parameters from an <see cref="IAdditionalParameters"/> instance to the <see cref="QueryString"/>.
/// Entries with a null value are skipped.
/// </summary>
/// <param name="query">The <see cref="QueryString"/> to add to.</param>
/// <param name="parameters">The <see cref="IAdditionalParameters"/> to read additional key/value pairs from.</param>
/// <returns>The <see cref="QueryString"/> with the additional parameters appended.</returns>
public static QueryString AddAdditionalParameters(this QueryString query, IAdditionalParameters parameters)
{
if (parameters?.AdditionalParameters == null)
{
return query;
}

foreach (var kvp in parameters.AdditionalParameters)
{
if (kvp.Value == null)
{
continue;
}

query = query.Add(kvp.Key, kvp.Value);
}

return query;
}
}
}
6 changes: 5 additions & 1 deletion src/Geo.Google/Models/Parameters/BaseParameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,20 @@

namespace Geo.Google.Models.Parameters
{
using System.Collections.Generic;
using System.Globalization;

/// <summary>
/// The base parameters shared across all requests.
/// </summary>
public class BaseParameters
public class BaseParameters : IAdditionalParameters
{
/// <summary>
/// Gets or sets the language in which to return results.
/// </summary>
public CultureInfo Language { get; set; }

/// <inheritdoc/>
public IDictionary<string, string> AdditionalParameters { get; } = new Dictionary<string, string>();
}
}
8 changes: 8 additions & 0 deletions src/Geo.Google/Services/GoogleGeocoding.cs
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ internal Uri BuildGeocodingRequest(GeocodingParameters parameters)
AddBaseParameters(parameters, ref query);

AddGoogleKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -303,6 +304,7 @@ internal Uri BuildReverseGeocodingRequest(ReverseGeocodingParameters parameters)
AddBaseParameters(parameters, ref query);

AddGoogleKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -371,6 +373,7 @@ internal Uri BuildFindPlaceRequest(FindPlacesParameters parameters)
AddBaseParameters(parameters, ref query);

AddGoogleKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -439,6 +442,7 @@ internal Uri BuildNearbySearchRequest(NearbySearchParameters parameters)
AddBaseSearchParameters(parameters, ref query);

AddGoogleKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -476,6 +480,7 @@ internal Uri BuildTextSearchRequest(TextSearchParameters parameters)
AddBaseSearchParameters(parameters, ref query);

AddGoogleKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -531,6 +536,7 @@ internal Uri BuildDetailsRequest(DetailsParameters parameters)
AddBaseParameters(parameters, ref query);

AddGoogleKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -597,6 +603,7 @@ internal Uri BuildPlaceAutocompleteRequest(PlacesAutocompleteParameters paramete
AddAutocompleteParameters(parameters, ref query);

AddGoogleKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand All @@ -623,6 +630,7 @@ internal Uri BuildQueryAutocompleteRequest(QueryAutocompleteParameters parameter
AddAutocompleteParameters(parameters, ref query);

AddGoogleKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down
5 changes: 4 additions & 1 deletion src/Geo.Here/Models/Parameters/BaseParameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ namespace Geo.Here.Models.Parameters
/// <summary>
/// The base parameters that are used with all HERE requests.
/// </summary>
public class BaseParameters
public class BaseParameters : IAdditionalParameters
{
/// <summary>
/// Gets or sets the language to be used for result rendering from a list of BCP47 compliant Language Codes.
Expand All @@ -36,5 +36,8 @@ public class BaseParameters
/// </list>
/// </summary>
public IList<string> Show { get; } = new List<string>();

/// <inheritdoc/>
public IDictionary<string, string> AdditionalParameters { get; } = new Dictionary<string, string>();
}
}
6 changes: 6 additions & 0 deletions src/Geo.Here/Services/HereGeocoding.cs
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@ internal Uri BuildGeocodingRequest(GeocodeParameters parameters)
AddLocatingParameters(parameters, ref query);

AddHereKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -242,6 +243,7 @@ internal Uri BuildReverseGeocodingRequest(ReverseGeocodeParameters parameters)
AddLocatingParameters(parameters, ref query);

AddHereKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -270,6 +272,7 @@ internal Uri BuildDiscoverRequest(DiscoverParameters parameters)
AddBoundingParameters(parameters, ref query);

AddHereKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -307,6 +310,7 @@ internal Uri BuildAutosuggestRequest(AutosuggestParameters parameters)
AddBoundingParameters(parameters, ref query);

AddHereKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -351,6 +355,7 @@ internal Uri BuildBrowseRequest(BrowseParameters parameters)
AddBoundingParameters(parameters, ref query);

AddHereKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down Expand Up @@ -379,6 +384,7 @@ internal Uri BuildLookupRequest(LookupParameters parameters)
AddBaseParameters(parameters, ref query);

AddHereKey(parameters, ref query);
query = query.AddAdditionalParameters(parameters);

uriBuilder.AddQuery(query);

Expand Down
5 changes: 4 additions & 1 deletion src/Geo.MapBox/Models/Parameters/BaseParameters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace Geo.MapBox.Models.Parameters
/// <summary>
/// The parameters possible to use for all requests.
/// </summary>
public class BaseParameters
public class BaseParameters : IAdditionalParameters
{
/// <summary>
/// Gets or sets the type of endpoint to call.
Expand Down Expand Up @@ -52,5 +52,8 @@ public class BaseParameters
/// Available worldviews are: ar,cn,in,jp,ma,ru,tr,us. If worldview is not set, the us worldview boundaries are returned by default.
/// </summary>
public string Worldview { get; set; }

/// <inheritdoc/>
public IDictionary<string, string> AdditionalParameters { get; } = new Dictionary<string, string>();
}
}
Loading
Loading