Browse Source

Download url in backup dto.

pull/382/head
Sebastian Stehle 7 years ago
parent
commit
73002fa38b
  1. 1
      src/Squidex.Web/ResourceLink.cs
  2. 2
      src/Squidex/Areas/Api/Controllers/Backups/Models/BackupJobDto.cs
  3. 2
      src/Squidex/Areas/Api/Controllers/Backups/Models/RestoreRequestDto.cs
  4. 2
      src/Squidex/Areas/Api/Controllers/Backups/RestoreController.cs
  5. 2
      src/Squidex/Areas/Api/Controllers/Rules/Models/RuleActionProcessor.cs
  6. 2
      src/Squidex/Areas/Api/Controllers/Schemas/SchemasController.cs
  7. 2
      src/Squidex/Areas/IdentityServer/Config/LazyClientStore.cs
  8. 2
      src/Squidex/app/features/settings/module.ts
  9. 2
      src/Squidex/app/features/settings/pages/backups/backups-page.component.html
  10. 2
      src/Squidex/app/features/settings/pages/backups/backups-page.component.ts
  11. 23
      src/Squidex/app/features/settings/pages/backups/pipes.ts
  12. 4
      src/Squidex/app/shared/services/backups.service.ts

1
src/Squidex.Web/ResourceLink.cs

@ -19,7 +19,6 @@ namespace Squidex.Web
[Display(Description = "The link method.")] [Display(Description = "The link method.")]
public string Method { get; set; } public string Method { get; set; }
[Required]
[Display(Description = "Additional data about the link.")] [Display(Description = "Additional data about the link.")]
public string Metadata { get; set; } public string Metadata { get; set; }
} }

2
src/Squidex/Areas/Api/Controllers/Backups/Models/BackupJobDto.cs

@ -62,6 +62,8 @@ namespace Squidex.Areas.Api.Controllers.Backups.Models
AddDeleteLink("delete", controller.Url<BackupsController>(x => nameof(x.DeleteBackup), values)); AddDeleteLink("delete", controller.Url<BackupsController>(x => nameof(x.DeleteBackup), values));
} }
AddGetLink("download", controller.Url<BackupContentController>(x => nameof(x.GetBackupContent), values));
return this; return this;
} }
} }

2
src/Squidex/Areas/Api/Controllers/Backups/Models/RestoreRequest.cs → src/Squidex/Areas/Api/Controllers/Backups/Models/RestoreRequestDto.cs

@ -10,7 +10,7 @@ using System.ComponentModel.DataAnnotations;
namespace Squidex.Areas.Api.Controllers.Backups.Models namespace Squidex.Areas.Api.Controllers.Backups.Models
{ {
public sealed class RestoreRequest public sealed class RestoreRequestDto
{ {
/// <summary> /// <summary>
/// The name of the app. /// The name of the app.

2
src/Squidex/Areas/Api/Controllers/Backups/RestoreController.cs

@ -68,7 +68,7 @@ namespace Squidex.Areas.Api.Controllers.Backups
[HttpPost] [HttpPost]
[Route("apps/restore/")] [Route("apps/restore/")]
[ApiPermission(Permissions.AdminRestore)] [ApiPermission(Permissions.AdminRestore)]
public async Task<IActionResult> PostRestore([FromBody] RestoreRequest request) public async Task<IActionResult> PostRestore([FromBody] RestoreRequestDto request)
{ {
var restoreGrain = grainFactory.GetGrain<IRestoreGrain>(SingleGrain.Id); var restoreGrain = grainFactory.GetGrain<IRestoreGrain>(SingleGrain.Id);

2
src/Squidex/Areas/Api/Controllers/Rules/Models/RuleActionProcessor.cs

@ -55,7 +55,7 @@ namespace Squidex.Areas.Api.Controllers.Rules.Models
if (oldName != null) if (oldName != null)
{ {
context.Document.Definitions.Remove(oldName); context.Document.Definitions.Remove(oldName);
context.Document.Definitions.Add(action.Key, derivedSchema); context.Document.Definitions.Add($"{action.Key}RuleActionDto", derivedSchema);
} }
} }

2
src/Squidex/Areas/Api/Controllers/Schemas/SchemasController.cs

@ -114,7 +114,7 @@ namespace Squidex.Areas.Api.Controllers.Schemas
/// </returns> /// </returns>
[HttpPost] [HttpPost]
[Route("apps/{app}/schemas/")] [Route("apps/{app}/schemas/")]
[ProducesResponseType(typeof(SchemaDetailsDto), 200)] [ProducesResponseType(typeof(SchemaDetailsDto), 201)]
[ApiPermission(Permissions.AppSchemasCreate)] [ApiPermission(Permissions.AppSchemasCreate)]
[ApiCosts(1)] [ApiCosts(1)]
public async Task<IActionResult> PostSchema(string app, [FromBody] CreateSchemaDto request) public async Task<IActionResult> PostSchema(string app, [FromBody] CreateSchemaDto request)

2
src/Squidex/Areas/IdentityServer/Config/LazyClientStore.cs

@ -176,7 +176,7 @@ namespace Squidex.Areas.IdentityServer.Config
}, },
Claims = new List<Claim> Claims = new List<Claim>
{ {
new Claim(SquidexClaimTypes.Permissions, Permissions.Admin) new Claim(SquidexClaimTypes.Permissions, Permissions.All)
} }
}; };
} }

