Updates JS to include the current umbraco version when requesting a package's details, updates the c# to use a new endpoint on OUR to ensure that the correct file is downloaded based on the umb version passed in.
This commit is contained in:
@@ -38,8 +38,7 @@ namespace Umbraco.Core.Configuration.UmbracoSettings
|
||||
get
|
||||
{
|
||||
var prop = Properties["webserviceurl"];
|
||||
var repoUrl = this[prop] as ConfigurationElement;
|
||||
return (repoUrl != null && repoUrl.ElementInformation.IsPresent);
|
||||
return (string) prop.DefaultValue != (string) this[prop];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ function ourPackageRepositoryResource($q, $http, umbDataFormatter, umbRequestHel
|
||||
getDetails: function (packageId) {
|
||||
|
||||
return umbRequestHelper.resourcePromise(
|
||||
$http.get(baseurl + "/" + packageId),
|
||||
$http.get(baseurl + "/" + packageId + "?version=" + Umbraco.Sys.ServerVariables.application.version),
|
||||
'Failed to get package details');
|
||||
},
|
||||
|
||||
|
||||
@@ -474,7 +474,7 @@ namespace Umbraco.Web.Editors
|
||||
//our repo guid
|
||||
using (var our = Repository.getByGuid("65194810-1f85-11dd-bd0b-0800200c9a66"))
|
||||
{
|
||||
path = our.fetch(packageGuid, Security.CurrentUser.Id);
|
||||
path = our.GetPackageFile(packageGuid, Security.CurrentUser.Id, UmbracoVersion.Current);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -141,12 +141,12 @@ namespace umbraco.cms.businesslogic.packager.repositories
|
||||
return repository;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//shortcut method to download pack from repo and place it on the server...
|
||||
public string fetch(string packageGuid)
|
||||
{
|
||||
|
||||
return fetch(packageGuid, string.Empty);
|
||||
|
||||
}
|
||||
|
||||
public string fetch(string packageGuid, int userId)
|
||||
@@ -158,6 +158,40 @@ namespace umbraco.cms.businesslogic.packager.repositories
|
||||
return fetch(packageGuid);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Used to get the correct package file from the repo for the current umbraco version
|
||||
/// </summary>
|
||||
/// <param name="packageGuid"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="currentUmbracoVersion"></param>
|
||||
/// <returns></returns>
|
||||
public string GetPackageFile(string packageGuid, int userId, System.Version currentUmbracoVersion)
|
||||
{
|
||||
// log
|
||||
Audit.Add(AuditTypes.PackagerInstall,
|
||||
string.Format("Package {0} fetched from {1}", packageGuid, this.Guid),
|
||||
userId, -1);
|
||||
|
||||
var fileByteArray = Webservice.GetPackageFile(packageGuid, currentUmbracoVersion.ToString(3));
|
||||
|
||||
//successfull
|
||||
if (fileByteArray.Length > 0)
|
||||
{
|
||||
// Check for package directory
|
||||
if (Directory.Exists(IOHelper.MapPath(Settings.PackagerRoot)) == false)
|
||||
Directory.CreateDirectory(IOHelper.MapPath(Settings.PackagerRoot));
|
||||
|
||||
using (var fs1 = new FileStream(IOHelper.MapPath(Settings.PackagerRoot + Path.DirectorySeparatorChar + packageGuid + ".umb"), FileMode.Create))
|
||||
{
|
||||
fs1.Write(fileByteArray, 0, fileByteArray.Length);
|
||||
fs1.Close();
|
||||
return "packages\\" + packageGuid + ".umb";
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public bool HasConnection()
|
||||
{
|
||||
|
||||
@@ -199,22 +233,37 @@ namespace umbraco.cms.businesslogic.packager.repositories
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// This goes and fetches the Byte array for the package from OUR, but it's pretty strange
|
||||
/// </summary>
|
||||
/// <param name="packageGuid">
|
||||
/// The package ID for the package file to be returned
|
||||
/// </param>
|
||||
/// <param name="key">
|
||||
/// This is a strange Umbraco version parameter - but it's not really an umbraco version, it's a special/odd version format like Version41
|
||||
/// but it's actually not used for the 7.5+ package installs so it's obsolete/unused.
|
||||
/// </param>
|
||||
/// <returns></returns>
|
||||
public string fetch(string packageGuid, string key)
|
||||
{
|
||||
|
||||
byte[] fileByteArray = new byte[0];
|
||||
|
||||
if (key == string.Empty)
|
||||
{
|
||||
{
|
||||
//SD: this is odd, not sure why it returns a different package depending on the legacy xml schema but I'll leave it for now
|
||||
if (UmbracoConfig.For.UmbracoSettings().Content.UseLegacyXmlSchema)
|
||||
fileByteArray = this.Webservice.fetchPackage(packageGuid);
|
||||
fileByteArray = Webservice.fetchPackage(packageGuid);
|
||||
else
|
||||
fileByteArray = this.Webservice.fetchPackageByVersion(packageGuid, Version.Version41);
|
||||
{
|
||||
fileByteArray = Webservice.fetchPackageByVersion(packageGuid, Version.Version41);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fileByteArray = this.Webservice.fetchProtectedPackage(packageGuid, key);
|
||||
fileByteArray = Webservice.fetchProtectedPackage(packageGuid, key);
|
||||
}
|
||||
|
||||
//successfull
|
||||
|
||||
@@ -36,6 +36,8 @@ namespace umbraco.cms.businesslogic.packager.repositories
|
||||
|
||||
private System.Threading.SendOrPostCallback authenticateOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetPackageFileOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback fetchPackageByVersionOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback fetchPackageOperationCompleted;
|
||||
@@ -83,6 +85,9 @@ namespace umbraco.cms.businesslogic.packager.repositories
|
||||
/// <remarks/>
|
||||
public event authenticateCompletedEventHandler authenticateCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event GetPackageFileCompletedEventHandler GetPackageFileCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event fetchPackageByVersionCompletedEventHandler fetchPackageByVersionCompleted;
|
||||
|
||||
@@ -533,6 +538,76 @@ namespace umbraco.cms.businesslogic.packager.repositories
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://packages.umbraco.org/webservices/GetPackageFile", RequestNamespace = "http://packages.umbraco.org/webservices/", ResponseNamespace = "http://packages.umbraco.org/webservices/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
[return: System.Xml.Serialization.XmlElementAttribute(DataType = "base64Binary")]
|
||||
public byte[] GetPackageFile(string packageGuid, string umbracoVersion)
|
||||
{
|
||||
object[] results = this.Invoke("GetPackageFile", new object[] {
|
||||
packageGuid,
|
||||
umbracoVersion});
|
||||
return ((byte[])(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginfetchPackageByVersion(string packageGuid, string umbracoVersion, System.AsyncCallback callback, object asyncState)
|
||||
{
|
||||
return this.BeginInvoke("GetPackageFile", new object[] {
|
||||
packageGuid,
|
||||
umbracoVersion}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public byte[] EndGetPackageFile(System.IAsyncResult asyncResult)
|
||||
{
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((byte[])(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetPackageFileAsync(string packageGuid, string umbracoVersion)
|
||||
{
|
||||
this.GetPackageFileAsync(packageGuid, umbracoVersion, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetPackageFileAsync(string packageGuid, string umbracoVersion, object userState)
|
||||
{
|
||||
if ((this.GetPackageFileOperationCompleted == null))
|
||||
{
|
||||
this.GetPackageFileOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetPackageFileOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("GetPackageFile", new object[] {
|
||||
packageGuid,
|
||||
umbracoVersion}, this.GetPackageFileOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnGetPackageFileOperationCompleted(object arg)
|
||||
{
|
||||
if ((this.GetPackageFileCompleted != null))
|
||||
{
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.GetPackageFileCompleted(this, new GetPackageFileCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://packages.umbraco.org/webservices/fetchPackageByVersion", RequestNamespace = "http://packages.umbraco.org/webservices/", ResponseNamespace = "http://packages.umbraco.org/webservices/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
[return: System.Xml.Serialization.XmlElementAttribute(DataType = "base64Binary")]
|
||||
@@ -1382,7 +1457,9 @@ namespace umbraco.cms.businesslogic.packager.repositories
|
||||
/// <remarks/>
|
||||
Version4,
|
||||
|
||||
/// <remarks/>
|
||||
/// <summary>
|
||||
/// This is apparently the version number we pass in for all installs
|
||||
/// </summary>
|
||||
Version41,
|
||||
|
||||
/// <remarks/>
|
||||
@@ -1682,9 +1759,40 @@ namespace umbraco.cms.businesslogic.packager.repositories
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")]
|
||||
public delegate void fetchPackageByVersionCompletedEventHandler(object sender, fetchPackageByVersionCompletedEventArgs e);
|
||||
public delegate void GetPackageFileCompletedEventHandler(object sender, GetPackageFileCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class GetPackageFileCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
|
||||
{
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal GetPackageFileCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState)
|
||||
{
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public byte[] Result
|
||||
{
|
||||
get
|
||||
{
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((byte[])(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")]
|
||||
public delegate void fetchPackageByVersionCompletedEventHandler(object sender, fetchPackageByVersionCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")]
|
||||
|
||||
Reference in New Issue
Block a user