]> git.r.bdr.sh - rbdr/captura/blobdiff - Captura/Data/CapturaURLDecoder.swift
Add license and contributing
[rbdr/captura] / Captura / Data / CapturaURLDecoder.swift
index 3fa6412849a626fcef87e0485706a42fed9a7ac0..cbb8a055c027d2ccf6f197e82e1733c26ac81a31 100644 (file)
@@ -1,5 +1,20 @@
-import Foundation
+/*
+ Copyright (C) 2024 Rubén Beltrán del Río
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
 
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see https://captura.tranquil.systems.
+ */
+import Foundation
 
 protocol ConfigureActionProtocol {
   var action: String { get }
@@ -25,6 +40,8 @@ protocol RecordActionProtocol {
   var backendOutput: OutputFormatSetting? { get }
   var keepLocalFiles: Bool? { get }
   var autoStart: Bool? { get }
+  var skipBackend: Bool { get }
+  var maxLength: Int? { get }
 }
 
 // The concrete implementations
@@ -51,6 +68,8 @@ struct RecordAction: RecordActionProtocol {
   var backendOutput: OutputFormatSetting?
   var keepLocalFiles: Bool?
   var autoStart: Bool?
+  var skipBackend: Bool
+  var maxLength: Int?
 }
 
 enum CapturaAction {
@@ -113,15 +132,28 @@ struct CapturaURLDecoder {
         let keepLocalFiles = Bool(paramsDict["keep_local_files"] as? String ?? "")
         let outputs = OutputFormatSetting(paramsDict["outputs"] as? String ?? "")
         var backendOutput = OutputFormatSetting(paramsDict["backend_output"] as? String ?? "")
+        let autoStart = Bool(paramsDict["auto_start"] as? String ?? "")
+        var maxLength = Int(paramsDict["max_length"] as? String ?? "")
         
         if fps != nil {
           fps = min(10, max(4, fps!))
         }
         
+        if maxLength != nil {
+          maxLength = min(300, max(1, fps!))
+        }
+        
         if backendOutput == .all {
           backendOutput = .gifOnly
         }
         
+        var skipBackend = false
+        if let backendString = paramsDict["backend"] as? String {
+          if backendString == "" {
+            skipBackend = true
+          }
+        }
+        
         return .record(RecordAction(
           action: action,
           x: x,
@@ -134,7 +166,10 @@ struct CapturaURLDecoder {
           outputs: outputs,
           backend: backend,
           backendOutput: backendOutput,
-          keepLocalFiles: keepLocalFiles
+          keepLocalFiles: keepLocalFiles,
+          autoStart: autoStart,
+          skipBackend: skipBackend,
+          maxLength: maxLength
         ))
 
       default: