Skip to content

Commit efecdf7

Browse files
authored
Merge pull request #198 from umbraco/bugfix/fix-forms-list-null-reference
Fix NULL reference
2 parents 21ad4f0 + 1dcaca0 commit efecdf7

File tree

3 files changed

+47
-20
lines changed

3 files changed

+47
-20
lines changed

src/Umbraco.Cms.Integrations.Crm.Dynamics/Services/DynamicsConfigurationService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ public class DynamicsConfigurationService
1616
private readonly IScopeProvider _scopeProvider;
1717

1818
#if NETCOREAPP
19-
private readonly ILogger<DynamicsService> _logger;
19+
private readonly ILogger<DynamicsConfigurationService> _logger;
2020

21-
public DynamicsConfigurationService(IScopeProvider scopeProvider, ILogger<DynamicsService> logger)
21+
public DynamicsConfigurationService(IScopeProvider scopeProvider, ILogger<DynamicsConfigurationService> logger)
2222
{
2323
_scopeProvider = scopeProvider;
2424

src/Umbraco.Cms.Integrations.Crm.Dynamics/Services/DynamicsService.cs

Lines changed: 44 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Configuration;
43
using System.Linq;
54
using System.Net.Http;
65
using System.Net.Http.Headers;
@@ -13,15 +12,17 @@
1312
using Umbraco.Cms.Integrations.Crm.Dynamics.Models.Dtos;
1413
using Umbraco.Cms.Integrations.Crm.Dynamics.Models;
1514

16-
1715
#if NETCOREAPP
16+
using Microsoft.Extensions.Logging;
1817
using Microsoft.Extensions.Options;
1918
#else
19+
using System.Configuration;
20+
using Umbraco.Core.Logging;
2021
#endif
2122

2223
namespace Umbraco.Cms.Integrations.Crm.Dynamics.Services
2324
{
24-
public class DynamicsService
25+
public class DynamicsService
2526
{
2627
private readonly DynamicsSettings _settings;
2728

@@ -34,18 +35,26 @@ public class DynamicsService
3435
public static Func<HttpClient> ClientFactory = () => s_client;
3536

3637
#if NETCOREAPP
37-
public DynamicsService(IOptions<DynamicsSettings> options, DynamicsConfigurationService dynamicsConfigurationService)
38+
private readonly ILogger<DynamicsService> _logger;
39+
40+
public DynamicsService(IOptions<DynamicsSettings> options, DynamicsConfigurationService dynamicsConfigurationService, ILogger<DynamicsService> logger)
3841
{
3942
_settings = options.Value;
4043

4144
_dynamicsConfigurationService = dynamicsConfigurationService;
45+
46+
_logger = logger;
4247
}
4348
#else
44-
public DynamicsService(DynamicsConfigurationService dynamicsConfigurationService)
49+
private readonly ILogger _logger;
50+
51+
public DynamicsService(DynamicsConfigurationService dynamicsConfigurationService, ILogger logger)
4552
{
4653
_settings = new DynamicsSettings(ConfigurationManager.AppSettings);
4754

4855
_dynamicsConfigurationService = dynamicsConfigurationService;
56+
57+
_logger = logger;
4958
}
5059
#endif
5160

@@ -133,23 +142,30 @@ public async Task<IEnumerable<FormDto>> GetForms(DynamicsModule module)
133142
if (module.HasFlag(DynamicsModule.Outbound))
134143
{
135144
var forms = await Get<OutboundFormDto>(oauthConfiguration.AccessToken, Constants.Modules.OutboundPath);
136-
list.AddRange(forms.Value.Select(p => new FormDto
145+
146+
if (forms != null && forms.Value != null && forms.Value.Any())
137147
{
138-
Id = p.Id,
139-
Name = p.Name,
140-
Module = DynamicsModule.Outbound
141-
}));
148+
list.AddRange(forms.Value.Select(p => new FormDto
149+
{
150+
Id = p.Id,
151+
Name = p.Name,
152+
Module = DynamicsModule.Outbound
153+
}));
154+
}
142155
}
143156

144157
if (module.HasFlag(DynamicsModule.RealTime))
145158
{
146159
var forms = await Get<RealTimeFormDto>(oauthConfiguration.AccessToken, Constants.Modules.RealTimePath);
147-
list.AddRange(forms.Value.Select(p => new FormDto
160+
if (forms != null && forms.Value != null && forms.Value.Any())
148161
{
149-
Id = p.Id,
150-
Name = p.Name,
151-
Module = DynamicsModule.RealTime
152-
}));
162+
list.AddRange(forms.Value.Select(p => new FormDto
163+
{
164+
Id = p.Id,
165+
Name = p.Name,
166+
Module = DynamicsModule.RealTime
167+
}));
168+
}
153169
}
154170

155171
return list;
@@ -184,9 +200,20 @@ private async Task<ResponseDto<T>> Get<T>(string accessToken, string modulePath)
184200

185201
var response = await ClientFactory().SendAsync(requestMessage);
186202

187-
if (!response.IsSuccessStatusCode) return null;
203+
var result = await response.Content.ReadAsStringAsync();
188204

189-
var result = await response.Content.ReadAsStringAsync();
205+
if (!response.IsSuccessStatusCode)
206+
{
207+
var errorMessage = string.Format("An error has occured while trying to retrieve the Dynamics {0} forms: {1} {2}",
208+
modulePath, response.ReasonPhrase, result);
209+
#if NETCOREAPP
210+
_logger.LogError(errorMessage);
211+
#else
212+
_logger.Error<DynamicsService>(errorMessage);
213+
#endif
214+
215+
return null;
216+
}
190217

191218
return JsonConvert.DeserializeObject<ResponseDto<T>>(result);
192219
}

src/Umbraco.Cms.Integrations.Crm.Dynamics/Umbraco.Cms.Integrations.Crm.Dynamics.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<PackageIconUrl></PackageIconUrl>
1111
<PackageProjectUrl>https://github.com/umbraco/Umbraco.Cms.Integrations/blob/main/src/Umbraco.Cms.Integrations.Crm.Dynamics</PackageProjectUrl>
1212
<RepositoryUrl>https://github.com/umbraco/Umbraco.Cms.Integrations</RepositoryUrl>
13-
<Version>1.3.3</Version>
13+
<Version>1.3.4</Version>
1414
<Authors>Umbraco HQ</Authors>
1515
<Company>Umbraco</Company>
1616
<PackageTags>Umbraco;Umbraco-Marketplace</PackageTags>

0 commit comments

Comments
 (0)