mirror of
https://gitee.com/csharpui/CPF.git
synced 2025-04-05 17:37:51 +08:00
187 lines
5.5 KiB
C#
187 lines
5.5 KiB
C#
using CPF.Mac.ObjCRuntime;
|
|
using System;
|
|
using System.ComponentModel;
|
|
|
|
namespace CPF.Mac.Foundation
|
|
{
|
|
[Register("NSURLCredential", true)]
|
|
public class NSUrlCredential : NSObject
|
|
{
|
|
private static readonly IntPtr selPersistenceHandle = Selector.GetHandle("persistence");
|
|
|
|
private static readonly IntPtr selUserHandle = Selector.GetHandle("user");
|
|
|
|
private static readonly IntPtr selPasswordHandle = Selector.GetHandle("password");
|
|
|
|
private static readonly IntPtr selHasPasswordHandle = Selector.GetHandle("hasPassword");
|
|
|
|
private static readonly IntPtr selIdentityHandle = Selector.GetHandle("identity");
|
|
|
|
private static readonly IntPtr selInitWithUserPasswordPersistence_Handle = Selector.GetHandle("initWithUser:password:persistence:");
|
|
|
|
private static readonly IntPtr selCredentialWithUserPasswordPersistence_Handle = Selector.GetHandle("credentialWithUser:password:persistence:");
|
|
|
|
private static readonly IntPtr selCredentialForTrust_Handle = Selector.GetHandle("credentialForTrust:");
|
|
|
|
private static readonly IntPtr class_ptr = Class.GetHandle("NSURLCredential");
|
|
|
|
public override IntPtr ClassHandle => class_ptr;
|
|
|
|
public virtual NSUrlCredentialPersistence Persistence
|
|
{
|
|
[Export("persistence")]
|
|
get
|
|
{
|
|
if (IsDirectBinding)
|
|
{
|
|
return (NSUrlCredentialPersistence)Messaging.UInt64_objc_msgSend(base.Handle, selPersistenceHandle);
|
|
}
|
|
return (NSUrlCredentialPersistence)Messaging.UInt64_objc_msgSendSuper(base.SuperHandle, selPersistenceHandle);
|
|
}
|
|
}
|
|
|
|
public virtual string User
|
|
{
|
|
[Export("user")]
|
|
get
|
|
{
|
|
if (IsDirectBinding)
|
|
{
|
|
return NSString.FromHandle(Messaging.IntPtr_objc_msgSend(base.Handle, selUserHandle));
|
|
}
|
|
return NSString.FromHandle(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selUserHandle));
|
|
}
|
|
}
|
|
|
|
public virtual string Password
|
|
{
|
|
[Export("password")]
|
|
get
|
|
{
|
|
if (IsDirectBinding)
|
|
{
|
|
return NSString.FromHandle(Messaging.IntPtr_objc_msgSend(base.Handle, selPasswordHandle));
|
|
}
|
|
return NSString.FromHandle(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selPasswordHandle));
|
|
}
|
|
}
|
|
|
|
public virtual bool HasPassword
|
|
{
|
|
[Export("hasPassword")]
|
|
get
|
|
{
|
|
if (IsDirectBinding)
|
|
{
|
|
return Messaging.bool_objc_msgSend(base.Handle, selHasPasswordHandle);
|
|
}
|
|
return Messaging.bool_objc_msgSendSuper(base.SuperHandle, selHasPasswordHandle);
|
|
}
|
|
}
|
|
|
|
public virtual IntPtr Identity
|
|
{
|
|
[Export("identity")]
|
|
get
|
|
{
|
|
if (IsDirectBinding)
|
|
{
|
|
return Messaging.IntPtr_objc_msgSend(base.Handle, selIdentityHandle);
|
|
}
|
|
return Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selIdentityHandle);
|
|
}
|
|
}
|
|
|
|
public NSUrlCredential(IntPtr trust, bool ignored)
|
|
: base(NSObjectFlag.Empty)
|
|
{
|
|
if (IsDirectBinding)
|
|
{
|
|
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr(base.Handle, Selector.GetHandle("initWithTrust:"), trust);
|
|
}
|
|
else
|
|
{
|
|
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr(base.SuperHandle, Selector.GetHandle("initWithTrust:"), trust);
|
|
}
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
|
[Export("initWithCoder:")]
|
|
public NSUrlCredential(NSCoder coder)
|
|
: base(NSObjectFlag.Empty)
|
|
{
|
|
if (IsDirectBinding)
|
|
{
|
|
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr(base.Handle, Selector.InitWithCoder, coder.Handle);
|
|
}
|
|
else
|
|
{
|
|
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr(base.SuperHandle, Selector.InitWithCoder, coder.Handle);
|
|
}
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
|
public NSUrlCredential(NSObjectFlag t)
|
|
: base(t)
|
|
{
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Advanced)]
|
|
public NSUrlCredential(IntPtr handle)
|
|
: base(handle)
|
|
{
|
|
}
|
|
|
|
[Export("initWithUser:password:persistence:")]
|
|
public NSUrlCredential(string user, string password, NSUrlCredentialPersistence persistence)
|
|
: base(NSObjectFlag.Empty)
|
|
{
|
|
if (user == null)
|
|
{
|
|
throw new ArgumentNullException("user");
|
|
}
|
|
if (password == null)
|
|
{
|
|
throw new ArgumentNullException("password");
|
|
}
|
|
IntPtr intPtr = NSString.CreateNative(user);
|
|
IntPtr intPtr2 = NSString.CreateNative(password);
|
|
if (IsDirectBinding)
|
|
{
|
|
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_UInt64(base.Handle, selInitWithUserPasswordPersistence_Handle, intPtr, intPtr2, (ulong)persistence);
|
|
}
|
|
else
|
|
{
|
|
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr_IntPtr_UInt64(base.SuperHandle, selInitWithUserPasswordPersistence_Handle, intPtr, intPtr2, (ulong)persistence);
|
|
}
|
|
NSString.ReleaseNative(intPtr);
|
|
NSString.ReleaseNative(intPtr2);
|
|
}
|
|
|
|
[Export("credentialWithUser:password:persistence:")]
|
|
public static NSUrlCredential FromUserPasswordPersistance(string user, string password, NSUrlCredentialPersistence persistence)
|
|
{
|
|
if (user == null)
|
|
{
|
|
throw new ArgumentNullException("user");
|
|
}
|
|
if (password == null)
|
|
{
|
|
throw new ArgumentNullException("password");
|
|
}
|
|
IntPtr intPtr = NSString.CreateNative(user);
|
|
IntPtr intPtr2 = NSString.CreateNative(password);
|
|
NSUrlCredential result = (NSUrlCredential)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_UInt64(class_ptr, selCredentialWithUserPasswordPersistence_Handle, intPtr, intPtr2, (ulong)persistence));
|
|
NSString.ReleaseNative(intPtr);
|
|
NSString.ReleaseNative(intPtr2);
|
|
return result;
|
|
}
|
|
|
|
[Export("credentialForTrust:")]
|
|
public static NSUrlCredential FromTrust(IntPtr SecTrustRef_trust)
|
|
{
|
|
return (NSUrlCredential)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend_IntPtr(class_ptr, selCredentialForTrust_Handle, SecTrustRef_trust));
|
|
}
|
|
}
|
|
}
|