objc2-authentication-services 0.3.2

Bindings to the AuthenticationServices framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

/// [Apple's documentation](https://developer.apple.com/documentation/authenticationservices/asauthorizationproviderauthorizationoperation?language=objc)
// NS_TYPED_EXTENSIBLE_ENUM
pub type ASAuthorizationProviderAuthorizationOperation = NSString;

extern "C" {
    /// Operation which is invoked when the extension configuration is removed from the system.
    ///
    /// See also [Apple's documentation](https://developer.apple.com/documentation/authenticationservices/asauthorizationproviderauthorizationoperationconfigurationremoved?language=objc)
    pub static ASAuthorizationProviderAuthorizationOperationConfigurationRemoved:
        &'static ASAuthorizationProviderAuthorizationOperation;
}

extern "C" {
    /// Operation which is invoked when a request is sent direct to the extension instead of loaded in an ASWebAuthenticationSession.
    ///
    /// See also [Apple's documentation](https://developer.apple.com/documentation/authenticationservices/asauthorizationproviderauthorizationoperationdirectrequest?language=objc)
    pub static ASAuthorizationProviderAuthorizationOperationDirectRequest:
        &'static ASAuthorizationProviderAuthorizationOperation;
}

extern_protocol!(
    /// [Apple's documentation](https://developer.apple.com/documentation/authenticationservices/asauthorizationproviderextensionauthorizationrequesthandler?language=objc)
    pub unsafe trait ASAuthorizationProviderExtensionAuthorizationRequestHandler:
        NSObjectProtocol + MainThreadOnly
    {
        /// Called to begin the authorization. It’s called on the main thread.
        #[unsafe(method(beginAuthorizationWithRequest:))]
        #[unsafe(method_family = none)]
        unsafe fn beginAuthorizationWithRequest(
            &self,
            request: &ASAuthorizationProviderExtensionAuthorizationRequest,
        );

        /// Called when the authorization was canceled by authorization service. It’s called on the main thread.
        #[optional]
        #[unsafe(method(cancelAuthorizationWithRequest:))]
        #[unsafe(method_family = none)]
        unsafe fn cancelAuthorizationWithRequest(
            &self,
            request: &ASAuthorizationProviderExtensionAuthorizationRequest,
        );
    }
);

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/authenticationservices/asauthorizationproviderextensionauthorizationrequest?language=objc)
    #[unsafe(super(NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct ASAuthorizationProviderExtensionAuthorizationRequest;
);

extern_conformance!(
    unsafe impl NSObjectProtocol for ASAuthorizationProviderExtensionAuthorizationRequest {}
);

