You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
2.9 KiB
142 lines
2.9 KiB
|
|
namespace Mapbox.Tokens
|
|
{
|
|
|
|
using Mapbox.Json;
|
|
using System;
|
|
using System.Text;
|
|
|
|
|
|
/// <summary>
|
|
/// Mapbox Token: https://www.mapbox.com/api-documentation/accounts/#retrieve-a-token
|
|
/// </summary>
|
|
public class MapboxToken
|
|
{
|
|
|
|
/// <summary>String representation of the token' status </summary>
|
|
[JsonProperty("code")]
|
|
public string Code;
|
|
|
|
|
|
/// <summary>Token metadata</summary>
|
|
[JsonProperty("token")]
|
|
public TokenMetadata TokenMetadata;
|
|
|
|
|
|
/// <summary>Parsed token status from 'code'</summary>
|
|
[JsonIgnore]
|
|
public MapboxTokenStatus Status = MapboxTokenStatus.StatusNotYetSet;
|
|
|
|
|
|
/// <summary>True if there was an error during requesting or parsing the token</summary>
|
|
[JsonIgnore]
|
|
public bool HasError;
|
|
|
|
|
|
/// <summary>Error message if the token could not be requested or parsed</summary>
|
|
[JsonIgnore]
|
|
public string ErrorMessage;
|
|
|
|
|
|
public static MapboxToken FromResponseData(byte[] data)
|
|
{
|
|
|
|
if (null == data || data.Length < 1)
|
|
{
|
|
return new MapboxToken()
|
|
{
|
|
HasError = true,
|
|
ErrorMessage = "No data received from token endpoint."
|
|
};
|
|
}
|
|
|
|
|
|
string jsonTxt = Encoding.UTF8.GetString(data);
|
|
|
|
MapboxToken token = new MapboxToken();
|
|
try
|
|
{
|
|
token = JsonConvert.DeserializeObject<MapboxToken>(jsonTxt);
|
|
|
|
MapboxTokenStatus status = (MapboxTokenStatus)Enum.Parse(typeof(MapboxTokenStatus), token.Code);
|
|
if (!Enum.IsDefined(typeof(MapboxTokenStatus), status))
|
|
{
|
|
throw new Exception(string.Format("could not convert token.code '{0}' to MapboxTokenStatus", token.Code));
|
|
}
|
|
|
|
token.Status = status;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
token.HasError = true;
|
|
token.ErrorMessage = ex.Message;
|
|
}
|
|
|
|
return token;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// Every token has a metadata object that contains information about the capabilities of the token.
|
|
/// https://www.mapbox.com/api-documentation/accounts/#token-metadata-object
|
|
/// </summary>
|
|
public class TokenMetadata
|
|
{
|
|
|
|
/// <summary>the identifier for the token</summary>
|
|
[JsonProperty("id")]
|
|
public string ID;
|
|
|
|
|
|
/// <summary>the type of token</summary>
|
|
[JsonProperty("usage")]
|
|
public string Usage;
|
|
|
|
|
|
/// <summary>if the token is a default token</summary>
|
|
[JsonProperty("default")]
|
|
public bool Default;
|
|
|
|
|
|
/// <summary></summary>
|
|
[JsonProperty("user")]
|
|
public string User;
|
|
|
|
|
|
/// <summary></summary>
|
|
[JsonProperty("authorization")]
|
|
public string Authorization;
|
|
|
|
|
|
/// <summary>date and time the token was created</summary>
|
|
[JsonProperty("created")]
|
|
public string Created;
|
|
|
|
|
|
/// <summary>date and time the token was last modified</summary>
|
|
[JsonProperty("modified")]
|
|
public string Modified;
|
|
|
|
|
|
/// <summary>array of scopes granted to the token</summary>
|
|
[JsonProperty("scopes")]
|
|
public string[] Scopes;
|
|
|
|
|
|
/// <summary>the client for the token, always 'api'</summary>
|
|
[JsonProperty("client")]
|
|
public string Client;
|
|
|
|
|
|
/// <summary>the token itself</summary>
|
|
[JsonProperty("token")]
|
|
public string Token;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|