/// <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}"); }
/// <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"; }
/// <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); }
/// <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; }