Skip to content

Commit 9817afc

Browse files
committed
V14: Integrations (Zapier/Forms)
- Add new test site for V14 - Add new management api for V14
1 parent 2870994 commit 9817afc

22 files changed

+69897
-103
lines changed

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@
1010
*.userosscache
1111
*.sln.docstates
1212

13+
# test site
14+
src/Umbraco.Forms.Integrations.Testsite.V14/App_Plugins/Our.Umbraco.DashIt
15+
src/Umbraco.Forms.Integrations.Testsite.V14/umbraco
16+
src/Umbraco.Forms.Integrations.Testsite.V14/Views
17+
src/Umbraco.Forms.Integrations.Testsite.V14/wwwroot
18+
src/Umbraco.Forms.Integrations.Automation.Zapier/wwwroot
19+
1320
# User-specific files (MonoDevelop/Xamarin Studio)
1421
*.userprefs
1522

src/Umbraco.Forms.Integrations.Automation.Zapier/Controllers/ZapierFormAuthorizedApiController.cs renamed to src/Umbraco.Forms.Integrations.Automation.Zapier/Api/Management/Controllers/FormsControllerBase.cs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,30 @@
1-
using System.Linq;
2-
using Umbraco.Cms.Web.Common.Controllers;
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using Microsoft.AspNetCore.Mvc;
7+
using Umbraco.Cms.Api.Common.Attributes;
8+
using Umbraco.Cms.Web.Common.Routing;
39
using Umbraco.Forms.Integrations.Automation.Zapier.Services;
410

