CPF/CPF.Mac/Mac/Foundation/NSUrlDownload.cs
2023-11-21 23:05:03 +08:00

227 lines
6.7 KiB
C#

using CPF.Mac.ObjCRuntime;
using System;
using System.ComponentModel;
namespace CPF.Mac.Foundation
{
[Register("NSURLDownload", true)]
public class NSUrlDownload : NSObject
{
private static readonly IntPtr selRequestHandle = Selector.GetHandle("request");
private static readonly IntPtr selResumeDataHandle = Selector.GetHandle("resumeData");
private static readonly IntPtr selDeletesFileUponFailureHandle = Selector.GetHandle("deletesFileUponFailure");
private static readonly IntPtr selSetDeletesFileUponFailure_Handle = Selector.GetHandle("setDeletesFileUponFailure:");
private static readonly IntPtr selCanResumeDownloadDecodedWithEncodingMIMEType_Handle = Selector.GetHandle("canResumeDownloadDecodedWithEncodingMIMEType:");
private static readonly IntPtr selInitWithRequestDelegate_Handle = Selector.GetHandle("initWithRequest:delegate:");
private static readonly IntPtr selInitWithResumeDataDelegatePath_Handle = Selector.GetHandle("initWithResumeData:delegate:path:");
private static readonly IntPtr selCancelHandle = Selector.GetHandle("cancel");
private static readonly IntPtr selSetDestinationAllowOverwrite_Handle = Selector.GetHandle("setDestination:allowOverwrite:");
private static readonly IntPtr class_ptr = Class.GetHandle("NSURLDownload");
private object __mt_Request_var;
private object __mt_ResumeData_var;
public override IntPtr ClassHandle => class_ptr;
public virtual NSUrlRequest Request
{
[Export("request")]
get
{
return (NSUrlRequest)(__mt_Request_var = ((!IsDirectBinding) ? ((NSUrlRequest)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selRequestHandle))) : ((NSUrlRequest)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(base.Handle, selRequestHandle)))));
}
}
public virtual NSData ResumeData
{
[Export("resumeData")]
get
{
return (NSData)(__mt_ResumeData_var = ((!IsDirectBinding) ? ((NSData)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, selResumeDataHandle))) : ((NSData)Runtime.GetNSObject(Messaging.IntPtr_objc_msgSend(base.Handle, selResumeDataHandle)))));
}
}
public virtual bool DeletesFileUponFailure
{
[Export("deletesFileUponFailure")]
get
{
if (IsDirectBinding)
{
return Messaging.bool_objc_msgSend(base.Handle, selDeletesFileUponFailureHandle);
}
return Messaging.bool_objc_msgSendSuper(base.SuperHandle, selDeletesFileUponFailureHandle);
}
[Export("setDeletesFileUponFailure:")]
set
{
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_bool(base.Handle, selSetDeletesFileUponFailure_Handle, value);
}
else
{
Messaging.void_objc_msgSendSuper_bool(base.SuperHandle, selSetDeletesFileUponFailure_Handle, value);
}
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
[Export("init")]
public NSUrlDownload()
: base(NSObjectFlag.Empty)
{
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend(base.Handle, Selector.Init);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper(base.SuperHandle, Selector.Init);
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
[Export("initWithCoder:")]
public NSUrlDownload(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 NSUrlDownload(NSObjectFlag t)
: base(t)
{
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
public NSUrlDownload(IntPtr handle)
: base(handle)
{
}
[Export("canResumeDownloadDecodedWithEncodingMIMEType:")]
public static bool CanResumeDownloadDecodedWithEncodingMimeType(string mimeType)
{
if (mimeType == null)
{
throw new ArgumentNullException("mimeType");
}
IntPtr intPtr = NSString.CreateNative(mimeType);
bool result = Messaging.bool_objc_msgSend_IntPtr(class_ptr, selCanResumeDownloadDecodedWithEncodingMIMEType_Handle, intPtr);
NSString.ReleaseNative(intPtr);
return result;
}
[Export("initWithRequest:delegate:")]
public NSUrlDownload(NSUrlRequest request, NSObject delegate1)
: base(NSObjectFlag.Empty)
{
if (request == null)
{
throw new ArgumentNullException("request");
}
if (delegate1 == null)
{
throw new ArgumentNullException("delegate1");
}
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr(base.Handle, selInitWithRequestDelegate_Handle, request.Handle, delegate1.Handle);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr_IntPtr(base.SuperHandle, selInitWithRequestDelegate_Handle, request.Handle, delegate1.Handle);
}
}
[Export("initWithResumeData:delegate:path:")]
public NSUrlDownload(NSData resumeData, NSObject delegate1, string path)
: base(NSObjectFlag.Empty)
{
if (resumeData == null)
{
throw new ArgumentNullException("resumeData");
}
if (delegate1 == null)
{
throw new ArgumentNullException("delegate1");
}
if (path == null)
{
throw new ArgumentNullException("path");
}
IntPtr intPtr = NSString.CreateNative(path);
if (IsDirectBinding)
{
base.Handle = Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr_IntPtr(base.Handle, selInitWithResumeDataDelegatePath_Handle, resumeData.Handle, delegate1.Handle, intPtr);
}
else
{
base.Handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr_IntPtr_IntPtr(base.SuperHandle, selInitWithResumeDataDelegatePath_Handle, resumeData.Handle, delegate1.Handle, intPtr);
}
NSString.ReleaseNative(intPtr);
}
[Export("cancel")]
public virtual void Cancel()
{
if (IsDirectBinding)
{
Messaging.void_objc_msgSend(base.Handle, selCancelHandle);
}
else
{
Messaging.void_objc_msgSendSuper(base.SuperHandle, selCancelHandle);
}
}
[Export("setDestination:allowOverwrite:")]
public virtual void SetDestination(string path, bool allowOverwrite)
{
if (path == null)
{
throw new ArgumentNullException("path");
}
IntPtr intPtr = NSString.CreateNative(path);
if (IsDirectBinding)
{
Messaging.void_objc_msgSend_IntPtr_bool(base.Handle, selSetDestinationAllowOverwrite_Handle, intPtr, allowOverwrite);
}
else
{
Messaging.void_objc_msgSendSuper_IntPtr_bool(base.SuperHandle, selSetDestinationAllowOverwrite_Handle, intPtr, allowOverwrite);
}
NSString.ReleaseNative(intPtr);
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
if (base.Handle == IntPtr.Zero)
{
__mt_Request_var = null;
__mt_ResumeData_var = null;
}
}
}
}