您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
73 行
2.1 KiB
73 行
2.1 KiB
#if UNITY_EDITOR_WIN || UNITY_EDITOR_OSX
|
|
using System;
|
|
using System.Net.Http;
|
|
using System.Threading.Tasks;
|
|
using Newtonsoft.Json;
|
|
using UnityEngine;
|
|
|
|
namespace UnityEditor.Perception.Visualizer
|
|
{
|
|
static class PipAPI
|
|
{
|
|
static readonly HttpClient k_HttpClient;
|
|
const string k_PypiServer = "https://pypi.org";
|
|
const string k_PackageName = "unity-cv-datasetvisualizer";
|
|
|
|
static PipAPI()
|
|
{
|
|
k_HttpClient = new HttpClient();
|
|
}
|
|
|
|
internal static async Task<string> GetLatestVersionNumber()
|
|
{
|
|
var requestUri = new Uri($"{k_PypiServer}/pypi/{k_PackageName}/json?Accept=application/json");
|
|
try
|
|
{
|
|
var httpResponse = await k_HttpClient.GetAsync(requestUri);
|
|
if (httpResponse.IsSuccessStatusCode)
|
|
{
|
|
var responseString = httpResponse.Content.ReadAsStringAsync().Result;
|
|
dynamic responseJson = JsonConvert.DeserializeObject(responseString);
|
|
return responseJson.info.version;
|
|
}
|
|
|
|
HandleApiErrors(httpResponse);
|
|
}
|
|
catch (HttpRequestException e)
|
|
{
|
|
Debug.LogException(e);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
static void HandleApiErrors(HttpResponseMessage responseMessage)
|
|
{
|
|
Debug.LogError("A request to PyPI.org did not successfully complete: " + responseMessage.ReasonPhrase);
|
|
}
|
|
|
|
internal static int CompareVersions(string version1, string version2)
|
|
{
|
|
var split1 = version1.Split('.');
|
|
var split2 = version2.Split('.');
|
|
|
|
int i;
|
|
for(i = 0; i < Math.Min(split1.Length, split2.Length); i++)
|
|
{
|
|
var compare = Int32.Parse(split1[i]) - Int32.Parse(split2[i]);
|
|
if (compare != 0)
|
|
{
|
|
return compare;
|
|
}
|
|
}
|
|
|
|
if (i < split1.Length)
|
|
return -1;
|
|
|
|
if (i < split2.Length)
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
#endif
|