<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: When using upload/uploadsession I get a sessionDeinitialized from alamofire in Swift in Dropbox API Support &amp; Feedback</title>
    <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/When-using-upload-uploadsession-I-get-a-sessionDeinitialized/m-p/677491#M30523</link>
    <description>&lt;P&gt;All the examples I have seen so far do not mention keeping a session alive.&lt;/P&gt;&lt;P&gt;An example from &lt;A href="https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/td-p/151872" target="_self"&gt;2015.&lt;/A&gt;&lt;/P&gt;&lt;P&gt;The github &lt;A href="https://dropbox.github.io/SwiftyDropbox/api-docs/latest/#upload-style-request" target="_self"&gt;docs&lt;/A&gt; to try out the api.&lt;/P&gt;&lt;P&gt;A github &lt;A href="https://gist.github.com/smarx/4bd20487ddf37a5942bf" target="_self"&gt;gist&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When I try to add `await` to the uploadstart all I get is "No 'async' operations occur within 'await' expression"&amp;nbsp; or when I add it inside for the appendV2 I get "Cannot pass function of type '(Files.UploadSessionStartResult?, CallError&amp;lt;Files.UploadSessionStartError&amp;gt;?) async -&amp;gt; Void' to parameter expecting synchronous function type"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Even tried the create folder and download&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;func createFolder(path: String) {
        dbxClient.files.createFolderV2(path: path).response { response, error in
            if let response = response {
                print(response)
            } else if let error = error {
                print(error)
            }
        }
    }
    
    func downloadFile(path: String) {
        dbxClient.files.download(path: path).response { response, error in
            if let response = response {
                print(response)
            } else if let error = error {
                print(error)
            }
        }
    }&lt;/LI-CODE&gt;&lt;P&gt;What am I missing?&lt;/P&gt;</description>
    <pubDate>Tue, 18 Apr 2023 04:09:51 GMT</pubDate>
    <dc:creator>Michael-jamf</dc:creator>
    <dc:date>2023-04-18T04:09:51Z</dc:date>
    <item>
      <title>When using upload/uploadsession I get a sessionDeinitialized from alamofire in Swift</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/When-using-upload-uploadsession-I-get-a-sessionDeinitialized/m-p/677320#M30507</link>
      <description>&lt;P&gt;When I try to send a test file using either upload or uploadSession I get a sessionDeinitialized error.&lt;/P&gt;&lt;P&gt;I edit the code to generate a file that is larger or smaller than the chunksize to test both of the conditions. This is all the code I have for dropbox. the testDropbox function is referenced in the ContentView where I pass the refreshtoken and appkeysecret. My team has this working in python, all with the same basic functionality.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the code&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;import Foundation
import SwiftyDropbox

func testDropbox(token: String, secret: String){
    let session = DropboxManager(refreshToken: token, appKeySecret: secret)
    session.upload(file: NSHomeDirectory() + "/tmp/test2.txt", to: "/uploads")
}

func createDropboxToken(refreshToken:String, appKey:String) -&amp;gt; String {
    
    // Create the command for refreshing the token
    let dbRefreshCMD = "curl https://api.dropbox.com/oauth2/token -s -d grant_type=refresh_token -d refresh_token=\"\(refreshToken)\" -u \"\(appKey)\""
    
    // Execute the command and parse the response
    let task = Process()
    let outputPipe = Pipe()
    task.launchPath = "/bin/sh"
    task.arguments = ["-c", dbRefreshCMD]
    task.standardOutput = outputPipe
    task.launch()
    let outputData = outputPipe.fileHandleForReading.readDataToEndOfFile()
    let res = try! JSONSerialization.jsonObject(with: outputData, options: []) as! [String: Any]
    print(res)
    
    // Print a message indicating that the Dropbox access token has been updated
    print("\nUpdated Dropbox Access Token")
    
    // Create a DropboxClient using the new access token and return it
    let dropboxToken = res["access_token"] as! String
    print(dropboxToken)
    return dropboxToken
}

