public static IEnumerator LoadReleases(string url, string authToken = null) { string proxiedUrl = UpliftPreferences.UseGithubProxy(url); WWW www = string.IsNullOrEmpty(authToken) ? new WWW(proxiedUrl) : new WWW( proxiedUrl, null, new Dictionary <string, string> { { "Authorization", "token " + authToken } }); while (www.isDone == false) { yield return(null); } yield return(www); if (!string.IsNullOrEmpty(www.error)) { Debug.LogError(www.error); Debug.LogWarning(www.text); yield return(null); } else { yield return(ParseReleases(www.text)); } }
public static Stream GetAssetStream(GitHubAsset asset, string token) { string proxiedUrl = UpliftPreferences.UseGithubProxy(asset.apiURL); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(proxiedUrl); request.Method = "GET"; if (!string.IsNullOrEmpty(token)) { request.Headers["Authorization"] = "token " + token; } request.Accept = "application/octet-stream"; request.UserAgent = "Uplift GithubRepository/1.0 - https://github.com/DragonBox/uplift"; request.AllowAutoRedirect = false; ServicePointManager.ServerCertificateValidationCallback = GitHub.CertificateValidationCallback; Uri address; HttpStatusCode responseStatus; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { responseStatus = response.StatusCode; if ((int)response.StatusCode < 300 || (int)response.StatusCode > 399) { throw new ApplicationException("Request should be redirected"); } address = new Uri(response.GetResponseHeader("Location")); } request = (HttpWebRequest)WebRequest.Create(UpliftPreferences.UseGithubProxy(address.OriginalString)); request.Method = "GET"; request.UserAgent = "Uplift GithubRepository/1.0 - https://github.com/DragonBox/uplift"; HttpWebResponse finalResponse = (HttpWebResponse)request.GetResponse(); responseStatus = finalResponse.StatusCode; if ((int)finalResponse.StatusCode >= 200 && (int)finalResponse.StatusCode <= 299) { return(finalResponse.GetResponseStream()); } throw new ApplicationException("Could not get asset at " + asset.apiURL); }