Example #1
0
        public async Task <IActionResult> VersionsPostAsync(
            [HttpTrigger(AuthorizationLevel.Function, FunctionConstants.FunctionPost, Route = "packages/{packageIdentifier}/versions")]
            HttpRequest req,
            string packageIdentifier,
            ILogger log)
        {
            Dictionary <string, string> headers = null;
            Version version = null;

            try
            {
                // Parse Headers
                headers = HeaderProcessor.ToDictionary(req.Headers);

                // Parse body as Version
                version = await Parser.StreamParser <Version>(req.Body, log);

                ApiDataValidator.Validate(version);

                // Save Document
                await this.dataStore.AddVersion(packageIdentifier, version);
            }
            catch (DefaultException e)
            {
                log.LogError(e.ToString());
                return(ActionResultHelper.ProcessError(e.InternalRestError));
            }
            catch (Exception e)
            {
                log.LogError(e.ToString());
                return(ActionResultHelper.UnhandledError(e));
            }

            return(new ApiObjectResult(new ApiResponse <Version>(version)));
        }
        public async Task <IActionResult> ManifestPostAsync(
            [HttpTrigger(AuthorizationLevel.Function, FunctionConstants.FunctionPost, Route = "packageManifests")]
            HttpRequest req,
            ILogger log)
        {
            Dictionary <string, string> headers         = null;
            PackageManifest             packageManifest = null;

            try
            {
                // Parse Headers
                headers = HeaderProcessor.ToDictionary(req.Headers);

                // Parse Stream
                packageManifest = await Parser.StreamParser <PackageManifest>(req.Body, log);

                ApiDataValidator.Validate(packageManifest);

                await this.dataStore.AddPackageManifest(packageManifest);
            }
            catch (DefaultException e)
            {
                log.LogError(e.ToString());
                return(ActionResultHelper.ProcessError(e.InternalRestError));
            }
            catch (Exception e)
            {
                log.LogError(e.ToString());
                return(ActionResultHelper.UnhandledError(e));
            }

            return(new ApiObjectResult(new ApiResponse <PackageManifest>(packageManifest)));
        }
Example #3
0
        /// <inheritdoc/>
        public IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            // Create Validation Results
            var results = new List <ValidationResult>();

            // Validate Optional Members
            if (this.WindowsLibraries != null)
            {
                ApiDataValidator.Validate(this.WindowsLibraries, results);
            }

            if (this.WindowsFeatures != null)
            {
                ApiDataValidator.Validate(this.WindowsFeatures, results);
            }

            if (this.PackageDependencies != null)
            {
                ApiDataValidator.Validate(this.PackageDependencies, results);
            }

            if (this.ExternalDependencies != null)
            {
                ApiDataValidator.Validate(this.ExternalDependencies, results);
            }

            // Return Results
            return(results);
        }
        /// <summary>
        /// This updates a Manifest to update match another Manifest.
        /// </summary>
        /// <param name="packageManifest">Manifest.</param>
        public void Update(PackageManifest packageManifest)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(packageManifest);

            this.Update(packageManifest.ToPackage());
        }
        /// <inheritdoc />
        public virtual IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            // Create Validation Results
            List <ValidationResult> results = new List <ValidationResult>();

            // Check if Null and Not Allowed
            if (!this.AllowNull && this.Count == 0)
            {
                results.Add(new ValidationResult($"{validationContext.DisplayName} in {validationContext.ObjectType} must not be empty."));
                return(results);
            }

            // Validate All Member Objects
            if (this.MemberValidator != null)
            {
                var d = Activator.CreateInstance(this.MemberValidator) as IApiStringValidator;
                foreach (T member in this)
                {
                    results.Add(d.ValidateApiString(member, validationContext));
                }
            }
            else if (this.ValidateMembers)
            {
                foreach (T member in this)
                {
                    ApiDataValidator.Validate(member, results);
                }
            }

            // Validate Min Items
            if (this.MinItems != 0)
            {
                if (this.Count < this.MinItems)
                {
                    results.Add(new ValidationResult($"{validationContext.DisplayName} in {validationContext.ObjectType} does not meet minimum item requirement: {this.MinItems}."));
                }
            }

            // Validate Max Items
            if (this.MaxItems != 0)
            {
                if (this.Count > this.MaxItems)
                {
                    results.Add(new ValidationResult($"{validationContext.DisplayName} in {validationContext.ObjectType} does not meet maximum item requirement: {this.MaxItems}."));
                }
            }

            // Validate Unique Items
            if (this.UniqueItems)
            {
                if (this.Distinct().Count() < this.Count())
                {
                    results.Add(new ValidationResult($"{validationContext.DisplayName} in {validationContext.ObjectType} does not meet unique item requirement."));
                }
            }

            // Return Results
            return(results);
        }