struct DropboxManager {
    let dbxClient: DropboxClient
    let accessToken: String
    let chunkSize: UInt64
    
    init(refreshToken dbToken: String, appKeySecret dbKey: String) {
        chunkSize = (4 * (1024 * 1024))
        accessToken = createDropboxToken(refreshToken: dbToken, appKey: dbKey)
//        dbxClient = DropboxClient(accessToken: self.accessToken)
        dbxClient = DropboxClient(accessToken: self.accessToken)
        
    }
    
    func upload(file filePath: String, to dbxLocation: String) {
        let fileURL = URL(filePath: filePath)
        let fileName = fileURL.lastPathComponent
        let randomSize = 5 * 1024 * 1024
        if (FileManager.default.createFile(atPath: filePath, contents: Data(count: randomSize), attributes: nil)) {
            print("File created successfully.")
        } else {
            print("File not created.")
        }
        let fileSize = try? FileManager.default.attributesOfItem(atPath: filePath)[.size] as? uint64
//        Check to see if file is smaller than chunksize
//        FIXME: now getting this error ---- Only get this error if I add user to dropboxclient creation in init
//        [request-id 5e4b4893ca1b4ace944138a9a1f4f399] Bad Input: Error in call to API function "files/upload_session/start": Unexpected select user header. Your app does not have permission to use this feature
        if fileSize! &amp;lt; chunkSize {
            dbxClient.files.upload(path: "\(dbxLocation)/\(fileName)", input: fileURL).response(completionHandler: { response, error in
                if let response = response {
                    print("File uploaded: \(response)")
                } else {
                    print("Error upload session: \(error!)")
                }
            })
            .progress { progressData in print(progressData) }
            print("small file")
        } else {
//            start the upload session
            let session = dbxClient.files.uploadSessionStart(input: fileURL)
                .response(completionHandler: { response, error in
                    if let result = response {
                        print(result)
                        var offset: UInt64 = 0
//                        Append chunks to file
                        while (offset &amp;lt;= (fileSize! - self.chunkSize)) {
                            //FIXME: sessionDeinitialized
                            self.dbxClient.files.uploadSessionAppendV2(cursor: Files.UploadSessionCursor(sessionId: result.sessionId, offset: offset), input: fileURL)
                                .response {response , error in
                                    if let response = response {
                                        print("File appended: \(response)")
                                    } else {
                                        print("Error appending data to file upload session: \(error!)")
                                    }
                                }
                                .progress { progressData in print(progressData) }
                            offset += self.chunkSize
                        }
//                        Finish upload with last chunk
                        self.dbxClient.files.uploadSessionFinish(cursor: Files.UploadSessionCursor(sessionId: result.sessionId, offset: fileSize!), commit: Files.CommitInfo(path: "\(dbxLocation)/\(fileName)"), input: fileURL)
                            .response { response, error in
                                if let result = response {
                                    print(result)
                                } else {
                                    print(error!)
                                }
                            }
                            .progress { progressData in print(progressData) }
                    } else {
                        // the call failed
                        print(error!)
                    }
                })
        }
    }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Apr 2023 16:15:23 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/When-using-upload-uploadsession-I-get-a-sessionDeinitialized/m-p/677320#M30507</guid>
      <dc:creator>Michael-jamf</dc:creator>
      <dc:date>2023-04-17T16:15:23Z</dc:date>
    </item>
    <item>
      <title>Re: When using upload/uploadsession I get a sessionDeinitialized from alamofire in Swift</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/When-using-upload-uploadsession-I-get-a-sessionDeinitialized/m-p/677382#M30515</link>
      <description>&lt;P&gt;According to &lt;A href="https://alamofire.github.io/Alamofire/Enums/AFError.html#/s:9Alamofire7AFErrorO20sessionDeinitializedyA2CmF" target="_self"&gt;the Alamofire documentation, sessionDeinitialized means&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;Session which issued the Request was deinitialized, most likely because its reference went out of scope.&lt;/BLOCKQUOTE&gt;
&lt;P&gt;There's also &lt;A href="https://github.com/Alamofire/Alamofire/blob/master/Source/AFError.swift#L684" target="_blank"&gt;a description about it here:&lt;/A&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;Session was invalidated without error, so it was likely deinitialized unexpectedly. \&lt;BR /&gt;Be sure to retain a reference to your Session for the duration of your requests.&lt;/BLOCKQUOTE&gt;
&lt;P&gt;So, it sounds like your client object was released before the request could be completed; to fix that you'd need to update your code to keep your client object around while the request(s) complete. (Note that the requests are performed asynchronously.)&lt;/P&gt;</description>
      <pubDate>Mon, 17 Apr 2023 18:30:42 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/When-using-upload-uploadsession-I-get-a-sessionDeinitialized/m-p/677382#M30515</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2023-04-17T18:30:42Z</dc:date>
    </item>
    <item>
      <title>Re: When using upload/uploadsession I get a sessionDeinitialized from alamofire in Swift</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/When-using-upload-uploadsession-I-get-a-sessionDeinitialized/m-p/677491#M30523</link>
      <description>&lt;P&gt;All the examples I have seen so far do not mention keeping a session alive.&lt;/P&gt;&lt;P&gt;An example from &lt;A href="https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/Swift-API-v2-Example-of-uploading-a-file-using/td-p/151872" target="_self"&gt;2015.&lt;/A&gt;&lt;/P&gt;&lt;P&gt;The github &lt;A href="https://dropbox.github.io/SwiftyDropbox/api-docs/latest/#upload-style-request" target="_self"&gt;docs&lt;/A&gt; to try out the api.&lt;/P&gt;&lt;P&gt;A github &lt;A href="https://gist.github.com/smarx/4bd20487ddf37a5942bf" target="_self"&gt;gist&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When I try to add `await` to the uploadstart all I get is "No 'async' operations occur within 'await' expression"&amp;nbsp; or when I add it inside for the appendV2 I get "Cannot pass function of type '(Files.UploadSessionStartResult?, CallError&amp;lt;Files.UploadSessionStartError&amp;gt;?) async -&amp;gt; Void' to parameter expecting synchronous function type"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Even tried the create folder and download&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;func createFolder(path: String) {
        dbxClient.files.createFolderV2(path: path).response { response, error in
            if let response = response {
                print(response)
            } else if let error = error {
                print(error)
            }
        }
    }
    
