public void FromProperties_AllowsNullSemVerLevel() { // Arrange & Act var actual = ClientCompatibilityFactory.FromProperties(unparsedSemVerLevel: null); // Assert Assert.Equal(new SemanticVersion("1.0.0"), actual.SemVerLevel); }
public void FromUri_AllowsNullUri() { // Arrange & Act var actual = ClientCompatibilityFactory.FromUri(uri: null); // Assert Assert.Equal(new SemanticVersion("1.0.0"), actual.SemVerLevel); }
public void FromProperties_SetsSemVerLevel(string semVerLevel, string unparsedExpected) { // Arrange var expected = new SemanticVersion(unparsedExpected); // Arrange & Act var actual = ClientCompatibilityFactory.FromProperties(semVerLevel); // Assert Assert.Equal(expected, actual.SemVerLevel); }
public virtual async Task <IHttpActionResult> Get( ODataQueryOptions <ODataPackage> options, [FromUri] string semVerLevel = "", CancellationToken token = default(CancellationToken)) { var clientCompatibility = ClientCompatibilityFactory.FromProperties(semVerLevel); var sourceQuery = await _serverRepository.GetPackagesAsync(clientCompatibility, token); return(TransformToQueryResult(options, sourceQuery, clientCompatibility)); }
public void FromUri_DetectsSemVerLevel(string relative, string unparsedExpected) { // Arrange var uri = new Uri(new Uri("http://localhost:8080/nuget/"), relative); var expected = new SemanticVersion(unparsedExpected); // Act var actual = ClientCompatibilityFactory.FromUri(uri); // Assert Assert.Equal(expected, actual.SemVerLevel); }
public IHttpActionResult Search(ODataQueryOptions <ODataPackage> options, [FromODataUri] string searchTerm = "", [FromODataUri] string targetFramework = "", [FromODataUri] bool includePrerelease = false, [FromODataUri] bool includeDelisted = false, [FromUri] string semVerLevel = "", CancellationToken token = default(CancellationToken)) { var serverRepository = _packageRepositoryFactory.GetPackageRepository(User); if (!serverRepository.IsAuthenticated) { return(StatusCode(HttpStatusCode.Forbidden)); } var sourceQuery = serverRepository.FindOctopusProjectPackages(searchTerm, token); return(TransformToQueryResult(options, sourceQuery, ClientCompatibilityFactory.FromProperties(semVerLevel))); }
public virtual async Task <IHttpActionResult> FindPackagesById( ODataQueryOptions <ODataPackage> options, [FromODataUri] string id, [FromUri] string semVerLevel = "", CancellationToken token = default(CancellationToken)) { if (string.IsNullOrEmpty(id)) { var emptyResult = Enumerable.Empty <ODataPackage>().AsQueryable(); return(QueryResult(options, emptyResult, _maxPageSize)); } var clientCompatibility = ClientCompatibilityFactory.FromProperties(semVerLevel); var sourceQuery = await _serverRepository.FindPackagesByIdAsync(id, clientCompatibility, token); return(TransformToQueryResult(options, sourceQuery, clientCompatibility)); }
public IHttpActionResult FindPackagesById(ODataQueryOptions <ODataPackage> options, [FromODataUri] string id, [FromUri] string semVerLevel = "", CancellationToken token = default(CancellationToken)) { var serverRepository = _packageRepositoryFactory.GetPackageRepository(User); if (!serverRepository.IsAuthenticated) { return(StatusCode(HttpStatusCode.Forbidden)); } if (string.IsNullOrEmpty(id)) { return(QueryResult(options, Enumerable.Empty <ODataPackage>().AsQueryable(), MaxPageSize)); } var sourceQuery = serverRepository.FindOctopusReleasePackages(id, token); return(TransformToQueryResult(options, sourceQuery, ClientCompatibilityFactory.FromProperties(semVerLevel))); }
public virtual async Task <IHttpActionResult> Search( ODataQueryOptions <ODataPackage> options, [FromODataUri] string searchTerm = "", [FromODataUri] string targetFramework = "", [FromODataUri] bool includePrerelease = false, [FromODataUri] bool includeDelisted = false, [FromUri] string semVerLevel = "", CancellationToken token = default(CancellationToken)) { var targetFrameworks = String.IsNullOrEmpty(targetFramework) ? Enumerable.Empty <string>() : targetFramework.Split('|'); var clientCompatibility = ClientCompatibilityFactory.FromProperties(semVerLevel); var sourceQuery = await _serverRepository.SearchAsync( searchTerm, targetFrameworks, includePrerelease, clientCompatibility, token); return(TransformToQueryResult(options, sourceQuery, clientCompatibility)); }
public virtual async Task <IHttpActionResult> GetUpdates( ODataQueryOptions <ODataPackage> options, [FromODataUri] string packageIds, [FromODataUri] string versions, [FromODataUri] bool includePrerelease, [FromODataUri] bool includeAllVersions, [FromODataUri] string targetFrameworks = "", [FromODataUri] string versionConstraints = "", [FromUri] string semVerLevel = "", CancellationToken token = default(CancellationToken)) { if (string.IsNullOrEmpty(packageIds) || string.IsNullOrEmpty(versions)) { return(Ok(Enumerable.Empty <ODataPackage>().AsQueryable())); } // Workaround https://github.com/NuGet/NuGetGallery/issues/674 for NuGet 2.1 client. // Can probably eventually be retired (when nobody uses 2.1 anymore...) // Note - it was URI un-escaping converting + to ' ', undoing that is actually a pretty conservative substitution because // space characters are never acepted as valid by VersionUtility.ParseFrameworkName. if (!string.IsNullOrEmpty(targetFrameworks)) { targetFrameworks = targetFrameworks.Replace(' ', '+'); } var idValues = packageIds.Trim().Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); var versionValues = versions.Trim().Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); var targetFrameworkValues = String.IsNullOrEmpty(targetFrameworks) ? null : targetFrameworks.Split('|').Select(VersionUtility.ParseFrameworkName).ToList(); var versionConstraintValues = (String.IsNullOrEmpty(versionConstraints) ? new string[idValues.Length] : versionConstraints.Split('|')).ToList(); if (idValues.Length == 0 || idValues.Length != versionValues.Length || idValues.Length != versionConstraintValues.Count) { // Exit early if the request looks invalid return(Ok(Enumerable.Empty <ODataPackage>().AsQueryable())); } var packagesToUpdate = new List <IPackageMetadata>(); for (var i = 0; i < idValues.Length; i++) { if (SemanticVersion.TryParse(versionValues[i], out var semVersion)) { packagesToUpdate.Add(new PackageBuilder { Id = idValues[i], Version = semVersion }); } else { versionConstraintValues.RemoveAt(i); } } var versionConstraintsList = new IVersionSpec[versionConstraintValues.Count]; for (var i = 0; i < versionConstraintsList.Length; i++) { if (!String.IsNullOrEmpty(versionConstraintValues[i])) { VersionUtility.TryParseVersionSpec(versionConstraintValues[i], out versionConstraintsList[i]); } } var clientCompatibility = ClientCompatibilityFactory.FromProperties(semVerLevel); var sourceQuery = await _serverRepository.GetUpdatesAsync( packagesToUpdate, includePrerelease, includeAllVersions, targetFrameworkValues, versionConstraintsList, clientCompatibility, token); return(TransformToQueryResult(options, sourceQuery, clientCompatibility)); }