mirror of
https://github.com/Ryujinx/GtkSharp.git
synced 2024-12-26 14:05:31 +00:00
32aa6d0788
* sample/gnomevfs/*.cs : s/Test.Gnome.VFS/TestGnomeVfs to avoid namespace collision problems with current mcs. svn path=/trunk/gtk-sharp/; revision=38788
74 lines
2 KiB
C#
74 lines
2 KiB
C#
using GLib;
|
|
using Gnome.Vfs;
|
|
using System;
|
|
using System.Text;
|
|
|
|
namespace TestGnomeVfs {
|
|
public class TestCallback {
|
|
private static MainLoop loop;
|
|
|
|
static void Main (string[] args)
|
|
{
|
|
if (args.Length != 1) {
|
|
Console.WriteLine ("Usage: TestCallback <uri>");
|
|
return;
|
|
}
|
|
|
|
Gnome.Vfs.Vfs.Initialize ();
|
|
|
|
Gnome.Vfs.Uri uri = new Gnome.Vfs.Uri (args[0]);
|
|
Handle handle;
|
|
|
|
// Test 1: Attempt to access a URI requiring authentication w/o a callback registered.
|
|
try {
|
|
handle = Sync.Open (uri, OpenMode.Read);
|
|
Sync.Close (handle);
|
|
Console.WriteLine ("Uri '{0}' doesn't require authentication", uri);
|
|
return;
|
|
} catch (VfsException ex) {
|
|
if (ex.Result != Result.ErrorAccessDenied)
|
|
throw ex;
|
|
}
|
|
|
|
// Test 2: Attempt an open that requires authentication.
|
|
ModuleCallbackFullAuthentication cb = new ModuleCallbackFullAuthentication ();
|
|
cb.Callback += new ModuleCallbackHandler (OnAuthenticate);
|
|
cb.SetDefault ();
|
|
|
|
handle = Sync.Open (uri, OpenMode.Read);
|
|
Sync.Close (handle);
|
|
|
|
// Test 3: This call should not require any new authentication.
|
|
Console.WriteLine ("File info: \n{0}", uri.GetFileInfo ());
|
|
|
|
// Test 4: Attempt a call to the parent uri.
|
|
FileInfo[] entries = Directory.GetEntries (uri.Parent);
|
|
Console.WriteLine ("Directory '{0}' has {1} entries", uri.Parent, entries.Length);
|
|
|
|
// Test 5: Pop the authentication callback and try again.
|
|
cb.Pop ();
|
|
try {
|
|
handle = Sync.Open (uri, OpenMode.Read);
|
|
} catch (VfsException ex) {
|
|
if (ex.Result != Result.ErrorAccessDenied)
|
|
throw ex;
|
|
}
|
|
|
|
Gnome.Vfs.Vfs.Shutdown ();
|
|
}
|
|
|
|
private static void OnAuthenticate (ModuleCallback cb)
|
|
{
|
|
ModuleCallbackFullAuthentication fcb = cb as ModuleCallbackFullAuthentication;
|
|
Console.Write ("Enter your username ({0}): ", fcb.Username);
|
|
string username = Console.ReadLine ();
|
|
Console.Write ("Enter your password : ");
|
|
string passwd = Console.ReadLine ();
|
|
|
|
if (username.Length > 0)
|
|
fcb.Username = username;
|
|
fcb.Password = passwd;
|
|
}
|
|
}
|
|
}
|