    func downloadFile(path: String) {
        dbxClient.files.download(path: path).response { response, error in
            if let response = response {
                print(response)
            } else if let error = error {
                print(error)
            }
        }
    }&lt;/LI-CODE&gt;&lt;P&gt;What am I missing?&lt;/P&gt;</description>
      <pubDate>Tue, 18 Apr 2023 04:09:51 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/When-using-upload-uploadsession-I-get-a-sessionDeinitialized/m-p/677491#M30523</guid>
      <dc:creator>Michael-jamf</dc:creator>
      <dc:date>2023-04-18T04:09:51Z</dc:date>
    </item>
    <item>
      <title>Re: When using upload/uploadsession I get a sessionDeinitialized from alamofire in Swift</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/When-using-upload-uploadsession-I-get-a-sessionDeinitialized/m-p/677630#M30525</link>
      <description>&lt;P&gt;This isn't a matter of changing your code to use 'async'/'await' operations. This issue occurs when the client variable itself is deinitialized, which severs the network connection performing the API call.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In typical cases, the app would use the authorizeFromControllerV2 method and get the client from the authorizedClient singleton like in the &lt;A href="https://github.com/dropbox/SwiftyDropbox#try-some-api-requests" target="_blank"&gt;readme&lt;/A&gt;, which would make this easier. I see you're not using that flow though; you can certainly create and manage your own client object as you do, but you'll need to make sure you keep a reference to it for the entire lifetime of the requests so that they can complete successfully.&lt;/P&gt;</description>
      <pubDate>Tue, 18 Apr 2023 14:53:31 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/When-using-upload-uploadsession-I-get-a-sessionDeinitialized/m-p/677630#M30525</guid>
      <dc:creator>Greg-DB</dc:creator>
      <dc:date>2023-04-18T14:53:31Z</dc:date>
    </item>
    <item>
      <title>Re: When using upload/uploadsession I get a sessionDeinitialized from alamofire in Swift</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/When-using-upload-uploadsession-I-get-a-sessionDeinitialized/m-p/677779#M30531</link>
      <description>&lt;P&gt;Ah gotcha. I was reading the doc and it seemed like if I just used DropboxClient with a shortlived token, it would do that. I have since rewritten the code, different from how the docs have it since I was not having any luck getting that to work. Edited this &lt;A href="https://stackoverflow.com/questions/71531226/how-to-authenticate-using-the-swiftydropbox-api-in-a-swiftui-project" target="_self"&gt;code&lt;/A&gt; to be macOS.&lt;BR /&gt;&lt;BR /&gt;Now to figure out why it creates a duplicate window. Think it has something to do with the NSView but not sure.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For anyone that comes&amp;nbsp; across this. Here is my code, it works but has that duplicate app window I mentioned earlier.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;//ContentView.swift
import SwiftUI
import SwiftyDropbox
import AppKit

struct ContentView: View {
    
