Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions samples/GroupDocs.Editor.UI.RestFulApi/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddEditorLicense<Base64FileLicenseService>(builder.Configuration);
builder.Services.AddEditorLicense<LocalFileLicenseService>(builder.Configuration);
builder.Services.AddEditorControllers();
builder.Services.AddEditorSwagger();
builder.Services.AddEditor<AwsS3Storage>(builder.Configuration);
builder.Services.AddEditor<LocalStorage>(builder.Configuration);
builder.Services.AddCors(p => p.AddPolicy("corsApp", policy =>
{
policy.WithOrigins("*").AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"LocalStorageOptions": {
"RootFolder": "file2",
"BaseUrl": "https://localhost:7246/file/"
"BaseUrl": "/file/"
},
"AWS": {
"Profile": "s3-demo",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using GroupDocs.Editor.Options;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;

namespace GroupDocs.Editor.UI.Api.Controllers.RequestModels.WordProcessing;
Expand All @@ -13,7 +12,7 @@ public class WordProcessingToPdfDownloadRequest
/// The document code.
/// </value>
[Required]
[FromQuery] public Guid DocumentCode { get; set; }
public Guid DocumentCode { get; set; }

/// <summary>
/// Gets or sets the save options.
Expand Down
12 changes: 6 additions & 6 deletions src/GroupDocs.Editor.UI.Api/GroupDocs.Editor.UI.Api.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PackageId>GroupDocs.Editor.UI.Api</PackageId>
<Version>8.0.3</Version>
<Version>8.0.5</Version>
<Description>GroupDocs.Editor.UI.Api containing base API features required by GroupDocs.Editor.UI see https://github.com/groupdocs-editor/GroupDocs.Editor-for-.NET-UI for more details.</Description>
<PackageTags>GroupDocs;Editor;UI;API;ASP.NET Core;</PackageTags>
<Company>GroupDocs</Company>
Expand All @@ -22,11 +22,11 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="AutoMapper" Version="13.0.1" />
<PackageReference Include="AWSSDK.Extensions.NETCore.Setup" Version="4.0.0" />
<PackageReference Include="AWSSDK.S3" Version="4.0.0.4" />
<PackageReference Include="Azure.Storage.Blobs" Version="12.24.0" />
<PackageReference Include="GroupDocs.Editor" Version="25.5.0" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.1" />
<PackageReference Include="AWSSDK.Extensions.NETCore.Setup" Version="4.0.2" />
<PackageReference Include="AWSSDK.S3" Version="4.0.4.1" />
<PackageReference Include="Azure.Storage.Blobs" Version="12.24.1" />
<PackageReference Include="GroupDocs.Editor" Version="25.7.0" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="9.0.6" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
<PackageReference Include="Microsoft.FeatureManagement.AspNetCore" Version="4.0.0" />
Expand Down
24 changes: 12 additions & 12 deletions src/GroupDocs.Editor.UI.Api/Services/Implementation/LocalStorage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,12 @@ public async Task<IEnumerable<StorageResponse<StorageFile>>> SaveFile(IEnumerabl
await using FileStream fileStream = File.Open(Path.Combine(folder, fileContent.FileName), FileMode.OpenOrCreate);
fileContent.ResourceStream.Seek(0, SeekOrigin.Begin);
await fileContent.ResourceStream.CopyToAsync(fileStream);
UriBuilder uriBuilder = GetFullUri();
uriBuilder.Path += prefixPath.AppendKey(HttpUtility.UrlEncode(fileContent.FileName)).ToUriPath();
string uriBuilder = GetProtocolRelativeUrl();
uriBuilder += prefixPath.AppendKey(HttpUtility.UrlEncode(fileContent.FileName)).ToUriPath();
result.Add(StorageResponse<StorageFile>.CreateSuccess(new StorageFile
{
DocumentCode = prefixPath.DocumentCode,
FileLink = uriBuilder.Uri.ToString(),
FileLink = uriBuilder,
FileName = fileContent.FileName,
ResourceType = fileContent.ResourceType
}));
Expand Down Expand Up @@ -104,21 +104,21 @@ public async Task<StorageResponse<string>> GetFileText(PathBuilder path)
return StorageResponse<string>.CreateSuccess(fileText);
}

private UriBuilder GetFullUri()
private string GetProtocolRelativeUrl()
{
HttpRequest? request = _httpContextAccessor.HttpContext?.Request;

if (request == null)
throw new InvalidOperationException("No active HTTP request.");

UriBuilder uriBuilder = new UriBuilder
{
Scheme = request.Scheme,
Host = request.Host.Host,
Port = request.Host.Port ?? (request.Scheme == "https" ? 443 : 80),
Path = _options.BaseUrl
};
string host = request.Host.Host;
int? port = request.Host.Port;

// Include port only if it's non-standard (i.e., not 80 or 443)
string portPart = port.HasValue && port != 80 && port != 443 ? $":{port}" : "";

string path = _options.BaseUrl.TrimStart('/') ?? "";

return uriBuilder;
return $"//{host}{portPart}/{path}";
}
}