Exemplo n.º 1
0
        public ActionResult GetCurrentWorldRelease()
        {
            byte[]       src  = new byte[] { };
            WorldRelease info = new WorldRelease();

            try
            {
                info = ContentProviderHost.CurrentProvider.GetCurrentWorldReleaseInfo(GetUserToken());
                src  = ContentProviderHost.CurrentProvider.GetCurrentWorldRelease(GetUserToken());
            }
            catch (Exception)
            {
                return(null);
            }

            return(File(src, "application/zip", info.FileName));
        }
Exemplo n.º 2
0
        public ActionResult GetCurrentWorldReleaseInfo()
        {
            WorldRelease releaseInfo = new WorldRelease()
            {
                Type = ReleaseType.Unknown
            };

            try
            {
                releaseInfo = ContentProviderHost.CurrentProvider.GetCurrentWorldReleaseInfo(GetUserToken());
            }
            catch (Exception)
            {
                return(null);
            }

            return(Json(releaseInfo));
        }
Exemplo n.º 3
0
        public ActionResult GetWorldReleaseInfo(string fileName)
        {
            WorldRelease src = new WorldRelease()
            {
                Type = ReleaseType.Unknown
            };

            if (fileName?.Length > 0)
            {
                try
                {
                    src = ContentProviderHost.CurrentProvider.GetWorldReleaseInfo(GetUserToken(), fileName);
                }
                catch (Exception)
                {
                    return(null);
                }
            }

            return(Json(src));
        }
Exemplo n.º 4
0
        public WorldRelease CutWorldRelease(string token, ReleaseType releaseType)
        {
            RestRequest request = BuildRequest("/Server/CutWorldRelease", Method.GET, token);

            request.AddQueryParameter("ReleaseType", releaseType.ToString());
            var savedTimeout = _client.Timeout;

            _client.Timeout = 600000;
            IRestResponse response = _client.Execute(request);

            _client.Timeout = savedTimeout;

            WorldRelease newRelease = null;

            // No updates available or
            // Currently cutting a release / server is busy
            if (response.StatusCode == HttpStatusCode.NoContent || response.StatusCode == HttpStatusCode.Conflict)
            {
                return(newRelease);
            }

            if (response.StatusCode == HttpStatusCode.OK)
            {
                // check to make sure that the release was successful:
                var storedReleasePath = Path.GetFullPath(ConfigurationManager.AppSettings["WorldReleaseDir"]);
                newRelease = JsonConvert.DeserializeObject <WorldRelease>(response.Content);

                if (!Directory.Exists(storedReleasePath))
                {
                    try
                    {
                        Directory.CreateDirectory(storedReleasePath);
                    }
                    catch (Exception ex)
                    {
                        throw new ApplicationException("Unable to create stored release folder: " + ex.Message, ex);
                    }
                }

                // If version is missing, no changes available:
                if (newRelease?.Version == null)
                {
                    return(null);
                }

                if (!(newRelease.Version?.Length > 0))
                {
                    throw new ApplicationException(
                              "World Release information contained errors: " + response.Content,
                              response.ErrorException);
                }

                // Save the release info too th `estoredReleasePath` path in the App.config
                try
                {
                    File.WriteAllText(
                        Path.GetFullPath(Path.Combine(storedReleasePath, newRelease.Version + ".json")),
                        response.Content);
                }
                catch (Exception e)
                {
                    throw new ApplicationException(
                              "Could not save release information to disk: " + e.Message + response.Content,
                              response.ErrorException);
                }

                try
                {
                    // Get the release
                    var release = GetWorldRelease(token, newRelease.FileName);
                    File.WriteAllBytes(Path.Combine(storedReleasePath, newRelease.FileName), release);
                }
                catch (Exception e)
                {
                    throw new ApplicationException(
                              "Could not save release to disk: " + e.Message + response.Content, response.ErrorException);
                }
                return(newRelease);
            }

            throw new ApplicationException("Unable to get the world release info from server: " + response.Content, response.ErrorException);
        }