    @State var isShown = false
    
    var body: some View {
        HStack {
            VStack {
                    
                    Button(action: {
                        self.isShown.toggle()
                    }) {
                        Text("Login to Dropbox")
                            .padding(.top)
                    }

                    DropboxView(isShown: $isShown)
                    
                    Button {
                        if let client = DropboxClientsManager.authorizedClient {
                            print("successful login")
                        } else {
                            print("Error")
                        }
                    } label: {
                        Text("Test Login")
                            .padding(.bottom)
                            
                    }
                    
                }
                .onOpenURL { url in
                    let oauthCompletion: DropboxOAuthCompletion = {
                        if let authResult = $0 {
                            switch authResult {
                            case .success:
                                print("Success! User is logged into DropboxClientsManager.")
                                
                            case .cancel:
                                print("Authorization flow was manually canceled by user!")
                            case .error(_, let description):
                                print("Error: \(String(describing: description))")
                            }
                            NSApplication.shared.setActivationPolicy(.prohibited)
                        }
                    }
                    DropboxClientsManager.handleRedirectURL(url, completion: oauthCompletion)
            }
        }
    }
}

struct DropboxView: NSViewControllerRepresentable {
    
    typealias NSViewControllerType = NSViewController
    
    @Binding var isShown: Bool
    
    func updateNSViewController(_ nsViewController: NSViewController, context: Context) {
        if isShown {
            let scopeRequest = ScopeRequest(scopeType: .user, scopes: ["account_info.read", "files.metadata.write", "files.metadata.read", "files.content.write", "files.content.read"], includeGrantedScopes: false)
            
            DropboxClientsManager.authorizeFromControllerV2(
                sharedApplication: NSApplication.shared,
                controller: nsViewController,
                loadingStatusDelegate: nil,
                openURL: { (url: URL) -&amp;gt; Void in NSWorkspace.shared.open(url) },
                scopeRequest: scopeRequest)
        }
    }
    
