Skip to content

Commit 374edfd

Browse files
author
MHD\nialan
committed
Refactored main logic into seperate libary project to more easily unit test
1 parent 349c984 commit 374edfd

13 files changed

+79
-28
lines changed

ADF.Functions/ADF.Functions.csproj

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818
<RootNamespace>Azure.Datafactory.Extensions.Functions</RootNamespace>
1919
</PropertyGroup>
2020
<ItemGroup>
21-
<PackageReference Include="Azure.Identity" Version="1.2.2" />
22-
<PackageReference Include="Azure.Storage.Files.DataLake" Version="12.4.0" />
23-
<PackageReference Include="Flurl" Version="2.8.2" />
24-
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.3" />
25-
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.2.2" />
21+
<PackageReference Include="Azure.Identity" Version="1.3.0" />
22+
<PackageReference Include="Azure.Storage.Files.DataLake" Version="12.6.0" />
23+
<PackageReference Include="Flurl" Version="3.0.1" />
24+
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.11" />
25+
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.2.8" />
2626
</ItemGroup>
2727
<ItemGroup>
2828
<None Update="host.json">
@@ -37,4 +37,7 @@
3737
<PackagePath></PackagePath>
3838
</None>
3939
</ItemGroup>
40+
<ItemGroup>
41+
<ProjectReference Include="..\Azure.DataFactory.Extensions\Azure.DataFactory.Extensions.csproj" />
42+
</ItemGroup>
4043
</Project>

ADF.Functions/DataLakeHelpers.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
using System.Reflection;
1717
using System.Linq.Dynamic.Core;
1818
using Azure.Storage.Files.DataLake.Models;
19+
using Azure.Datafactory.Extensions.DataLake;
20+
using Azure.Datafactory.Extensions.DataLake.Model;
1921

