public GetTeamCityProjectDetailsResponse Get(GetTeamCityProjectDetails request)
        {
            GetProjectResponse teamCityResponse = null;

            try
            {
                teamCityResponse = TeamCityClient.GetProject(new GetProject
                {
                    Locator = "id:" + request.ProjectId
                });
            }
            catch (WebServiceException e)
            {
                if (e.IsAny400())
                {
                    throw HttpError.NotFound("Project not found");
                }
            }

            if (teamCityResponse == null)
            {
                throw new HttpError(HttpStatusCode.InternalServerError, "Invalid response from TeamCity");
            }

            GetBuildResponse build = null;

            try
            {
                build = TeamCityClient.GetBuild(new GetBuild {
                    BuildLocator = "project:id:" + request.ProjectId
                });
            }
            catch (WebException e)
            {
                if (!e.HasStatus(HttpStatusCode.BadRequest))
                {
                    throw;
                }
            }
            catch (WebServiceException wse)
            {
                if (!wse.IsAny400())
                {
                    throw;
                }
            }

            build = build ?? new GetBuildResponse();

            var response = new GetTeamCityProjectDetailsResponse
            {
                ProjectName = teamCityResponse.Name,
                ProjectId   = teamCityResponse.Id,
                BuildNumber = build.Number,
                BuildState  = build.State,
                BuildStatus = build.StatusText
            };

            return(response);
        }
        protected override void ProcessRecord()
        {
            if (Regions?.Count > 0 && AllRegions)
            {
                throw new ArgumentException("Exactly one of Regions, AllRegions should be specified.");
            }

            if ((Regions == null || Regions.Count == 0) && !AllRegions)
            {
                throw new ArgumentException("Exactly one of Regions, AllRegions should be specified.");
            }

            string buildIdString = new NewPFMultiplayerServer {
                ProductionEnvironmentUrl = ProductionEnvironmentUrl
            }.GetBuildId(BuildName, BuildId);

            HashSet <AzureRegion> regionsList = new HashSet <AzureRegion>();

            if (AllRegions)
            {
                GetBuildResponse response = Instance.GetBuildAsync(new GetBuildRequest()
                {
                    BuildId = buildIdString
                }).Result.Result;
                response.RegionConfigurations.ForEach(x => regionsList.Add(x.Region.Value));
            }
            else
            {
                Regions.ForEach(x => regionsList.Add(x));
            }

            List <MultiplayerServerSummary> serverSummaries = new List <MultiplayerServerSummary>();

            foreach (AzureRegion region in regionsList)
            {
                serverSummaries.AddRange(GetMultiplayerServers(buildIdString, region));
            }

            WriteObject(serverSummaries);
        }