Add Trafag SAP HANA to Excel SharePoint exporter console app

This commit is contained in:
2026-04-09 15:47:55 +02:00
parent 8d8b62f1f5
commit 673bba7298
7 changed files with 485 additions and 0 deletions
@@ -0,0 +1,44 @@
using Azure.Identity;
using Microsoft.Graph;
namespace TrafagSalesExporter.Services;
public class SharePointUploadService
{
private readonly GraphServiceClient _graphClient;
private readonly string _siteUrl;
private readonly string _exportFolder;
public SharePointUploadService(string tenantId, string clientId, string clientSecret, string siteUrl, string exportFolder)
{
var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
_graphClient = new GraphServiceClient(credential, ["https://graph.microsoft.com/.default"]);
_siteUrl = siteUrl;
_exportFolder = exportFolder;
}
public async Task UploadAsync(string land, string localFilePath)
{
var uri = new Uri(_siteUrl);
var sitePath = uri.AbsolutePath;
var site = await _graphClient.Sites[$"{uri.Host}:{sitePath}"].GetAsync();
if (site?.Id is null)
{
throw new InvalidOperationException("SharePoint Site konnte nicht gefunden werden.");
}
var drive = await _graphClient.Sites[site.Id].Drive.GetAsync();
if (drive?.Id is null)
{
throw new InvalidOperationException("SharePoint Dokumentenbibliothek konnte nicht gefunden werden.");
}
var fileName = Path.GetFileName(localFilePath);
var folderPath = $"{_exportFolder.Trim('/').Trim()}";
var remotePath = $"{folderPath}/{land}/{fileName}";
await using var stream = File.OpenRead(localFilePath);
await _graphClient.Drives[drive.Id].Root.ItemWithPath(remotePath).Content.PutAsync(stream);
}
}