2022
namespace Azure.Datafactory.Extensions.Functions
2123
{
@@ -26,6 +28,8 @@ public static async Task<IActionResult> DataLakeGetItems(
2628
[HttpTrigger(AuthorizationLevel.Function, "get" /*, "post"*/, Route = null)] HttpRequest req,
2729
ILogger log)
2830
{
31+
req.GetQueryParameterDictionary();
32+
2933
var userAgentKey = req.Headers.Keys.FirstOrDefault(k => k.ToLower() == "user-agent" || k.ToLower() == "useragent");
3034
log.LogInformation($"C# HTTP trigger function processed a request [User Agent: { (userAgentKey == null ? "Unknown" : req.Headers[userAgentKey].ToString()) }].");
3135

ADF.Functions/AssemblyHelpers.cs renamed to Azure.DataFactory.Extensions/AssemblyHelpers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public static string GetAssemblyVersionInfoJson()
1111
return GetAssemblyVersionInfoJson(callingAssembly);
1212
}
1313

14-
public static string GetAssemblyVersionInfoJson(System.Reflection.Assembly assembly)
14+
public static string GetAssemblyVersionInfoJson(Assembly assembly)
1515
{
1616
string buildDate = assembly.GetCustomAttributes().OfType<AssemblyMetadataAttribute>().FirstOrDefault(a => a.Key == "BuildDate")?.Value;
1717
string informationalVersion = assembly.GetCustomAttributes().OfType<AssemblyInformationalVersionAttribute>().FirstOrDefault()?.InformationalVersion;
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netcoreapp3.1</TargetFramework>
5+
</PropertyGroup>
6+
7+
<PropertyGroup>
8+
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
9+
<OutDir>bin\$(Configuration)</OutDir>
10+
<Version>1.0.0</Version>
11+
<Company />
12+
<Authors>Niall Langley</Authors>
13+
<Product>azure.datafactory.extensions</Product>
14+
<PackageId>Azure.Datafactory.Extensions</PackageId>
15+
<PackageLicenseFile>LICENSE</PackageLicenseFile>
16+
<PackageProjectUrl>https://github.com/NJLangley/azure.datafactory.extensions</PackageProjectUrl>
17+
<AssemblyName>Azure.Datafactory.Extensions</AssemblyName>
18+
<RootNamespace>Azure.Datafactory.Extensions</RootNamespace>
19+
</PropertyGroup>
20+
21+
<ItemGroup>
22+
<PackageReference Include="Azure.Identity" Version="1.3.0" />
23+
<PackageReference Include="Azure.Storage.Files.DataLake" Version="12.6.0" />
24+
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
25+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.13" />
26+
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
27+
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.2.8" />
28+
</ItemGroup>
29+
30+
</Project>

ADF.Functions/DataLakeClientFactory.cs renamed to Azure.DataFactory.Extensions/DataLake/DataLakeClientFactory.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
using Azure.Identity;
1+
using Azure.Datafactory.Extensions.DataLake.Model;
2+
using Azure.Identity;
23
using Azure.Storage.Files.DataLake;
34
using Microsoft.Extensions.Logging;
45
using System;
5-
using System.Collections.Generic;
6-
using System.Text;
76

87
namespace Azure.Datafactory.Extensions.Functions
98
{

ADF.Functions/DataLakeCheckPathCaseConfig.cs renamed to Azure.DataFactory.Extensions/DataLake/Model/DataLakeCheckPathCaseConfig.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using Microsoft.Extensions.Logging;
33
using Microsoft.Extensions.Primitives;
44

5-
namespace Azure.Datafactory.Extensions.Functions
5+
namespace Azure.Datafactory.Extensions.DataLake.Model
66
{
77
public class DataLakeCheckPathCaseConfig : DataLakeConfig
88
{

ADF.Functions/DataLakeConfig.cs renamed to Azure.DataFactory.Extensions/DataLake/Model/DataLakeConfig.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
using Microsoft.AspNetCore.Http;
2-
using Microsoft.Azure.WebJobs.Extensions.Http;
2+
//using Microsoft.Azure.WebJobs.Extensions.Http;
33
using Microsoft.Extensions.Logging;
44
using Microsoft.Extensions.Primitives;
55
using Newtonsoft.Json;
66
using System.IO;
77

8-
namespace Azure.Datafactory.Extensions.Functions
8+
namespace Azure.Datafactory.Extensions.DataLake.Model
99
{
1010
public class DataLakeConfig
1111
{
@@ -23,7 +23,7 @@ public class DataLakeConfig
2323
protected DataLakeConfig(HttpRequest req, ILogger logger)
2424
{
2525
Logger = logger;
26-
Logger?.LogInformation($"req.GetQueryParameterDictionary(): {JsonConvert.SerializeObject(req.GetQueryParameterDictionary(), Formatting.Indented)}");
26+
//Logger?.LogInformation($"req.GetQueryParameterDictionary(): {JsonConvert.SerializeObject(req.GetQueryParameterDictionary(), Formatting.Indented)}");
2727

2828
Data = GetRequestData(req);
2929

@@ -39,7 +39,7 @@ public static DataLakeConfig ParseFromRequestBody(HttpRequest req, ILogger logge
3939
private static dynamic GetRequestData(HttpRequest req)
4040
{
4141
var task = new StreamReader(req.Body).ReadToEndAsync();
42-
task.Wait(250);
42+
//task.Wait(250);
4343
return JsonConvert.DeserializeObject(task.Result);
4444
}
4545
}

ADF.Functions/DataLakeFile.cs renamed to Azure.DataFactory.Extensions/DataLake/Model/DataLakeFile.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace Azure.Datafactory.Extensions.Functions
1+
namespace Azure.Datafactory.Extensions.DataLake.Model
22
{
33
public struct DataLakeFile
44
{

ADF.Functions/DataLakeGetItemsConfig.cs renamed to Azure.DataFactory.Extensions/DataLake/Model/DataLakeGetItemsConfig.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
using Microsoft.AspNetCore.Http;
1+
using Azure.Datafactory.Extensions.Functions;
2+
using Microsoft.AspNetCore.Http;
23
using Microsoft.Extensions.Logging;
34
using Microsoft.Extensions.Primitives;
45
using System.Collections.Generic;
56
using System.Linq;
67

7-
namespace Azure.Datafactory.Extensions.Functions
8+
namespace Azure.Datafactory.Extensions.DataLake.Model
89
{
910

1011
public class DataLakeGetItemsConfig : DataLakeConfig
@@ -15,7 +16,7 @@ public class DataLakeGetItemsConfig : DataLakeConfig
1516
public string OrderByColumn { get; set; }
1617
public bool OrderByDescending { get; set; }
1718
public int Limit { get; set; }
18-
public IEnumerable<Filter> Filters { get; set; }
19+
public IEnumerable<Filter<DataLakeFile>> Filters { get; set; }
1920

2021
private const string DirectoryParam = "directory";
2122
private const string IgnoreDirectoryCaseParam = "ignoreDirectoryCase";
@@ -47,11 +48,11 @@ private DataLakeGetItemsConfig(HttpRequest req, ILogger logger) :
4748
Filters = ParseFilters(req);
4849
}
4950

50-
private IEnumerable<Filter> ParseFilters(HttpRequest req)
51+
private IEnumerable<Filter<DataLakeFile>> ParseFilters(HttpRequest req)
5152
{
5253
var filters = req.Query.Keys
5354
.Where(k => k.StartsWith("filter[") && k.EndsWith("]"))
54-
.SelectMany(k => req.Query[k].Select(v => Filter.ParseFilter(k, v, Logger)))
55+
.SelectMany(k => req.Query[k].Select(v => Filter<DataLakeFile>.ParseFilter(k, v, Logger)))
5556
.Where(f => f != null);
5657

5758
return filters;

0 commit comments

Comments
 (0)