Example #6
0
        /// <summary>
        /// Update Locale.
        /// </summary>
        /// <param name="obj">Locale to Update.</param>
        public void UpdateLocale(Locale obj)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(obj);

            // Verify Locales is not null.
            this.AssertLocalesNotNull();

            this.Locales.Update(obj);
        }
Example #7
0
        /// <summary>
        /// Update Installer.
        /// </summary>
        /// <param name="obj">Installer to Update.</param>
        public void UpdateInstaller(Installer obj)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(obj);

            // Verify Installers is not null.
            this.AssertInstallersNotNull();

            this.Installers.Update(obj);
        }
Example #8
0
        /// <summary>
        /// Remove an Installer.
        /// </summary>
        /// <param name="installerIdentifier">Installer Identifier to remove.</param>
        public void Remove(string installerIdentifier)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(installerIdentifier);

            // Verify installer exists
            this.AssertInstallerExists(installerIdentifier);

            this.RemoveAll(installer => installer.InstallerIdentifier == installerIdentifier);
        }
        /// <summary>
        /// Update a Version.
        /// </summary>
        /// <param name="version">Version to Update.</param>
        public void UpdateVersion(Version version)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(version);

            // Assert Versions not null
            this.AssertVersionsNotNull();

            this.Versions.Update(version);
        }
        /// <summary>
        /// Get Locale.
        /// </summary>
        /// <param name="packageLocale">Locale to Get.</param>
        /// <param name="packageVersion">Package Version to get in.</param>
        /// <returns>Locales.</returns>
        public Locales GetLocale(string packageLocale, string packageVersion)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(packageVersion);

            // Assert Versions not null
            this.AssertVersionsNotNull();

            return(this.Versions.GetLocale(packageLocale, packageVersion));
        }
        /// <summary>
        /// Get Installers.
        /// </summary>
        /// <param name="installerIdentifier">Installer to Get.</param>
        /// <param name="packageVersion">Package Version to get in.</param>
        /// <returns>Installers.</returns>
        public Installers GetInstaller(string installerIdentifier, string packageVersion)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(packageVersion);

            // Assert Versions not null
            this.AssertVersionsNotNull();

            return(this.Versions.GetInstaller(installerIdentifier, packageVersion));
        }
Example #12
0
        /// <summary>
        /// Remove an Locale.
        /// </summary>
        /// <param name="packageLocale">Package Locale to remove.</param>
        public void Remove(string packageLocale)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(packageLocale);

            // Verify locale exists
            this.AssertLocaleExists(packageLocale);

            this.RemoveAll(locale => locale.PackageLocale == packageLocale);
        }
Example #13
0
        /// <summary>
        /// Add new Locale.
        /// </summary>
        /// <param name="obj">Locale to add.</param>
        public new void Add(Locale obj)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(obj);

            // Verify locale does not exist
            this.AssertLocaleDoesNotExists(obj.PackageLocale);

            base.Add(obj);
        }
