/// <summary>
 /// Set applet headers
 /// </summary>
 private void SetAppletHeaders(AppletInfo package)
 {
     RestOperationContext.Current.OutgoingResponse.SetETag(package.Version);
     RestOperationContext.Current.OutgoingResponse.Headers.Add("X-SanteDB-PakID", package.Id);
     if (package.Hash != null)
     {
         RestOperationContext.Current.OutgoingResponse.AppendHeader("X-SanteDB-Hash", Convert.ToBase64String(package.Hash));
     }
     RestOperationContext.Current.OutgoingResponse.AppendHeader("Content-Type", "application/octet-stream");
     RestOperationContext.Current.OutgoingResponse.ContentType = "application/octet-stream";
     RestOperationContext.Current.OutgoingResponse.AppendHeader("Content-Disposition", $"attachment; filename=\"{package.Id}.pak.gz\"");
     RestOperationContext.Current.OutgoingResponse.AppendHeader("Location", $"/ami/Applet/{package.Id}");
 }
Пример #2
0
 /// <summary>
 /// Set applet headers
 /// </summary>
 private void SetAppletHeaders(AppletInfo package)
 {
     WebOperationContext.Current.OutgoingResponse.ETag = package.Version;
     WebOperationContext.Current.OutgoingResponse.Headers.Add("X-OpenIZ-PakID", package.Id);
     if (package.Hash != null)
     {
         WebOperationContext.Current.OutgoingResponse.Headers.Add("X-OpenIZ-Hash", Convert.ToBase64String(package.Hash));
     }
     WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Type", "application/octet-stream");
     WebOperationContext.Current.OutgoingResponse.ContentType = "application/octet-stream";
     WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Disposition", $"attachment; filename=\"{package.Id}.pak.gz\"");
     WebOperationContext.Current.OutgoingResponse.Location = $"/ami/applet/{package.Id}/pak";
 }
Пример #3
0
        /// <summary>
        /// Verify dependencies are met for the specified applet
        /// </summary>
        public bool VerifyDependencies(AppletInfo applet)
        {
            bool verified = true;

            foreach (var itm in applet.Dependencies)
            {
                var depItm = this.m_appletManifest.FirstOrDefault(o => o.Info.Id == itm.Id && (o.Info.PublicKeyToken == itm.PublicKeyToken || String.IsNullOrEmpty(itm.PublicKeyToken)));
                if (depItm == null)
                {
                    var asm = System.Reflection.Assembly.Load(new AssemblyName($"{itm.Id}, Version={itm.Version}"));
                    verified &= asm != null;
                }
                else
                {
                    verified &= depItm != null && new Version(depItm?.Info.Version) >= new Version(itm.Version);
                }
            }
            return(verified);
        }
Пример #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AppletManifestInfo"/> class
 /// with a specific applet manifest instance.
 /// </summary>
 /// <param name="info">The applet manifest metadata instance.</param>
 /// <param name="publisher">The publisher of the applet</param>
 public AppletManifestInfo(AppletInfo info, X509Certificate2Info publisher)
 {
     this.AppletInfo    = info;
     this.PublisherData = publisher;
 }