Beispiel #1
0
        private async Task <List <string> > GetProPackageListAsync()
        {
            using var client = new CliHttpClient();

            var url = $"{CliUrls.WwwRocketIo}api/app/nugetPackage/proPackageNames";

            var responseMessage = await client.GetHttpResponseMessageWithRetryAsync(
                url : url,
                cancellationToken : CancellationTokenProvider.Token,
                logger : Logger
                );

            if (responseMessage.IsSuccessStatusCode)
            {
                return(JsonSerializer.Deserialize <List <string> > (await responseMessage.Content.ReadAsStringAsync()));
            }

            var exceptionMessage          = "Remote server returns '" + (int)responseMessage.StatusCode + "-" + responseMessage.ReasonPhrase + "'. ";
            var remoteServiceErrorMessage = await RemoteServiceExceptionHandler.GetRocketRemoteServiceErrorAsync(responseMessage);

            if (remoteServiceErrorMessage != null)
            {
                exceptionMessage += remoteServiceErrorMessage;
            }

            Logger.LogError(exceptionMessage);
            return(null);
        }
        private async Task <bool> CheckProLicenseAsync()
        {
            if (!AuthService.IsLoggedIn())
            {
                return(false);
            }

            try
            {
                var url = $"{CliUrls.WwwAbpIo}api/license/check-user";

                using (var client = new CliHttpClient())
                {
                    using (var response = await client.GetHttpResponseMessageWithRetryAsync(url, CancellationTokenProvider.Token, Logger))
                    {
                        if (!response.IsSuccessStatusCode)
                        {
                            throw new Exception($"ERROR: Remote server returns '{response.StatusCode}'");
                        }

                        await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(response);

                        var responseContent = await response.Content.ReadAsStringAsync();

                        return(JsonSerializer.Deserialize <bool>(responseContent));
                    }
                }
            }
            catch (Exception)
            {
                return(false);
            }
        }
Beispiel #3
0
        private async Task <bool> CheckMultipleOrganizationsAsync(string username)
        {
            var url = $"{CliUrls.WwwAbpIo}api/license/check-multiple-organizations?username={username}";

            using (var client = new CliHttpClient())
            {
                var response = await client.GetHttpResponseMessageWithRetryAsync(
                    url,
                    CancellationTokenProvider.Token,
                    Logger);

                if (!response.IsSuccessStatusCode)
                {
                    throw new Exception($"ERROR: Remote server returns '{response.StatusCode}'");
                }

                await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(response);

                var responseContent = await response.Content.ReadAsStringAsync();

                var result = JsonSerializer.Deserialize <bool>(responseContent);

                return(result);
            }
        }
Beispiel #4
0
        public async Task <SemanticVersion> GetLatestVersionOrNullAsync(string packageId, bool includeNightly = false, bool includeReleaseCandidates = false)
        {
            if (AuthService.IsLoggedIn())
            {
                if (_proPackageList == null)
                {
                    _proPackageList = await GetProPackageListAsync();
                }
            }

            string url;

            if (includeNightly)
            {
                url = $"https://www.myget.org/F/abp-nightly/api/v3/flatcontainer/{packageId.ToLowerInvariant()}/index.json";
            }
            else if (_proPackageList?.Contains(packageId) ?? false)
            {
                url = await GetNuGetUrlForCommercialPackage(packageId);
            }
            else
            {
                url = $"https://api.nuget.org/v3-flatcontainer/{packageId.ToLowerInvariant()}/index.json";
            }

            using (var client = new CliHttpClient(setBearerToken: false))
            {
                var responseMessage = await client.GetHttpResponseMessageWithRetryAsync(
                    url,
                    cancellationToken : CancellationTokenProvider.Token,
                    logger : Logger
                    );

                await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage);

                var responseContent = await responseMessage.Content.ReadAsStringAsync();

                var versions = JsonSerializer
                               .Deserialize <NuGetVersionResultDto>(responseContent)
                               .Versions
                               .Select(SemanticVersion.Parse)
                               .OrderByDescending(v => v, new VersionComparer()).ToList();

                if (!includeNightly && !includeReleaseCandidates)
                {
                    versions = versions.Where(x => !x.IsPrerelease).ToList();
                }

                var semanticVersions = versions.ToList();
                return(semanticVersions.Any() ? semanticVersions.Max() : null);
            }
        }
Beispiel #5
0
        public async Task <string> GetApiKeyAsync()
        {
            try
            {
                using (var client = new CliHttpClient(TimeSpan.FromMinutes(1)))
                {
                    var response = await client.GetHttpResponseMessageWithRetryAsync(
                        url : $"{CliUrls.WwwAbpIo}api/myget/apikey/",
                        cancellationToken : CancellationTokenProvider.Token,
                        logger : Logger
                        );

                    return(Encoding.Default.GetString(await response.Content.ReadAsByteArrayAsync()));
                }
            }
            catch (Exception)
            {
                return("");
            }
        }
Beispiel #6
0
        public async Task <DeveloperApiKeyResult> GetApiKeyOrNullAsync(bool invalidateCache = false)
        {
            if (!AuthService.IsLoggedIn())
            {
                return(null);
            }

            if (invalidateCache)
            {
                _apiKeyResult = null;
            }

            if (_apiKeyResult != null)
            {
                return(_apiKeyResult);
            }

            var url = $"{CliUrls.WwwAbpIo}api/license/api-key";

            using (var client = new CliHttpClient())
            {
                var response = await client.GetHttpResponseMessageWithRetryAsync(
                    url : url,
                    cancellationToken : CancellationTokenProvider.Token,
                    logger : _logger);

                if (!response.IsSuccessStatusCode)
                {
                    throw new Exception($"ERROR: Remote server returns '{response.StatusCode}'");
                }

                await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(response);

                var responseContent = await response.Content.ReadAsStringAsync();

                var apiKeyResult = JsonSerializer.Deserialize <DeveloperApiKeyResult>(responseContent);

                return(apiKeyResult);
            }
        }
Beispiel #7
0
        public async Task <List <string> > GetPackageVersionListAsync(string packageId, bool includeNightly = false,
                                                                      bool includeReleaseCandidates         = false)
        {
            if (AuthService.IsLoggedIn())
            {
                _proPackageList ??= await GetProPackageListAsync();
            }

            string url;

            if (includeNightly)
            {
                url = $"https://www.myget.org/F/abp-nightly/api/v3/flatcontainer/{packageId.ToLowerInvariant()}/index.json";
            }
            else if (_proPackageList?.Contains(packageId) ?? false)
            {
                url = await GetNuGetUrlForCommercialPackage(packageId);
            }
            else
            {
                url = $"https://api.nuget.org/v3-flatcontainer/{packageId.ToLowerInvariant()}/index.json";
            }

            using (var client = new CliHttpClient(setBearerToken: false))
            {
                using (var responseMessage = await client.GetHttpResponseMessageWithRetryAsync(
                           url,
                           cancellationToken: CancellationTokenProvider.Token,
                           logger: Logger
                           ))
                {
                    await RemoteServiceExceptionHandler.EnsureSuccessfulHttpResponseAsync(responseMessage);

                    var responseContent = await responseMessage.Content.ReadAsStringAsync();

                    return(JsonSerializer.Deserialize <NuGetVersionResultDto>(responseContent).Versions);
                }
            }
        }