2
src/Squidex/app/features/settings/module.ts

@ -16,7 +16,6 @@ import {
} from '@app/shared'; } from '@app/shared';
import { import {
BackupDownloadUrlPipe,
BackupDurationPipe, BackupDurationPipe,
BackupsPageComponent, BackupsPageComponent,
ClientComponent, ClientComponent,
@ -199,7 +198,6 @@ const routes: Routes = [
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [ declarations: [
BackupDownloadUrlPipe,
BackupDurationPipe, BackupDurationPipe,
BackupsPageComponent, BackupsPageComponent,
ClientComponent, ClientComponent,

2
src/Squidex/app/features/settings/pages/backups/backups-page.component.html

@ -72,7 +72,7 @@
<div *ngIf="backup.stopped && !backup.isFailed"> <div *ngIf="backup.stopped && !backup.isFailed">
Download: Download:
<a href="{{backup | sqxBackupDownloadUrl}}" sqxExternalLink="noicon"> <a href="{{apiUrl.buildUrl(backup.downloadUrl)}}" sqxExternalLink="noicon">
Ready <i class="icon-external-link"></i> Ready <i class="icon-external-link"></i>
</a> </a>
</div> </div>

2
src/Squidex/app/features/settings/pages/backups/backups-page.component.ts

@ -10,6 +10,7 @@ import { timer } from 'rxjs';
import { onErrorResumeNext, switchMap } from 'rxjs/operators'; import { onErrorResumeNext, switchMap } from 'rxjs/operators';
import { import {
ApiUrlConfig,
AppsState, AppsState,
BackupDto, BackupDto,
BackupsState, BackupsState,
@ -23,6 +24,7 @@ import {
}) })
export class BackupsPageComponent extends ResourceOwner implements OnInit { export class BackupsPageComponent extends ResourceOwner implements OnInit {
constructor( constructor(
public readonly apiUrl: ApiUrlConfig,
public readonly appsState: AppsState, public readonly appsState: AppsState,
public readonly backupsState: BackupsState public readonly backupsState: BackupsState
) { ) {

23
src/Squidex/app/features/settings/pages/backups/pipes.ts

@ -7,12 +7,7 @@
import { Pipe, PipeTransform } from '@angular/core'; import { Pipe, PipeTransform } from '@angular/core';
import { import { BackupDto, Duration } from '@app/shared';
ApiUrlConfig,
AppsState,
BackupDto,
Duration
} from '@app/shared';
@Pipe({ @Pipe({
name: 'sqxBackupDuration', name: 'sqxBackupDuration',
@ -22,20 +17,4 @@ export class BackupDurationPipe implements PipeTransform {
public transform(backup: BackupDto) { public transform(backup: BackupDto) {
return Duration.create(backup.started, backup.stopped!).toString(); return Duration.create(backup.started, backup.stopped!).toString();
} }
}
@Pipe({
name: 'sqxBackupDownloadUrl',
pure: true
})
export class BackupDownloadUrlPipe implements PipeTransform {
constructor(
private readonly apiUrl: ApiUrlConfig,
private readonly appsState: AppsState
) {
}
public transform(backup: BackupDto) {
return this.apiUrl.buildUrl(`api/apps/${this.appsState.appName}/backups/${backup.id}`);
}
} }

4
src/Squidex/app/shared/services/backups.service.ts

@ -41,6 +41,8 @@ export class BackupDto {
public readonly canDelete: boolean; public readonly canDelete: boolean;
public readonly downloadUrl: string;
constructor( constructor(
links: ResourceLinks, links: ResourceLinks,
public readonly id: string, public readonly id: string,
@ -53,6 +55,8 @@ export class BackupDto {
this._links = links; this._links = links;
this.canDelete = hasAnyLink(links, 'delete'); this.canDelete = hasAnyLink(links, 'delete');
this.downloadUrl = links['download'].href;
} }
} }

Loading…
Cancel
Save