diff --git a/src/Orchard.Web/Modules/Orchard.Modules/Packaging/Services/PackageManager.cs b/src/Orchard.Web/Modules/Orchard.Modules/Packaging/Services/PackageManager.cs
index bfd19a40a..69734f582 100644
--- a/src/Orchard.Web/Modules/Orchard.Modules/Packaging/Services/PackageManager.cs
+++ b/src/Orchard.Web/Modules/Orchard.Modules/Packaging/Services/PackageManager.cs
@@ -24,6 +24,7 @@ namespace Orchard.Modules.Packaging.Services {
void Install(PackageData packageData);
}
+ [OrchardFeature("Orchard.Modules.Packaging")]
public class PackageManager : IPackageManager {
private readonly IExtensionManager _extensionManager;
private readonly IPackageSourceManager _packageSourceManager;
diff --git a/src/Tools/PackageIndexReferenceImplementation/Controllers/Artifacts/StreamResult.cs b/src/Tools/PackageIndexReferenceImplementation/Controllers/Artifacts/StreamResult.cs
new file mode 100644
index 000000000..9eaeea23c
--- /dev/null
+++ b/src/Tools/PackageIndexReferenceImplementation/Controllers/Artifacts/StreamResult.cs
@@ -0,0 +1,19 @@
+using System.IO;
+using System.Web.Mvc;
+
+namespace PackageIndexReferenceImplementation.Controllers {
+ public class StreamResult : ActionResult {
+ public string ContentType { get; set; }
+ public Stream Stream { get; set; }
+
+ public StreamResult(string contentType, Stream stream) {
+ ContentType = contentType;
+ Stream = stream;
+ }
+
+ public override void ExecuteResult(ControllerContext context) {
+ context.HttpContext.Response.ContentType = ContentType;
+ Stream.CopyTo(context.HttpContext.Response.OutputStream);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Tools/PackageIndexReferenceImplementation/Controllers/AtomController.cs b/src/Tools/PackageIndexReferenceImplementation/Controllers/AtomController.cs
index babf1211d..89840d45d 100644
--- a/src/Tools/PackageIndexReferenceImplementation/Controllers/AtomController.cs
+++ b/src/Tools/PackageIndexReferenceImplementation/Controllers/AtomController.cs
@@ -50,6 +50,16 @@ namespace PackageIndexReferenceImplementation.Controllers {
}
+ var mediaIdentifier = UpdateSyndicationItem(packageProperties, item);
+
+
+ _mediaStorage.StoreMedia(mediaIdentifier + ":application/x-package", Request.InputStream);
+ _feedStorage.StoreFeed(feed);
+
+ return new AtomItemResult("201 Created", null, item);
+ }
+
+ private string UpdateSyndicationItem(PackageProperties packageProperties, SyndicationItem item) {
if (!string.IsNullOrEmpty(packageProperties.Category)) {
item.Authors.Clear();
//parse package.PackageProperties.Creator into email-style authors
@@ -82,12 +92,7 @@ namespace PackageIndexReferenceImplementation.Controllers {
var mediaUrl = Url.Action("Resource", "Media", new RouteValueDictionary { { "Id", mediaIdentifier }, { "ContentType", "application/x-package" } });
item.Links.Clear();
item.Links.Add(new SyndicationLink(new Uri(HostBaseUri(), new Uri(mediaUrl, UriKind.Relative))));
-
- Request.InputStream.Seek(0, SeekOrigin.Begin);
- _mediaStorage.StoreMedia(mediaIdentifier+":application/x-package", Request.InputStream);
- _feedStorage.StoreFeed(feed);
-
- return new AtomItemResult("201 Created", null, item);
+ return mediaIdentifier;
}
private Uri HostBaseUri() {
diff --git a/src/Tools/PackageIndexReferenceImplementation/Controllers/MediaController.cs b/src/Tools/PackageIndexReferenceImplementation/Controllers/MediaController.cs
index 612d639fe..17aaefe9e 100644
--- a/src/Tools/PackageIndexReferenceImplementation/Controllers/MediaController.cs
+++ b/src/Tools/PackageIndexReferenceImplementation/Controllers/MediaController.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
@@ -21,19 +20,4 @@ namespace PackageIndexReferenceImplementation.Controllers
return new StreamResult(contentType, _mediaStorage.GetMedia(id + ":" + contentType));
}
}
-
- public class StreamResult : ActionResult {
- public string ContentType { get; set; }
- public Stream Stream { get; set; }
-
- public StreamResult(string contentType, Stream stream) {
- ContentType = contentType;
- Stream = stream;
- }
-
- public override void ExecuteResult(ControllerContext context) {
- context.HttpContext.Response.ContentType = ContentType;
- Stream.CopyTo(context.HttpContext.Response.OutputStream);
- }
- }
}
diff --git a/src/Tools/PackageIndexReferenceImplementation/PackageIndexReferenceImplementation.csproj b/src/Tools/PackageIndexReferenceImplementation/PackageIndexReferenceImplementation.csproj
index 9b877034e..37fc9973c 100644
--- a/src/Tools/PackageIndexReferenceImplementation/PackageIndexReferenceImplementation.csproj
+++ b/src/Tools/PackageIndexReferenceImplementation/PackageIndexReferenceImplementation.csproj
@@ -75,6 +75,7 @@
+
Global.asax
diff --git a/src/Tools/PackageIndexReferenceImplementation/Services/MediaStorage.cs b/src/Tools/PackageIndexReferenceImplementation/Services/MediaStorage.cs
index 1728c3db4..87d356758 100644
--- a/src/Tools/PackageIndexReferenceImplementation/Services/MediaStorage.cs
+++ b/src/Tools/PackageIndexReferenceImplementation/Services/MediaStorage.cs
@@ -11,6 +11,7 @@ namespace PackageIndexReferenceImplementation.Services {
var safeIdentifier = GetSafeIdentifier(identifier);
var filePath = HostingEnvironment.MapPath("~/App_Data/Media/" + safeIdentifier);
using (var destination = new FileStream(filePath, FileMode.Create, FileAccess.Write)) {
+ data.Seek(0, SeekOrigin.Begin);
data.CopyTo(destination);
}
}