Example #14
0
        /// <summary>
        /// Add new Installer.
        /// </summary>
        /// <param name="obj">Installer to add.</param>
        public new void Add(Installer obj)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(obj);

            // Verify installer does not exist
            this.AssertInstallerDoesNotExists(obj.InstallerIdentifier);

            base.Add(obj);
        }
Example #15
0
        /// <summary>
        /// Get Locale.
        /// </summary>
        /// <param name="packageLocale">Package Locale to get.</param>
        /// <param name="packageVersion">Version to get from.</param>
        /// <returns>Installers.</returns>
        public Locales GetLocale(string packageLocale, string packageVersion)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(packageVersion);

            // Verify Version exists
            this.AssertVersionExists(packageVersion);

            // Get
            return(this[this.FindIndex(0, extended => extended.PackageVersion == packageVersion)].GetLocale(packageLocale));
        }
        /// <summary>
        /// Remove an Installer.
        /// </summary>
        /// <param name="installerIdentifier">Installer to Update.</param>
        /// <param name="packageVersion">Package Version to update in.</param>
        public void RemoveInstaller(string installerIdentifier, string packageVersion)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(installerIdentifier);
            ApiDataValidator.NotNull(packageVersion);

            // Assert Versions not null
            this.AssertVersionsNotNull();

            this.Versions.RemoveInstaller(installerIdentifier, packageVersion);
        }
        /// <summary>
        /// Update an Installer.
        /// </summary>
        /// <param name="installer">Installer to Update.</param>
        /// <param name="packageVersion">Package Version to update in.</param>
        public void UpdateInstaller(Installer installer, string packageVersion)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(installer);
            ApiDataValidator.NotNull(packageVersion);

            // Assert Versions not null
            this.AssertVersionsNotNull();

            this.Versions.UpdateInstaller(installer, packageVersion);
        }
Example #18
0
        /// <summary>
        /// Update an Installer.
        /// </summary>
        /// <param name="obj">New Installer.</param>
        public void Update(Installer obj)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(obj);

            // Verify installer exists
            this.AssertInstallerExists(obj.InstallerIdentifier);

            // Update
            this[this.FindIndex(0, installer => installer.InstallerIdentifier == obj.InstallerIdentifier)].Update(obj);
        }
Example #19
0
        /// <summary>
        /// Add a version.
        /// </summary>
        /// <param name="obj">Version to Add.</param>
        public void Add(Version obj)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(obj);

            // Verify Version does not exists
            this.AssertVersionDoesNotExists(obj.PackageVersion);

            // Add
            base.Add(new VersionExtended(obj));
        }
Example #20
0
        /// <summary>
        /// Remove an Installer.
        /// </summary>
        /// <param name="packageVersion">Installer Identifier to remove.</param>
        public void Remove(string packageVersion)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(packageVersion);

            // Verify Version exists
            this.AssertVersionExists(packageVersion);

            // Remove
            this.RemoveAll(versionExtended => versionExtended.PackageVersion == packageVersion);
        }
Example #21
0
        /// <summary>
        /// Update a Version.
        /// </summary>
        /// <param name="obj">The new Version.</param>
        public void Update(VersionExtended obj)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(obj);

            // Verify Version exists
            this.AssertVersionExists(obj.PackageVersion);

            // Update
            this[this.FindIndex(0, version => version.PackageVersion == obj.PackageVersion)].Update(obj);
        }
        /// <summary>
        /// Remove an Locale.
        /// </summary>
        /// <param name="packageLocale">Locale to Update.</param>
        /// <param name="packageVersion">Package Version to update in.</param>
        public void RemoveLocale(string packageLocale, string packageVersion)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(packageLocale);
            ApiDataValidator.NotNull(packageVersion);

            // Assert Versions not null
            this.AssertVersionsNotNull();

            this.Versions.RemoveLocale(packageLocale, packageVersion);
        }