5-
namespace Umbraco.Forms.Integrations.Automation.Zapier.Controllers
11+
namespace Umbraco.Forms.Integrations.Automation.Zapier.Api.Management.Controllers
612
{
7-
public class ZapierFormAuthorizedApiController : UmbracoApiController
13+
[ApiController]
14+
[BackOfficeRoute($"{Constants.ManagementApi.RootPath}/v{{version:apiVersion}}")]
15+
[MapToApi(Constants.ManagementApi.ApiName)]
16+
public class FormsControllerBase : Controller
817
{
918
private readonly IUserValidationService _userValidationService;
19+
protected readonly ZapierFormService ZapierFormService;
1020

11-
public ZapierFormAuthorizedApiController(
12-
IUserValidationService userValidationService) =>
21+
public FormsControllerBase(
22+
IUserValidationService userValidationService,
23+
ZapierFormService zapierFormService)
24+
{
1325
_userValidationService = userValidationService;
26+
ZapierFormService = zapierFormService;
27+
}
1428

1529
public bool IsAccessValid()
1630
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using Asp.Versioning;
2+
using Microsoft.AspNetCore.Http;
3+
using Microsoft.AspNetCore.Mvc;
4+
using System;
5+
using System.Collections.Generic;
6+
using System.Linq;
7+
using System.Text;
8+
using System.Threading.Tasks;
9+
using Umbraco.Forms.Integrations.Automation.Zapier.Extensions;
10+
using Umbraco.Forms.Integrations.Automation.Zapier.Services;
11+
12+
namespace Umbraco.Forms.Integrations.Automation.Zapier.Api.Management.Controllers
13+
{
14+
[ApiVersion("1.0")]
15+
[ApiExplorerSettings(GroupName = Constants.ManagementApi.GroupName)]
16+
public class GetFormPropertiesByIdController : FormsControllerBase
17+
{
18+
public GetFormPropertiesByIdController(IUserValidationService userValidationService, ZapierFormService zapierFormService) : base(userValidationService, zapierFormService)
19+
{
20+
}
21+
22+
[HttpGet("forms/{id}")]
23+
[ProducesResponseType(typeof(List<Dictionary<string, string>>), StatusCodes.Status200OK)]
24+
public IActionResult GetFormPropertiesById(string id)
25+
{
26+
var emptyList = new List<Dictionary<string, string>>();
27+
28+
if (!IsAccessValid()) return Ok(emptyList);
29+
30+
var form = ZapierFormService.GetById(id);
31+
32+
if (form == null) return Ok(emptyList);
33+
34+
return Ok(new List<Dictionary<string, string>> { form.ToEmptyFormDictionary() });
35+
}
36+
}
37+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using Asp.Versioning;
2+
using Microsoft.AspNetCore.Http;
3+
using Microsoft.AspNetCore.Mvc;
4+
using System;
5+
using System.Collections.Generic;
6+
using System.Linq;
7+
using System.Text;
8+
using System.Threading.Tasks;
9+
using Umbraco.Forms.Integrations.Automation.Zapier.Models.Dtos;
10+
using Umbraco.Forms.Integrations.Automation.Zapier.Services;
11+
12+
namespace Umbraco.Forms.Integrations.Automation.Zapier.Api.Management.Controllers
13+
{
14+
[ApiVersion("1.0")]
15+
[ApiExplorerSettings(GroupName = Constants.ManagementApi.GroupName)]
16+
public class GetFormsController : FormsControllerBase
17+
{
18+
public GetFormsController(IUserValidationService userValidationService, ZapierFormService zapierFormService) : base(userValidationService, zapierFormService)
19+
{
20+
21+
}
22+
23+
[HttpGet("forms")]
24+
[ProducesResponseType(typeof(IEnumerable<FormDto>), StatusCodes.Status200OK)]
25+
public IActionResult GetForms()
26+
{
27+
if (!IsAccessValid()) return Ok(Enumerable.Empty<FormDto>());
28+
29+
return Ok(ZapierFormService.GetAll());
30+
}
31+
}
32+
}

src/Umbraco.Forms.Integrations.Automation.Zapier/Constants.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,16 @@ public static class EntityType
3434
{
3535
public const int Form = 2;
3636
}
37+
38+
public static class ManagementApi
39+
{
40+
public const string RootPath = "zapier/forms/management/api";
41+
42+
public const string ApiName = "zapier-forms-management";
43+
44+
public const string ApiTitle = "Zapier Forms Management API";
45+
46+
public const string GroupName = "Zapier Forms";
47+
}
3748
}
3849
}

src/Umbraco.Forms.Integrations.Automation.Zapier/Controllers/FormController.cs

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/Umbraco.Forms.Integrations.Automation.Zapier/Controllers/FormPollingController.cs

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
using Newtonsoft.Json;
1+
using System.Text.Json.Serialization;
22

33
namespace Umbraco.Forms.Integrations.Automation.Zapier.Models.Dtos
44
{
55
public class FormDto
66
{
7-
[JsonProperty("id")]
7+
[JsonPropertyName("id")]
88
public string Id { get; set; }
99

10-
[JsonProperty("name")]
10+
[JsonPropertyName("name")]
1111
public string Name { get; set; }
1212
}
1313
}
Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
1-
using Newtonsoft.Json;
1+
using System.Text.Json.Serialization;
22

33
namespace Umbraco.Forms.Integrations.Automation.Zapier.Models.Dtos
44
{
55
public class SubscriptionDto
66
{
7-
[JsonProperty("id")]
7+
[JsonPropertyName("id")]
88
public int Id { get; set; }
99

10-
[JsonProperty("entityId")]
10+
[JsonPropertyName("entityId")]
1111
public string EntityId { get; set; }
1212

13-
[JsonProperty("type")]
13+
[JsonPropertyName("type")]
1414
public int Type { get; set; }
1515

16-
[JsonProperty("typeName")] public string TypeName => nameof(Constants.EntityType.Form);
16+
[JsonPropertyName("typeName")]
17+
public string TypeName => nameof(Constants.EntityType.Form);
1718

18-
[JsonProperty("hookUrl")]
19+
[JsonPropertyName("hookUrl")]
1920
public string HookUrl { get; set; }
2021

21-
[JsonProperty("subscribeHook")]
22+
[JsonPropertyName("subscribeHook")]
2223
public bool SubscribeHook { get; set; }
2324
}
2425
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{
2+
"$schema": "http://json.schemastore.org/launchsettings.json",
3+
"iisSettings": {
4+
"windowsAuthentication": false,
5+
"anonymousAuthentication": true,
6+
"iisExpress": {
7+
"applicationUrl": "http://localhost:18629",
8+
"sslPort": 44339
9+
}
10+
},
11+
"profiles": {
12+
"http": {
13+
"commandName": "Project",
14+
"dotnetRunMessages": true,
15+
"launchBrowser": true,
16+
"applicationUrl": "http://localhost:5220",
17+
"environmentVariables": {
18+
"ASPNETCORE_ENVIRONMENT": "Development"
19+
}
20+
},
21+
"https": {
22+
"commandName": "Project",
23+
"dotnetRunMessages": true,
24+
"launchBrowser": true,
25+
"applicationUrl": "https://localhost:7106;http://localhost:5220",
26+
"environmentVariables": {
27+
"ASPNETCORE_ENVIRONMENT": "Development"
28+
}
29+
},
30+
"IIS Express": {
31+
"commandName": "IISExpress",
32+
"launchBrowser": true,
33+
"environmentVariables": {
34+
"ASPNETCORE_ENVIRONMENT": "Development"
35+
}
36+
}
37+
}
38+
}

0 commit comments

Comments
 (0)