-
Notifications
You must be signed in to change notification settings - Fork 213
[DRAFT] SharePoint Graph API support #3655
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…ific requests Bound SharePointDiagnostics with response information Add ability to upload large files in 4mb chunks
Very interesting contribution! Please allow me to take a much closer look at your code in the coming days. Unfortunately I will be on the road next week, so this might take me a short while to get to - but I'll be on it soon! |
Thank you, I’ll look forward to your feedback -) |
src/System Application/App/SharePoint/src/graph/SharePointGraphClient.Codeunit.al
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First of all: I really appreciate the work you have done for this PR.
I'm unsure if maybe some of the functionalities in the graph helper codeunits should maybe better be placed into the graph client module.
I only took a short look into the new code so far. I will need some more time to look into the changes in more detail.
Update:
I'm not sure if it's really helpful to provide a boolean value as return value on all those functions.
How should anyone know why the got false
.
I think that it would be more helpful to return errors when something didn't went well.
Furthermore on your planned improvements for pagination:
I'm not sure if this is possible with the GraphOptionalParameters, but I think that it would be helpful if we could specify a range from outside, too.
What I mean is that sometimes we might want to control the pagination steps from outside.
Return repsonse object instead of unclear boolean Additional inetrnal methods for testing
Thank you for such a helpful review of the PR. Your remarks are very useful.
Regarding managing pagination externally, that’s an excellent observation, but I’m still considering the best way to implement it. I’ll think through an approach that is convenient. I believe pagination would be best handled at the Microsoft Graph module level, this needs some further thought. My plans: at the moment I intend to keep improving the code and finish writing the tests. |
Summary
This is the first version of the SharePoint Graph API module that leverages the Microsoft Graph module.
After analyzing the current REST implementation, I concluded that it cannot be changed without breaking backward compatibility. In addition, the REST and Graph APIs have completely different data models and sets of fields, which makes it impossible to reuse the same tables for entities that REST uses.
Therefore, adding a separate SharePoint Graph Client seemed the simplest and most natural solution. I also considered factory/builder patterns and dependency injection, but for the reasons mentioned above these approaches did not seem optimal, they don’t fit well and would greatly complicate the overall use of the SharePoint module.
I have already tested this code locally in various scenarios, and it behaves well. My plans are:
Examples of how to use:
Work Item(s)
Fixes #3198
Fixes AB#568746