20240422
This commit is contained in:
commit
e0afef912e
1285 files changed
+83219
No files matched your search
@@ -0,0 +1,76 @@
|
||||
//-----------------------------------------------------------------------
|
||||
// <copyright file="Resource.cs" company="Mapbox">
|
||||
// Copyright (c) 2016 Mapbox. All rights reserved.
|
||||
// </copyright>
|
||||
//-----------------------------------------------------------------------
|
||||
|
||||
namespace Mapbox.Platform
|
||||
{
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Linq;
|
||||
#if UNITY_IOS
|
||||
using UnityEngine;
|
||||
#endif
|
||||
|
||||
/// <summary> Abstract class representing a Mapbox resource URL. </summary>
|
||||
public abstract class Resource
|
||||
{
|
||||
/// <summary> Gets the API endpoint, which is a partial URL path. </summary>
|
||||
public abstract string ApiEndpoint { get; }
|
||||
|
||||
/// <summary>Builds a complete, valid URL string.</summary>
|
||||
/// <returns>Returns URL string.</returns>
|
||||
public abstract string GetUrl();
|
||||
|
||||
/// <summary> Encodes a URI with a querystring. </summary>
|
||||
/// <param name="values"> Querystring values. </param>
|
||||
/// <returns> Encoded URL. </returns>
|
||||
protected static String EncodeQueryString(IEnumerable<KeyValuePair<string, string>> values)
|
||||
{
|
||||
if (values != null)
|
||||
{
|
||||
// we are seeing super weird crashes on some iOS devices:
|
||||
// see 'ForwardGeocodeResource' for more details
|
||||
var encodedValues = from p in values
|
||||
#if UNITY_IOS
|
||||
#if UNITY_2017_1_OR_NEWER
|
||||
let k = UnityEngine.Networking.UnityWebRequest.EscapeURL(p.Key.Trim())
|
||||
let v = UnityEngine.Networking.UnityWebRequest.EscapeURL(p.Value)
|
||||
#else
|
||||
let k = WWW.EscapeURL(p.Key.Trim())
|
||||
let v = WWW.EscapeURL(p.Value)
|
||||
#endif
|
||||
#else
|
||||
let k = Uri.EscapeDataString(p.Key.Trim())
|
||||
let v = Uri.EscapeDataString(p.Value)
|
||||
#endif
|
||||
orderby k
|
||||
select string.IsNullOrEmpty(v) ? k : string.Format("{0}={1}", k, v);
|
||||
if (encodedValues.Count() == 0)
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
else
|
||||
{
|
||||
return "?" + string.Join(
|
||||
"&", encodedValues.ToArray());
|
||||
}
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>Builds a string from an array of options for use in URLs.</summary>
|
||||
/// <param name="items"> Array of option strings. </param>
|
||||
/// <param name="separator"> Character to use for separating items in arry. Defaults to ",". </param>
|
||||
/// <returns>Comma-separated string of options.</returns>
|
||||
/// <typeparam name="U">Type in the array.</typeparam>
|
||||
protected static string GetUrlQueryFromArray<U>(U[] items, string separator = ",")
|
||||
{
|
||||
return string.Join(separator, items.Select(item => item.ToString()).ToArray());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user