impl ASAuthorizationProviderExtensionAuthorizationRequest {
    extern_methods!(
        /// Call when authorization was not handled.
        #[unsafe(method(doNotHandle))]
        #[unsafe(method_family = none)]
        pub unsafe fn doNotHandle(&self);

        /// Call when authorization needs to be canceled from some reason (for example user pressed Cancel button).
        #[unsafe(method(cancel))]
        #[unsafe(method_family = none)]
        pub unsafe fn cancel(&self);

        /// Call when authorization succeeded without any output.
        #[unsafe(method(complete))]
        #[unsafe(method_family = none)]
        pub unsafe fn complete(&self);

        /// Call when authorization succeeded with an authorization tokens stored in HTTP headers.
        #[unsafe(method(completeWithHTTPAuthorizationHeaders:))]
        #[unsafe(method_family = none)]
        pub unsafe fn completeWithHTTPAuthorizationHeaders(
            &self,
            http_authorization_headers: &NSDictionary<NSString, NSString>,
        );

        /// Call when authorization succeeded with a HTTP response.
        #[unsafe(method(completeWithHTTPResponse:httpBody:))]
        #[unsafe(method_family = none)]
        pub unsafe fn completeWithHTTPResponse_httpBody(
            &self,
            http_response: &NSHTTPURLResponse,
            http_body: Option<&NSData>,
        );

        #[cfg(feature = "ASAuthorizationProviderExtensionAuthorizationResult")]
        /// Call when authorization succeeded with
        ///
        /// See: ASAuthorizationProviderExtensionAuthorizationResult.
        #[unsafe(method(completeWithAuthorizationResult:))]
        #[unsafe(method_family = none)]
        pub unsafe fn completeWithAuthorizationResult(
            &self,
            authorization_result: &ASAuthorizationProviderExtensionAuthorizationResult,
        );

        /// Call when authorization failed with an error.
        #[unsafe(method(completeWithError:))]
        #[unsafe(method_family = none)]
        pub unsafe fn completeWithError(&self, error: &NSError);

        #[cfg(feature = "block2")]
        /// Asks authorization service to show extension view controller. If the controller cannot be shown an error is returned.
        #[unsafe(method(presentAuthorizationViewControllerWithCompletion:))]
        #[unsafe(method_family = none)]
        pub unsafe fn presentAuthorizationViewControllerWithCompletion(
            &self,
            completion: &block2::DynBlock<dyn Fn(Bool, *mut NSError)>,
        );

        /// Request URL with all components.
        #[unsafe(method(url))]
        #[unsafe(method_family = none)]
        pub unsafe fn url(&self) -> Retained<NSURL>;

        /// Operation to be executed by the extension.
        #[unsafe(method(requestedOperation))]
        #[unsafe(method_family = none)]
        pub unsafe fn requestedOperation(
            &self,
        ) -> Retained<ASAuthorizationProviderAuthorizationOperation>;

        /// Request HTTP headers.
        #[unsafe(method(httpHeaders))]
        #[unsafe(method_family = none)]
        pub unsafe fn httpHeaders(&self) -> Retained<NSDictionary<NSString, NSString>>;

        /// Request body.
        #[unsafe(method(httpBody))]
        #[unsafe(method_family = none)]
        pub unsafe fn httpBody(&self) -> Retained<NSData>;

        /// Realm.
        #[unsafe(method(realm))]
        #[unsafe(method_family = none)]
        pub unsafe fn realm(&self) -> Retained<NSString>;

        /// Extension data from extension configuration provided by MDM stored as a property-list.
        #[unsafe(method(extensionData))]
        #[unsafe(method_family = none)]
        pub unsafe fn extensionData(&self) -> Retained<NSDictionary>;

        /// Identification of the calling application.
        #[unsafe(method(callerBundleIdentifier))]
        #[unsafe(method_family = none)]
        pub unsafe fn callerBundleIdentifier(&self) -> Retained<NSString>;

        /// Authorization options.
        #[unsafe(method(authorizationOptions))]
        #[unsafe(method_family = none)]
        pub unsafe fn authorizationOptions(&self) -> Retained<NSDictionary>;

        /// Indicates whether the calling application is managed.
        #[unsafe(method(isCallerManaged))]
        #[unsafe(method_family = none)]
        pub unsafe fn isCallerManaged(&self) -> bool;

        /// Team identifier of the calling application.
        #[unsafe(method(callerTeamIdentifier))]
        #[unsafe(method_family = none)]
        pub unsafe fn callerTeamIdentifier(&self) -> Retained<NSString>;

        /// Localized display name of the calling application.
        #[unsafe(method(localizedCallerDisplayName))]
        #[unsafe(method_family = none)]
        pub unsafe fn localizedCallerDisplayName(&self) -> Retained<NSString>;

        /// Audit token of the calling application.
        #[unsafe(method(callerAuditToken))]
        #[unsafe(method_family = none)]
        pub unsafe fn callerAuditToken(&self) -> Retained<NSData>;

        /// Indicates whether the authorization user interface is enabled.
        ///
        /// If user interface is not enabled, then the authorization will fail with
        ///
        /// See: ASAuthorizationErrorNotInteractive if it attempts to display the authorization user interface via
        ///
        /// See: presentAuthorizationViewControllerWithCompletion.
        #[unsafe(method(isUserInterfaceEnabled))]
        #[unsafe(method_family = none)]
        pub unsafe fn isUserInterfaceEnabled(&self) -> bool;

        #[cfg(feature = "ASAuthorizationProviderExtensionLoginManager")]
        /// The login manager to interface with the Platform SSO configuration.
        #[unsafe(method(loginManager))]
        #[unsafe(method_family = none)]
        pub unsafe fn loginManager(
            &self,
        ) -> Option<Retained<ASAuthorizationProviderExtensionLoginManager>>;
    );
}

/// Methods declared on superclass `NSObject`.
impl ASAuthorizationProviderExtensionAuthorizationRequest {
    extern_methods!(
        #[unsafe(method(init))]
        #[unsafe(method_family = init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[unsafe(method(new))]
        #[unsafe(method_family = new)]
        pub unsafe fn new() -> Retained<Self>;
    );
}