Skip to content

Commit 6f2af75

Browse files
author
Dmitry Kozlov
committed
added requests of seperate items in the SP function
1 parent fae7e66 commit 6f2af75

File tree

2 files changed

+40
-15
lines changed

2 files changed

+40
-15
lines changed

FunctionApp/SharePoint/GraphServiceClientProvider.cs

+6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Microsoft.Graph;
44
using Microsoft.Identity.Client;
55
using Plumsail.DataSource.SharePoint.Settings;
6+
using System.Net.Http;
67

78
namespace Plumsail.DataSource.SharePoint
89
{
@@ -24,6 +25,11 @@ public GraphServiceClient Create()
2425
};
2526

2627
var clientSecretCredential = new ClientSecretCredential(_azureAppSettings.Tenant, _azureAppSettings.ClientId, _azureAppSettings.ClientSecret, options);
28+
29+
// for debugging requests
30+
//var debugHandler = new DebugRequestHandler(new DebugResponseHandler());
31+
//var httpClient = new HttpClient(debugHandler);
32+
//return new GraphServiceClient(httpClient, clientSecretCredential);
2733
return new GraphServiceClient(clientSecretCredential);
2834
}
2935
}

FunctionApp/SharePoint/ListData.cs

+34-15
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Microsoft.Extensions.Options;
77
using Microsoft.Graph;
88
using Microsoft.Graph.Models;
9+
using Microsoft.Graph.Models.ODataErrors;
910
using System.Collections.Generic;
1011
using System.Threading.Tasks;
1112
using static System.Runtime.InteropServices.JavaScript.JSType;
@@ -27,29 +28,47 @@ public ListData(IOptions<Settings.AppSettings> settings, GraphServiceClientProvi
2728

2829
[Function("SharePoint-ListData")]
2930
public async Task<IActionResult> Run(
30-
[HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequest req)
31+
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "sp/items/{id?}")] HttpRequest req, int? id)
3132
{
32-
_logger.LogInformation("ListData is requested.");
33+
_logger.LogInformation("SharePoint-ListData is requested.");
3334

3435
var graph = _graphProvider.Create();
3536
var list = await graph.GetListAsync(_settings.SiteUrl, _settings.ListName);
36-
var itemsPage = await list.Items.GetAsync(requestConfiguration =>
37+
if (list == null)
3738
{
38-
//requestConfiguration.QueryParameters.Filter = "fields/Title eq 'item 1'";
39-
requestConfiguration.QueryParameters.Select = ["id"];
40-
requestConfiguration.QueryParameters.Expand = ["fields($select=Title,Author)"];
41-
});
42-
43-
var items = new List<ListItem>();
44-
var pageIterator = PageIterator<ListItem, ListItemCollectionResponse>
45-
.CreatePageIterator(graph, itemsPage, item =>
39+
return new NotFoundResult();
40+
}
41+
42+
if (!id.HasValue)
43+
{
44+
var itemsPage = await list.Items.GetAsync(requestConfiguration =>
4645
{
47-
items.Add(item);
48-
return true;
46+
//requestConfiguration.QueryParameters.Filter = "fields/Title eq 'item 1'";
47+
requestConfiguration.QueryParameters.Select = ["id"];
48+
requestConfiguration.QueryParameters.Expand = ["fields($select=Title,Author)"];
4949
});
5050

51-
await pageIterator.IterateAsync();
52-
return new OkObjectResult(items);
51+
var items = new List<ListItem>();
52+
var pageIterator = PageIterator<ListItem, ListItemCollectionResponse>
53+
.CreatePageIterator(graph, itemsPage, item =>
54+
{
55+
items.Add(item);
56+
return true;
57+
});
58+
59+
await pageIterator.IterateAsync();
60+
return new OkObjectResult(items);
61+
}
62+
63+
try
64+
{
65+
var item = await list.Items[id.ToString()].GetAsync();
66+
return new OkObjectResult(item?.Fields?.AdditionalData);
67+
}
68+
catch (ODataError error) when (error.ResponseStatusCode.Equals(404))
69+
{
70+
return new NotFoundResult();
71+
}
5372
}
5473
}
5574
}

0 commit comments

Comments
 (0)