internal async Task Connect(ConnectionInfo connectionInfo, Session session, ILogger logger) { var address = connectionInfo.Network == "unix" ? $"unix://{connectionInfo.Address}" : connectionInfo.Address; var channel = new Channel(address, ChannelCredentials.Insecure); await channel.ConnectAsync(); var interceptedChannel = channel.Intercept(new ExceptionLoggingInterceptor(logger)); Console.Error.WriteLine("[DEBUG] GRPC Channel Connected"); Whisper = new WhisperClient(interceptedChannel, session, logger); Clipboard = new ClipboardClient(interceptedChannel, session, logger); Filesystem = new FilesystemClient(interceptedChannel, session, logger); Cursor = new CursorClient(interceptedChannel, session, logger); Keyboard = new KeyboardClient(interceptedChannel, session, logger); Network = new NetworkClient(interceptedChannel, session, logger); Process = new ProcessClient(interceptedChannel, session, logger); Browser = new BrowserClient(interceptedChannel, session, logger); Hover = new HoverClient(interceptedChannel, session, logger); Window = new WindowClient(interceptedChannel, session, logger); Storage = new StorageClient(interceptedChannel, session, logger); UI = new UIClient(interceptedChannel, session, logger); }
/// <summary> /// Upload files to SharePoint. For now, assumes directory structure already exists. /// </summary> /// <param name="hostname">Hostname for your SharePoint site.</param> /// <param name="team">SharePoint team.</param> /// <param name="root">Directory to search for files to upload.</param> /// <param name="glob">Pattern to search inside filePath.</param> /// <param name="target">Target directory inside the SharePoint site.</param> /// <param name="token"> /// (Optional) AAD access token for auth. /// You may obtain this by visiting: https://developer.microsoft.com/en-us/graph/graph-explorer . /// </param> /// <param name="numFragments">Multiple of 320 KiB to include in each file fragment.</param> async static Task Main( string hostname, string team, string root, string glob = "**", string target = "/", string token = "", int numFragments = 10) { // https://github.com/dotnet/runtime/issues/34742 using var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); var logger = loggerFactory.CreateLogger <Program>(); var filesClient = new FilesystemClient(root, glob); var files = filesClient.Search(); var builder = new GraphClientBuilder(logger); var graphClient = await builder.BuildAsync(token); var uploadClient = new UploadClient(hostname, team, target, numFragments, graphClient, loggerFactory); foreach (var file in files) { await uploadClient.UploadAsync(file); } logger.LogInformation("Done uploading files."); }