    func makeNSViewController(context _: Self.Context) -&amp;gt; NSViewController {
        return NSViewController(nibName: "DBViewController", bundle: nil)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;//YOURApp.swift
import SwiftUI
import SwiftyDropbox

@main
struct dropboxClientApp: App {
    
    init() {
        DropboxClientsManager.setupWithAppKeyDesktop("app_key")
    }
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then you need to make a file type of View. I called mine "DBViewController" in the contentview file at the bottom. After that follow these instructions&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Make sure that you have a nib file named DBViewController.xib in your Xcode project.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Open the nib file, select the File's Owner object, and set its class to NSViewController in the Identity Inspector.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Connect the view outlet of the File's Owner to the view object in the nib file.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;In the makeNSViewController function of DropboxView, instantiate the DBViewController from the nib file using the init?(nibName:bundle:) initializer.&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;</description>
      <pubDate>Wed, 19 Apr 2023 02:37:56 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/When-using-upload-uploadsession-I-get-a-sessionDeinitialized/m-p/677779#M30531</guid>
      <dc:creator>Michael-jamf</dc:creator>
      <dc:date>2023-04-19T02:37:56Z</dc:date>
    </item>
    <item>
      <title>Re: When using upload/uploadsession I get a sessionDeinitialized from alamofire in Swift</title>
      <link>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/When-using-upload-uploadsession-I-get-a-sessionDeinitialized/m-p/678053#M30546</link>
      <description>&lt;P&gt;Okay managed to get it working with the examples that Dropbox has on their github. With no duplicate views. I think that was something on my end where the app wasnt actually closed or something.&lt;/P&gt;&lt;P&gt;This is for MacOS. If you want to use iOS I would recommend looking &lt;A href="https://stackoverflow.com/questions/71531226/how-to-authenticate-using-the-swiftydropbox-api-in-a-swiftui-project" target="_self"&gt;here&lt;/A&gt;. It worked out of the box for iOS.&lt;/P&gt;&lt;P&gt;ContentView.swift&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;import SwiftUI
import SwiftyDropbox
import AppKit

struct ContentView: View {

    func myButtonInControllerPressed() {
        // OAuth 2 code flow with PKCE that grants a short-lived token with scopes, and performs refreshes of the token automatically.
        let scopeRequest = ScopeRequest(scopeType: .user, scopes: ["account_info.read"], includeGrantedScopes: false)
        DropboxClientsManager.authorizeFromControllerV2(
            sharedApplication: NSApplication.shared,
            controller: nil,
            loadingStatusDelegate: nil,
            openURL: {(url: URL) -&amp;gt; Void in NSWorkspace.shared.open(url)},
            scopeRequest: scopeRequest
        )
    }
    
    var body: some View {
        VStack {
            Button {
                myButtonInControllerPressed()
            } label: {
                Text("Test Dropbox Auth")
            }
        }.frame(maxWidth: .infinity, maxHeight: .infinity)

    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;YOURAPPNAMEapp.swift&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;import SwiftUI
import SwiftyDropbox

@main
struct dropboxClientApp: App {
    
    @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

class AppDelegate: NSObject, NSApplicationDelegate {
    func applicationDidFinishLaunching(_ aNotification: Notification) {
        DropboxClientsManager.setupWithAppKeyDesktop("app-key")
        NSAppleEventManager.shared().setEventHandler(self,
                                                         andSelector: #selector(handleGetURLEvent),
                                                         forEventClass: AEEventClass(kInternetEventClass),
                                                         andEventID: AEEventID(kAEGetURL))
    }
    
    @objc
    func handleGetURLEvent(_ event: NSAppleEventDescriptor?, replyEvent: NSAppleEventDescriptor?) {
        if let aeEventDescriptor = event?.paramDescriptor(forKeyword: AEKeyword(keyDirectObject)) {
            if let urlStr = aeEventDescriptor.stringValue {
                let url = URL(string: urlStr)!
                let oauthCompletion: DropboxOAuthCompletion = {
                    if let authResult = $0 {
                        switch authResult {
                        case .success:
                            print("Success! User is logged into Dropbox.")
                        case .cancel:
                            print("Authorization flow was manually canceled by user!")
                        case .error(_, let description):
                            print("Error: \(String(describing: description))")
                        }
                    }
                }
                DropboxClientsManager.handleRedirectURL(url, completion: oauthCompletion)
                // this brings your application back the foreground on redirect
                NSApp.activate(ignoringOtherApps: true)
            }
        }
    }
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Apr 2023 19:32:11 GMT</pubDate>
      <guid>https://www.dropboxforum.com/t5/Dropbox-API-Support-Feedback/When-using-upload-uploadsession-I-get-a-sessionDeinitialized/m-p/678053#M30546</guid>
      <dc:creator>Michael-jamf</dc:creator>
      <dc:date>2023-04-19T19:32:11Z</dc:date>
    </item>
  </channel>
</rss>