Example #23
0
        /// <summary>
        /// Update an Locale.
        /// </summary>
        /// <param name="obj">New Locale.</param>
        public void Update(Locale obj)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(obj);

            // Verify locale exists
            this.AssertLocaleExists(obj.PackageLocale);

            // Update
            this[this.FindIndex(0, installer => installer.PackageLocale == obj.PackageLocale)].Update(obj);
        }
Example #24
0
        /// <summary>
        /// Get Installer.
        /// </summary>
        /// <param name="installerIdentifier">Installer Identity to get.</param>
        /// <param name="packageVersion">Version to get from.</param>
        /// <returns>Installers.</returns>
        public Installers GetInstaller(string installerIdentifier, string packageVersion)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(packageVersion);

            // Verify Version exists
            this.AssertVersionExists(packageVersion);

            // Get
            return(this[this.FindIndex(0, extended => extended.PackageVersion == packageVersion)].GetInstaller(installerIdentifier));
        }
Example #25
0
        /// <summary>
        /// Remove an locale.
        /// </summary>
        /// <param name="packageLocale">Package Locale to remove.</param>
        /// <param name="packageVersion">Version to remove from.</param>
        public void RemoveLocale(string packageLocale, string packageVersion)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(packageLocale);
            ApiDataValidator.NotNull(packageVersion);

            // Verify Version exists
            this.AssertVersionExists(packageVersion);

            // Remove
            this[this.FindIndex(0, extended => extended.PackageVersion == packageVersion)].RemoveLocale(packageLocale);
        }
Example #26
0
        /// <summary>
        /// Update an Locale.
        /// </summary>
        /// <param name="obj">Locale to Update.</param>
        /// <param name="packageVersion">Version to Update in.</param>
        public void UpdateLocale(Locale obj, string packageVersion)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(obj);
            ApiDataValidator.NotNull(packageVersion);

            // Verify Version exists
            this.AssertVersionExists(packageVersion);

            // Update
            this[this.FindIndex(0, extended => extended.PackageVersion == packageVersion)].UpdateLocale(obj);
        }
Example #27
0
        /// <summary>
        /// Remove an installer.
        /// </summary>
        /// <param name="installerIdentifier">Installer Identity to remove.</param>
        /// <param name="packageVersion">Version to remove from.</param>
        public void RemoveInstaller(string installerIdentifier, string packageVersion)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(installerIdentifier);
            ApiDataValidator.NotNull(packageVersion);

            // Verify Version exists
            this.AssertVersionExists(packageVersion);

            // Remove
            this[this.FindIndex(0, extended => extended.PackageVersion == packageVersion)].RemoveInstaller(installerIdentifier);
        }
Example #28
0
        /// <summary>
        /// Add Locale.
        /// </summary>
        /// <param name="obj">Locale to Add.</param>
        /// <param name="packageVersion">Version to add to.</param>
        public void AddLocale(Locale obj, string packageVersion)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(obj);
            ApiDataValidator.NotNull(packageVersion);

            // Verify Version exists
            this.AssertVersionExists(packageVersion);

            // Add
            this[this.FindIndex(0, version => version.PackageVersion == packageVersion)].AddLocale(obj);
        }
        /// <summary>
        /// Add Version.
        /// </summary>
        /// <param name="version">Version to add.</param>
        public void AddVersion(Version version)
        {
            // Verify Parameters not null
            ApiDataValidator.NotNull(version);

            if (this.Versions == null)
            {
                this.Versions = new VersionsExtended();
            }

            this.Versions.Add(version);
        }
Example #30
0
        /// <inheritdoc />
        public virtual IEnumerable <ValidationResult> Validate(ValidationContext validationContext)
        {
            // Create Validation Results
            var results = new List <ValidationResult>();

            if (this.Tags != null)
            {
                ApiDataValidator.Validate(this.Tags, results);
            }

            // Return Results
            return(results);
        }