webdav portal create new ability added
This commit is contained in:
parent
6b1c1660fe
commit
50e902b94d
26 changed files with 473 additions and 38 deletions
|
@ -2,8 +2,10 @@
|
|||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.Caching;
|
||||
using System.Web;
|
||||
using Cobalt;
|
||||
using WebsitePanel.WebDav.Core.Client;
|
||||
using WebsitePanel.WebDav.Core.Config;
|
||||
|
@ -72,9 +74,20 @@ namespace WebsitePanel.WebDav.Core.Owa
|
|||
|
||||
var token = _tokenManager.GetToken(accessTokenId);
|
||||
|
||||
var fileBytes = _webDavManager.GetFileBytes(token.FilePath);
|
||||
Atom atom;
|
||||
|
||||
var atom = new AtomFromByteArray(fileBytes);
|
||||
if (_webDavManager.FileExist(token.FilePath))
|
||||
{
|
||||
var fileBytes = _webDavManager.GetFileBytes(token.FilePath);
|
||||
|
||||
atom = new AtomFromByteArray(fileBytes);
|
||||
}
|
||||
else
|
||||
{
|
||||
var filePath = HttpContext.Current.Server.MapPath(WebDavAppConfigManager.Instance.OfficeOnline.NewFilePath + Path.GetExtension(token.FilePath));
|
||||
|
||||
atom = new AtomFromByteArray(File.ReadAllBytes(filePath));
|
||||
}
|
||||
|
||||
Cobalt.Metrics o1;
|
||||
cobaltFile.GetCobaltFilePartition(FilePartitionId.Content).SetStream(RootId.Default.Value, atom, out o1);
|
||||
|
|
|
@ -6,6 +6,8 @@ using System.Runtime.Serialization.Json;
|
|||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Mvc;
|
||||
using Cobalt;
|
||||
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
|
||||
using WebsitePanel.WebDav.Core.Client;
|
||||
using WebsitePanel.WebDav.Core.Config;
|
||||
using WebsitePanel.WebDav.Core.Entities.Owa;
|
||||
|
@ -22,27 +24,30 @@ namespace WebsitePanel.WebDav.Core.Owa
|
|||
private readonly IWebDavManager _webDavManager;
|
||||
private readonly IAccessTokenManager _tokenManager;
|
||||
private readonly IWebDavAuthorizationService _webDavAuthorizationService;
|
||||
private readonly IWopiFileManager _fileManager;
|
||||
|
||||
public WopiServer(IWebDavManager webDavManager, IAccessTokenManager tokenManager, IWebDavAuthorizationService webDavAuthorizationService)
|
||||
|
||||
public WopiServer(IWebDavManager webDavManager, IAccessTokenManager tokenManager, IWebDavAuthorizationService webDavAuthorizationService, IWopiFileManager fileManager)
|
||||
{
|
||||
_webDavManager = webDavManager;
|
||||
_tokenManager = tokenManager;
|
||||
_webDavAuthorizationService = webDavAuthorizationService;
|
||||
_fileManager = fileManager;
|
||||
}
|
||||
|
||||
public CheckFileInfo GetCheckFileInfo(string path)
|
||||
public CheckFileInfo GetCheckFileInfo(WebDavAccessToken token)
|
||||
{
|
||||
var resource = _webDavManager.GetResource(path);
|
||||
var resource = _webDavManager.GetResource(token.FilePath);
|
||||
|
||||
var permissions = _webDavAuthorizationService.GetPermissions(WspContext.User, path);
|
||||
var permissions = _webDavAuthorizationService.GetPermissions(WspContext.User, token.FilePath);
|
||||
|
||||
var readOnly = permissions.HasFlag(WebDavPermissions.Write) == false || permissions.HasFlag(WebDavPermissions.OwaEdit) == false;
|
||||
|
||||
var cFileInfo = new CheckFileInfo
|
||||
{
|
||||
BaseFileName = resource.DisplayName.Split(new []{'/'},StringSplitOptions.RemoveEmptyEntries).LastOrDefault(),
|
||||
BaseFileName = resource == null ? token.FilePath.Split('/').Last() : resource.DisplayName.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault(),
|
||||
OwnerId = WspContext.User.Login,
|
||||
Size = resource.ContentLength,
|
||||
Size = resource == null ? 0 : resource.ContentLength,
|
||||
Version = DateTime.Now.ToString("s"),
|
||||
SupportsCoauth = true,
|
||||
SupportsCobalt = true,
|
||||
|
@ -53,17 +58,34 @@ namespace WebsitePanel.WebDav.Core.Owa
|
|||
SupportsUpdate = true,
|
||||
UserCanWrite = !readOnly,
|
||||
ReadOnly = readOnly,
|
||||
RestrictedWebViewOnly = false
|
||||
RestrictedWebViewOnly = false,
|
||||
CloseButtonClosesWindow = true
|
||||
};
|
||||
|
||||
if (resource != null)
|
||||
{
|
||||
cFileInfo.ClientUrl = _webDavManager.GetFileUrl(token.FilePath);
|
||||
}
|
||||
|
||||
return cFileInfo;
|
||||
}
|
||||
|
||||
public FileResult GetFile(string path)
|
||||
public byte[] GetFileBytes(int accessTokenId)
|
||||
{
|
||||
var fileBytes = _webDavManager.GetFileBytes(path);
|
||||
var token = _tokenManager.GetToken(accessTokenId);
|
||||
|
||||
return new FileContentResult(fileBytes, MediaTypeNames.Application.Octet);
|
||||
if (_webDavManager.FileExist(token.FilePath))
|
||||
{
|
||||
return _webDavManager.GetFileBytes(token.FilePath);
|
||||
}
|
||||
|
||||
var cobaltFile = _fileManager.Get(token.FilePath) ?? _fileManager.Create(accessTokenId);
|
||||
|
||||
var stream = new MemoryStream();
|
||||
|
||||
new GenericFda(cobaltFile.CobaltEndpoint, null).GetContentStream().CopyTo(stream);
|
||||
|
||||
return stream.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue