6
6
using Microsoft . Extensions . Options ;
7
7
using Microsoft . Graph ;
8
8
using Microsoft . Graph . Models ;
9
+ using Microsoft . Graph . Models . ODataErrors ;
9
10
using System . Collections . Generic ;
10
11
using System . Threading . Tasks ;
11
12
using static System . Runtime . InteropServices . JavaScript . JSType ;
@@ -27,29 +28,47 @@ public ListData(IOptions<Settings.AppSettings> settings, GraphServiceClientProvi
27
28
28
29
[ Function ( "SharePoint-ListData" ) ]
29
30
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 )
31
32
{
32
- _logger . LogInformation ( "ListData is requested." ) ;
33
+ _logger . LogInformation ( "SharePoint- ListData is requested." ) ;
33
34
34
35
var graph = _graphProvider . Create ( ) ;
35
36
var list = await graph . GetListAsync ( _settings . SiteUrl , _settings . ListName ) ;
36
- var itemsPage = await list . Items . GetAsync ( requestConfiguration =>
37
+ if ( list == null )
37
38
{
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 =>
46
45
{
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)" ] ;
49
49
} ) ;
50
50
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
+ }
53
72
}
54
73
}
55
74
}
0 commit comments