├── QlikSenseTaskSource-2.X ├── QlikSenseTask │ ├── obj │ │ ├── Debug │ │ │ ├── build.force │ │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ │ │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ │ │ ├── QlikSenseTask.exe │ │ │ ├── QlikSenseTask.pdb │ │ │ ├── QlikSenseTask.csproj.AssemblyReference.cache │ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ │ ├── QlikSenseTask.csprojResolveAssemblyReference.cache │ │ │ ├── .NETFramework,Version=v4.5.AssemblyAttributes.cs │ │ │ └── QlikSenseTask.csproj.FileListAbsolute.txt │ │ └── Release │ │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ │ │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ │ │ ├── QlikSenseTask.exe │ │ │ ├── QlikSenseTask.pdb │ │ │ ├── QlikSenseTask.csproj.AssemblyReference.cache │ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ │ ├── QlikSenseTask.csprojResolveAssemblyReference.cache │ │ │ ├── .NETFramework,Version=v4.5.AssemblyAttributes.cs │ │ │ └── QlikSenseTask.csproj.FileListAbsolute.txt │ ├── bin │ │ ├── Release │ │ │ ├── Reload task of test_2017_03_17_03_20_52.log │ │ │ ├── config.txt │ │ │ ├── QlikSenseTask.exe │ │ │ ├── QlikSenseTask.pdb │ │ │ ├── Newtonsoft.Json.dll │ │ │ ├── QlikSenseTask.vshost.exe │ │ │ ├── QlikSenseTask.exe.config │ │ │ ├── QlikSenseTask.vshost.exe.config │ │ │ ├── QlikSenseTask.vshost.exe.manifest │ │ │ └── Reload task of test_2017_03_17_03_22_16.log │ │ └── Debug │ │ │ ├── config.txt │ │ │ ├── QlikSenseTask.exe │ │ │ ├── QlikSenseTask.pdb │ │ │ ├── Newtonsoft.Json.dll │ │ │ ├── Newtonsoft.Json.pdb │ │ │ ├── QlikSenseTask.vshost.exe │ │ │ ├── QlikSenseTask.exe.config │ │ │ ├── QlikSenseTask.vshost.exe.config │ │ │ ├── QlikSenseTasklog.log │ │ │ └── QlikSenseTask.vshost.exe.manifest │ ├── App.config │ ├── QlikSenseTask.csproj.user │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── QlikSenseTask.csproj │ ├── Logger.cs │ ├── QlikSenseJSONObjects.cs │ ├── QRSwebclient.cs │ ├── Program.cs │ └── QRSNTLMWebClient.cs ├── QlikSenseTask.v11.suo ├── .vs │ └── QlikSenseTask │ │ └── v14 │ │ └── .suo └── QlikSenseTask.sln ├── QlikSenseTaskSource-3.X ├── .vs │ └── QlikSenseTask │ │ ├── xs │ │ ├── sqlite3 │ │ │ ├── db.lock │ │ │ ├── storage.ide │ │ │ ├── storage.ide-shm │ │ │ └── storage.ide-wal │ │ └── UserPrefs.xml │ │ ├── v14 │ │ └── .suo │ │ └── v16 │ │ └── .suo ├── QlikSenseTask │ ├── bin │ │ ├── Release │ │ │ ├── _2021_10_13_19_10_15.log │ │ │ ├── config.txt │ │ │ ├── QlikSenseTask.ex_ │ │ │ ├── QlikSenseTask.exe │ │ │ ├── QlikSenseTask.pdb │ │ │ ├── Newtonsoft.Json.dll │ │ │ ├── QlikSenseTask.vshost.exe │ │ │ ├── QlikSenseTask.exe.config │ │ │ ├── QlikSenseTask.vshost.exe.config │ │ │ ├── Reload task of test_2021_10_12_20_49_38.log │ │ │ ├── Reload task of test_2021_10_12_20_48_58.log │ │ │ └── Reload task of test_2021_10_13_18_50_20.log │ │ └── Debug │ │ │ ├── Reload task of test3_2021_10_13_18_50_37.log │ │ │ ├── Reload task of test3_2021_10_13_18_51_17.log │ │ │ ├── Reload task of test3_2021_10_13_18_51_45.log │ │ │ ├── Reload task of test3_2021_10_13_18_55_07.log │ │ │ ├── Reload task of test3_2021_10_13_18_59_41.log │ │ │ ├── Reload task of test3_2021_10_13_19_27_20.log │ │ │ ├── Reload task of test3_2021_10_13_19_27_46.log │ │ │ ├── Reload task of test3_2021_10_13_19_28_19.log │ │ │ ├── Reload task of test3_2021_10_13_19_31_03.log │ │ │ ├── Reload task of test3_2021_10_13_19_32_14.log │ │ │ ├── Reload task of test3_2021_10_13_19_37_30.log │ │ │ ├── Reload task of test3_2021_10_13_19_39_09.log │ │ │ ├── Reload task of test3_2021_10_13_19_40_44.log │ │ │ ├── Reload task of test3_2021_10_13_19_45_11.log │ │ │ ├── Reload task of test3_2021_10_13_19_48_08.log │ │ │ ├── config.txt │ │ │ ├── QlikSenseTask.exe │ │ │ ├── QlikSenseTask.pdb │ │ │ ├── Newtonsoft.Json.dll │ │ │ ├── QlikSenseTask.vshost.exe │ │ │ ├── QlikSenseTask.exe.config │ │ │ ├── QlikSenseTask.vshost.exe.config │ │ │ └── QlikSenseTask.vshost.exe.manifest │ ├── obj │ │ ├── Release │ │ │ ├── QlikSenseTask.csproj.CopyComplete │ │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ │ │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ │ │ ├── QlikSenseTask.csproj.CoreCompileInputs.cache │ │ │ ├── QlikSenseTask.exe │ │ │ ├── QlikSenseTask.pdb │ │ │ ├── QlikSenseTask.csprojAssemblyReference.cache │ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ │ ├── .NETFramework,Version=v4.5.AssemblyAttributes.cs │ │ │ ├── .NETFramework,Version=v4.8.AssemblyAttributes.cs │ │ │ ├── .NETFramework,Version=v4.7.2.AssemblyAttributes.cs │ │ │ └── QlikSenseTask.csproj.FileListAbsolute.txt │ │ └── Debug │ │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ │ │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ │ │ ├── QlikSenseTask.csproj.CoreCompileInputs.cache │ │ │ ├── QlikSenseTask.exe │ │ │ ├── QlikSenseTask.pdb │ │ │ ├── QlikSenseTask.csprojAssemblyReference.cache │ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ │ ├── QlikSenseTask.csprojResolveAssemblyReference.cache │ │ │ ├── .NETFramework,Version=v4.5.AssemblyAttributes.cs │ │ │ ├── .NETFramework,Version=v4.8.AssemblyAttributes.cs │ │ │ ├── .NETFramework,Version=v4.7.2.AssemblyAttributes.cs │ │ │ └── QlikSenseTask.csproj.FileListAbsolute.txt │ ├── App.config │ ├── QlikSenseTask.csproj.user │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── QlikSenseTask.csproj │ ├── Logger.cs │ ├── QlikSenseJSONObjects.cs │ ├── QRSwebclient.cs │ └── Program.cs ├── QlikSenseTask.v11.suo └── QlikSenseTask.sln ├── QlikSenseTaskSource-1.X ├── QlikSenseTask │ ├── bin │ │ ├── Release │ │ │ ├── QlikSenseTasklog.log │ │ │ ├── QlikSenseTasklog_2014_12_15_07_51_57.log │ │ │ ├── QlikSenseTasklog_2014_12_15_07_52_04.log │ │ │ ├── QlikSenseTasklog_2014_12_15_07_52_33.log │ │ │ ├── config.txt │ │ │ ├── QlikSenseTask.exe │ │ │ ├── QlikSenseTask.pdb │ │ │ ├── Newtonsoft.Json.dll │ │ │ ├── Newtonsoft.Json.pdb │ │ │ ├── QlikSenseTask.vshost.exe │ │ │ ├── QlikSenseTask.exe.config │ │ │ ├── QlikSenseTask.vshost.exe.config │ │ │ └── QlikSenseTask.vshost.exe.manifest │ │ └── Debug │ │ │ ├── config.txt │ │ │ ├── QlikSenseTask.exe │ │ │ ├── QlikSenseTask.pdb │ │ │ ├── Newtonsoft.Json.dll │ │ │ ├── Newtonsoft.Json.pdb │ │ │ ├── QlikSenseTask.vshost.exe │ │ │ ├── QlikSenseTask.exe.config │ │ │ ├── QlikSenseTask.vshost.exe.config │ │ │ ├── QlikSenseTasklog.log │ │ │ └── QlikSenseTask.vshost.exe.manifest │ ├── obj │ │ ├── Debug │ │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ │ │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ │ │ ├── QlikSenseTask.exe │ │ │ ├── QlikSenseTask.pdb │ │ │ ├── QlikSenseTask.csproj.AssemblyReference.cache │ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ │ ├── QlikSenseTask.csprojResolveAssemblyReference.cache │ │ │ ├── .NETFramework,Version=v4.5.AssemblyAttributes.cs │ │ │ └── QlikSenseTask.csproj.FileListAbsolute.txt │ │ └── Release │ │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ │ │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ │ │ ├── QlikSenseTask.exe │ │ │ ├── QlikSenseTask.pdb │ │ │ ├── QlikSenseTask.csproj.AssemblyReference.cache │ │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ │ ├── QlikSenseTask.csprojResolveAssemblyReference.cache │ │ │ ├── .NETFramework,Version=v4.5.AssemblyAttributes.cs │ │ │ └── QlikSenseTask.csproj.FileListAbsolute.txt │ ├── App.config │ ├── QlikSenseTask.csproj.user │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Logger.cs │ ├── QlikSenseTask.csproj │ ├── QlikSenseLoopAndReduce.cs │ ├── Program.cs │ ├── QlikSenseJSONObjects.cs │ ├── QRSwebclient.cs │ └── QRSNTLMWebClient.cs ├── QlikSenseTask.v11.suo └── QlikSenseTask.sln ├── .vs ├── slnx.sqlite ├── QlikSenseTask │ └── v16 │ │ └── .suo └── VSWorkspaceState.json ├── QlikSenseTask-1.0.X.zip ├── QlikSenseTask-1.1.zip ├── QlikSenseTask-2.X.zip ├── QlikSenseTask-3.X.zip ├── Screenshots ├── usage.JPG ├── publisher_task.JPG ├── publisher_dependancy.JPG └── 27676-Grey-tabby-kitten-sitting-white-background.jpg ├── .gitattributes ├── .gitignore ├── QlikSenseTask └── QlikSenseTaskSource-3.X │ └── .vs │ └── QlikSenseTask │ └── xs │ └── UserPrefs.xml └── README.md /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/build.force: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/.vs/QlikSenseTask/xs/sqlite3/db.lock: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/QlikSenseTasklog.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/_2021_10_13_19_10_15.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.csproj.CopyComplete: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/QlikSenseTasklog_2014_12_15_07_51_57.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/QlikSenseTasklog_2014_12_15_07_52_04.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/QlikSenseTasklog_2014_12_15_07_52_33.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/Reload task of test_2017_03_17_03_20_52.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_18_50_37.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_18_51_17.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_18_51_45.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_18_55_07.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_18_59_41.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_19_27_20.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_19_27_46.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_19_28_19.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_19_31_03.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_19_32_14.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_19_37_30.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_19_39_09.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_19_40_44.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_19_45_11.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Reload task of test3_2021_10_13_19_48_08.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.vs/slnx.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/.vs/slnx.sqlite -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/config.txt: -------------------------------------------------------------------------------- 1 | -proxy:https://localhost 2 | -wait:1001 -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/config.txt: -------------------------------------------------------------------------------- 1 | -proxy:https://localhost 2 | -wait:600 -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/config.txt: -------------------------------------------------------------------------------- 1 | -proxy:https://localhost 2 | -wait:600 -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/config.txt: -------------------------------------------------------------------------------- 1 | -proxy:https://qtarchlabus04 2 | -wait:1001 -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/config.txt: -------------------------------------------------------------------------------- 1 | -proxy:https://qtarchlabus04 2 | -wait:600 -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/config.txt: -------------------------------------------------------------------------------- 1 | -proxy:https://uschi-msi4 2 | -wait:600 -------------------------------------------------------------------------------- /QlikSenseTask-1.0.X.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTask-1.0.X.zip -------------------------------------------------------------------------------- /QlikSenseTask-1.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTask-1.1.zip -------------------------------------------------------------------------------- /QlikSenseTask-2.X.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTask-2.X.zip -------------------------------------------------------------------------------- /QlikSenseTask-3.X.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTask-3.X.zip -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Screenshots/usage.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/Screenshots/usage.JPG -------------------------------------------------------------------------------- /.vs/QlikSenseTask/v16/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/.vs/QlikSenseTask/v16/.suo -------------------------------------------------------------------------------- /Screenshots/publisher_task.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/Screenshots/publisher_task.JPG -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/QlikSenseTask.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | d23b4542d34b4028b06feef0d9b2be528eb99f62 2 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 8fda169dd02113591055201341da52f26da91b82 2 | -------------------------------------------------------------------------------- /Screenshots/publisher_dependancy.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/Screenshots/publisher_dependancy.JPG -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask.v11.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask.v11.suo -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask.v11.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask.v11.suo -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask.v11.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask.v11.suo -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/.vs/QlikSenseTask/v14/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/.vs/QlikSenseTask/v14/.suo -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/.vs/QlikSenseTask/v14/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/.vs/QlikSenseTask/v14/.suo -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/.vs/QlikSenseTask/v16/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/.vs/QlikSenseTask/v16/.suo -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/QlikSenseTask.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/QlikSenseTask.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/QlikSenseTask.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/QlikSenseTask.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/QlikSenseTask.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/QlikSenseTask.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/QlikSenseTask.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/QlikSenseTask.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/QlikSenseTask.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/QlikSenseTask.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/QlikSenseTask.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/QlikSenseTask.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/QlikSenseTask.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/QlikSenseTask.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/QlikSenseTask.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/QlikSenseTask.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/.vs/QlikSenseTask/xs/sqlite3/storage.ide: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/.vs/QlikSenseTask/xs/sqlite3/storage.ide -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/QlikSenseTask.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/QlikSenseTask.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/QlikSenseTask.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/QlikSenseTask.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/QlikSenseTask.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/QlikSenseTask.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/QlikSenseTask.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/QlikSenseTask.pdb -------------------------------------------------------------------------------- /Screenshots/27676-Grey-tabby-kitten-sitting-white-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/Screenshots/27676-Grey-tabby-kitten-sitting-white-background.jpg -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/Newtonsoft.Json.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/Newtonsoft.Json.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/QlikSenseTask.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/QlikSenseTask.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/QlikSenseTask.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/QlikSenseTask.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/QlikSenseTask.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/QlikSenseTask.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/QlikSenseTask.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/QlikSenseTask.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/Newtonsoft.Json.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/Newtonsoft.Json.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/.vs/QlikSenseTask/xs/sqlite3/storage.ide-shm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/.vs/QlikSenseTask/xs/sqlite3/storage.ide-shm -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/.vs/QlikSenseTask/xs/sqlite3/storage.ide-wal: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/.vs/QlikSenseTask/xs/sqlite3/storage.ide-wal -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.ex_: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.ex_ -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/Newtonsoft.Json.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/Newtonsoft.Json.pdb -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/QlikSenseTask.vshost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/QlikSenseTask.vshost.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/QlikSenseTask.vshost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/QlikSenseTask.vshost.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/QlikSenseTask.vshost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/QlikSenseTask.vshost.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/QlikSenseTask.vshost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/QlikSenseTask.vshost.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.vshost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.vshost.exe -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.vshost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.vshost.exe -------------------------------------------------------------------------------- /.vs/VSWorkspaceState.json: -------------------------------------------------------------------------------- 1 | { 2 | "ExpandedNodes": [ 3 | "", 4 | "\\QlikSenseTaskSource-3.X" 5 | ], 6 | "SelectedNode": "\\QlikSenseTaskSource-3.X\\QlikSenseTask.sln", 7 | "PreviewInSolutionExplorer": false 8 | } -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/QlikSenseTask.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/QlikSenseTask.csproj.AssemblyReference.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/QlikSenseTask.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/QlikSenseTask.csproj.AssemblyReference.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/QlikSenseTask.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/QlikSenseTask.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/QlikSenseTask.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/QlikSenseTask.csproj.AssemblyReference.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.csproj.AssemblyReference.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/QlikSenseTask.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/QlikSenseTask.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/QlikSenseTask.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/QlikSenseTask.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/QlikSenseTask.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/QlikSenseTask.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/QlikSenseTask.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/QlikSenseTask.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusspitzmiller/QlikSenseTask/HEAD/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/QlikSenseTask.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/QlikSenseTask.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/QlikSenseTask.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/QlikSenseTask.vshost.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/QlikSenseTask.vshost.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/QlikSenseTask.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/QlikSenseTask.vshost.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/QlikSenseTask.vshost.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.vshost.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.vshost.exe.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")] 5 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")] 5 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")] 5 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] 5 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/.NETFramework,Version=v4.5.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")] 5 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/.NETFramework,Version=v4.5.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")] 5 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/.NETFramework,Version=v4.5.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")] 5 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/.NETFramework,Version=v4.8.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] 5 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] 5 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] 5 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/QlikSenseTasklog.log: -------------------------------------------------------------------------------- 1 | Time, LogLevel, Message 2 | 2014_12_15_04_27_42,Information,"Task: Reloadtask of Sales Dashboard" 3 | 2014_12_15_04_27_42,Information,"Proxy: https://qtarchlabus04" 4 | 2014_12_15_04_27_42,Information,"Wait: 90 seconds" 5 | 2014_12_15_04_27_44,Information,"Task is starting..." 6 | 2014_12_15_04_28_16,Information,"Task is running..." 7 | 2014_12_15_04_28_16,Information,"Task finished with status: 3" 8 | 2014_12_15_04_28_16,Information,"Returning Errorlevel 0" 9 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/QlikSenseTasklog.log: -------------------------------------------------------------------------------- 1 | Time, LogLevel, Message 2 | 2014_12_15_04_27_42,Information,"Task: Reloadtask of Sales Dashboard" 3 | 2014_12_15_04_27_42,Information,"Proxy: https://qtarchlabus04" 4 | 2014_12_15_04_27_42,Information,"Wait: 90 seconds" 5 | 2014_12_15_04_27_44,Information,"Task is starting..." 6 | 2014_12_15_04_28_16,Information,"Task is running..." 7 | 2014_12_15_04_28_16,Information,"Task finished with status: 3" 8 | 2014_12_15_04_28_16,Information,"Returning Errorlevel 0" 9 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/QlikSenseTask.csproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -task:"Reloadtask of Sales Dashboard" -wait:90 5 | 6 | 7 | /%3f 8 | 9 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/QlikSenseTask.csproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -%3f 5 | 6 | 7 | -task:"Reload task of test" -wait:31 -poll:15 8 | 9 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/QlikSenseTask.csproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -task:"Reload task of test3" -wait:0 5 | 6 | 7 | -task:"Reload task of test" -wait:31 -poll:15 8 | 9 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Debug/QlikSenseTask.vshost.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Debug/QlikSenseTask.vshost.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Debug/QlikSenseTask.vshost.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/bin/Release/QlikSenseTask.vshost.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.vshost.exe.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/Reload task of test_2017_03_17_03_22_16.log: -------------------------------------------------------------------------------- 1 | Time, LogLevel, Message 2 | 2017_03_17_03_22_16,Information,"Task: Reload task of test" 3 | 2017_03_17_03_22_16,Information,"Proxy: https://uschi-msi4" 4 | 2017_03_17_03_22_16,Information,"Wait: 31 seconds" 5 | 2017_03_17_03_22_16,Information,"Poll: 15 seconds" 6 | 2017_03_17_03_22_16,Information,"Log: D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release" 7 | 2017_03_17_03_22_16,Information,"Delete Log: -90 days" 8 | 2017_03_17_03_22_17,Information,"Task is starting..." 9 | 2017_03_17_03_22_22,Information,"Task finished with status: Error" 10 | 2017_03_17_03_22_22,Information,"Returning Errorlevel 8" 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear on external disk 35 | .Spotlight-V100 36 | .Trashes 37 | 38 | # Directories potentially created on remote AFP share 39 | .AppleDB 40 | .AppleDesktop 41 | Network Trash Folder 42 | Temporary Items 43 | .apdisk 44 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2012 for Windows Desktop 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QlikSenseTask", "QlikSenseTask\QlikSenseTask.csproj", "{0760E516-3DB9-4611-B3AB-2FC1F3C0F928}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Any CPU = Debug|Any CPU 9 | Release|Any CPU = Release|Any CPU 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 13 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928}.Release|Any CPU.ActiveCfg = Release|Any CPU 15 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928}.Release|Any CPU.Build.0 = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2012 for Windows Desktop 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QlikSenseTask", "QlikSenseTask\QlikSenseTask.csproj", "{0760E516-3DB9-4611-B3AB-2FC1F3C0F928}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Any CPU = Debug|Any CPU 9 | Release|Any CPU = Release|Any CPU 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 13 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928}.Release|Any CPU.ActiveCfg = Release|Any CPU 15 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928}.Release|Any CPU.Build.0 = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2012 for Windows Desktop 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QlikSenseTask", "QlikSenseTask\QlikSenseTask.csproj", "{0760E516-3DB9-4611-B3AB-2FC1F3C0F928}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Any CPU = Debug|Any CPU 9 | Release|Any CPU = Release|Any CPU 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 13 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928}.Release|Any CPU.ActiveCfg = Release|Any CPU 15 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928}.Release|Any CPU.Build.0 = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Debug/QlikSenseTask.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\QlikSenseTask.exe.config 2 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\QlikSenseTask.exe 3 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\QlikSenseTask.pdb 4 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\Newtonsoft.Json.dll 5 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\Newtonsoft.Json.pdb 6 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\Newtonsoft.Json.xml 7 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Debug\QlikSenseTask.exe 8 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Debug\QlikSenseTask.pdb 9 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Debug\QlikSenseTask.csprojResolveAssemblyReference.cache 10 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/.vs/QlikSenseTask/xs/UserPrefs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("QlikSenseTask")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("QlikSenseTask")] 13 | [assembly: AssemblyCopyright("Copyright © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("15b72308-dba4-403e-9b28-ae0f9733648b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("QlikSenseTask")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("QlikSenseTask")] 13 | [assembly: AssemblyCopyright("Copyright © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("15b72308-dba4-403e-9b28-ae0f9733648b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("QlikSenseTask")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("QlikSenseTask")] 13 | [assembly: AssemblyCopyright("Copyright © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("15b72308-dba4-403e-9b28-ae0f9733648b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /QlikSenseTask/QlikSenseTaskSource-3.X/.vs/QlikSenseTask/xs/UserPrefs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/Reload task of test_2021_10_12_20_49_38.log: -------------------------------------------------------------------------------- 1 | Time, LogLevel, Message 2 | 2021_10_12_20_49_38,Information,"Task: Reload task of test" 3 | 2021_10_12_20_49_38,Information,"Proxy: https://localhost" 4 | 2021_10_12_20_49_38,Information,"Wait: 31 seconds" 5 | 2021_10_12_20_49_38,Information,"Poll: 15 seconds" 6 | 2021_10_12_20_49_38,Information,"Log: C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Release" 7 | 2021_10_12_20_49_38,Information,"Delete Log: -90 days" 8 | 2021_10_12_20_49_38,Information,"Creating connection..." 9 | 2021_10_12_20_49_38,Debug,"Creating web connection..." 10 | 2021_10_12_20_49_38,Debug,"Creating CookierAwareWebClient..." 11 | 2021_10_12_20_49_38,Debug,"calling /qrs/about" 12 | 2021_10_12_20_49_38,Debug,"setting headers" 13 | 2021_10_12_20_49_38,Debug,"constructing query string" 14 | 2021_10_12_20_49_38,Debug,"calling https://localhost/qrs/about" 15 | 2021_10_12_20_49_42,Debug,"{"buildVersion":"28.0.2.0","buildDate":"4/26/2021 09:32:09 AM","databaseProvider":"Devart.Data.PostgreSql","nodeType":1,"sharedPersistence":true,"requiresBootstrap":false,"singleNodeOnly":false,"schemaPath":"About"}" 16 | 2021_10_12_20_49_42,Information,"Task is starting..." 17 | 2021_10_12_20_49_42,Error,"System.Exception: Bad Request: "Reload task of test" 18 | at QlikSenseJSONObjects.QlikSenseJSONHelper.StartTaskByName(String taskname, Boolean synchronous) in C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\QlikSenseJSONHelper.cs:line 199 19 | at QlikSenseTask.Program.Main(String[] args) in C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\Program.cs:line 163" 20 | 2021_10_12_20_49_42,Information,"Returning Errorlevel 8" 21 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/obj/Release/QlikSenseTask.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Release\QlikSenseTask.exe.config 2 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Release\QlikSenseTask.exe 3 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Release\QlikSenseTask.pdb 4 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Release\Newtonsoft.Json.dll 5 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Release\Newtonsoft.Json.pdb 6 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Release\Newtonsoft.Json.xml 7 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Release\QlikSenseTask.csprojResolveAssemblyReference.cache 8 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Release\QlikSenseTask.exe 9 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Release\QlikSenseTask.pdb 10 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource\QlikSenseTask\bin\Release\QlikSenseTask.exe.config 11 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource\QlikSenseTask\obj\Release\QlikSenseTask.exe 12 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource\QlikSenseTask\obj\Release\QlikSenseTask.pdb 13 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-1.X\QlikSenseTask\bin\Release\QlikSenseTask.exe.config 14 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-1.X\QlikSenseTask\obj\Release\QlikSenseTask.exe 15 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-1.X\QlikSenseTask\obj\Release\QlikSenseTask.pdb 16 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/Reload task of test_2021_10_12_20_48_58.log: -------------------------------------------------------------------------------- 1 | Time, LogLevel, Message 2 | 2021_10_12_20_48_58,Information,"Task: Reload task of test" 3 | 2021_10_12_20_48_58,Information,"Proxy: https://qtarchlabus04" 4 | 2021_10_12_20_48_58,Information,"Wait: 31 seconds" 5 | 2021_10_12_20_48_58,Information,"Poll: 15 seconds" 6 | 2021_10_12_20_48_58,Information,"Log: C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Release" 7 | 2021_10_12_20_48_58,Information,"Delete Log: -90 days" 8 | 2021_10_12_20_48_58,Information,"Creating connection..." 9 | 2021_10_12_20_48_58,Debug,"Creating web connection..." 10 | 2021_10_12_20_48_58,Debug,"Creating CookierAwareWebClient..." 11 | 2021_10_12_20_48_58,Debug,"calling /qrs/about" 12 | 2021_10_12_20_48_58,Debug,"setting headers" 13 | 2021_10_12_20_48_58,Debug,"constructing query string" 14 | 2021_10_12_20_48_58,Debug,"calling https://qtarchlabus04/qrs/about" 15 | 2021_10_12_20_49_00,Debug,"error: The remote name could not be resolved: 'qtarchlabus04'" 16 | 2021_10_12_20_49_01,Error,"System.Exception: Couldnt connect to the server at https://qtarchlabus04 , check that the Proxy and QRS are running. Message: Object reference not set to an instance of an object. 17 | at QVnextDemoBuilder.QRSNTLMWebClient..ctor(String QRSserverURL, Int32 requesttimeout, Logger logger) in C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\QRSNTLMWebClient.cs:line 44 18 | at QlikSenseJSONObjects.QlikSenseJSONHelper..ctor(String url, Int32 timeout, Logger logger) in C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\QlikSenseJSONHelper.cs:line 27 19 | at QlikSenseTask.Program.Main(String[] args) in C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\Program.cs:line 160" 20 | 2021_10_12_20_49_01,Information,"Returning Errorlevel 8" 21 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/Reload task of test_2021_10_13_18_50_20.log: -------------------------------------------------------------------------------- 1 | Time, LogLevel, Message 2 | 2021_10_13_18_50_20,Information,"Task: Reload task of test" 3 | 2021_10_13_18_50_20,Information,"Proxy: https://localhost" 4 | 2021_10_13_18_50_20,Information,"Wait: 31 seconds" 5 | 2021_10_13_18_50_20,Information,"Poll: 15 seconds" 6 | 2021_10_13_18_50_20,Information,"Log: C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Release" 7 | 2021_10_13_18_50_20,Information,"Delete Log: -90 days" 8 | 2021_10_13_18_50_20,Information,"Creating connection..." 9 | 2021_10_13_18_50_20,Debug,"Creating web connection..." 10 | 2021_10_13_18_50_20,Debug,"Creating CookierAwareWebClient..." 11 | 2021_10_13_18_50_20,Debug,"calling /qrs/about" 12 | 2021_10_13_18_50_20,Debug,"setting headers" 13 | 2021_10_13_18_50_20,Debug,"constructing query string" 14 | 2021_10_13_18_50_20,Debug,"calling https://localhost/qrs/about" 15 | 2021_10_13_18_50_20,Debug,"error: The underlying connection was closed: An unexpected error occurred on a send." 16 | 2021_10_13_18_50_21,Error,"System.Exception: Couldnt connect to the server at https://localhost , check that the Proxy and QRS are running. Message: Object reference not set to an instance of an object. 17 | at QVnextDemoBuilder.QRSNTLMWebClient..ctor(String QRSserverURL, Int32 requesttimeout, Logger logger) in C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\QRSNTLMWebClient.cs:line 44 18 | at QlikSenseJSONObjects.QlikSenseJSONHelper..ctor(String url, Int32 timeout, Logger logger) in C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\QlikSenseJSONHelper.cs:line 27 19 | at QlikSenseTask.Program.Main(String[] args) in C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\Program.cs:line 160" 20 | 2021_10_13_18_50_21,Information,"Returning Errorlevel 8" 21 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/Logger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace MyLogger 9 | { 10 | public static class EnumHelper 11 | { 12 | /*public static T FromInt(int value) 13 | { 14 | return (T)value; 15 | }*/ 16 | 17 | public static T FromString(string value) 18 | { 19 | return (T)Enum.Parse(typeof(T), value); 20 | } 21 | } 22 | 23 | public enum LogLevel { Debug, Information, Warning, Error, Fatal }; 24 | 25 | class Logger 26 | { 27 | string sLogFile = ""; 28 | LogLevel minlevel = LogLevel.Debug; 29 | System.IO.StreamWriter file = null; 30 | 31 | 32 | 33 | public void Start() 34 | { 35 | DateTime d = DateTime.Now; 36 | 37 | sLogFile = "QlikSenseTasklog_" + d.ToString("yyyy_MM_dd_hh_mm_ss") + ".log"; 38 | 39 | file = new System.IO.StreamWriter(sLogFile); 40 | 41 | file.WriteLine("Time, LogLevel, Message"); 42 | } 43 | 44 | public void End() 45 | { 46 | file.Close(); 47 | } 48 | 49 | public void SetLogLevel(LogLevel loglevel) 50 | { 51 | minlevel = loglevel; 52 | } 53 | 54 | public void Log(LogLevel loglevel, string message) 55 | { 56 | if (loglevel >= minlevel) 57 | { 58 | DateTime d = DateTime.Now; 59 | 60 | string line = d.ToString("yyyy_MM_dd_hh_mm_ss") + ","; 61 | line += loglevel.ToString() + ","; 62 | line += (char)34 + message + (char)34; 63 | 64 | Console.WriteLine(line); 65 | file.WriteLine(line); 66 | } 67 | } 68 | 69 | public string GetLogFilePath() 70 | { 71 | file.Flush(); 72 | return Path.GetFullPath(sLogFile); 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/QlikSenseTask.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928} 8 | Exe 9 | Properties 10 | QlikSenseTask 11 | QlikSenseTask 12 | v4.5 13 | 512 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | 36 | ..\..\..\Json60r4\Bin\Net45\Newtonsoft.Json.dll 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 66 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Status 2 | [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) 3 | 4 | ## QlikSenseTask 5 | QlikSenseTask 6 | 7 | QlikSenseTask.exe (QlikSenseTask.zip) is a tool for starting Qlik Sense tasks from the command line. Why QlikSenseTask? There will be many cases where QlikView data models and QVDs need to be loaded in QlikSense applications. This utility allows QlikView Publisher (and other schedulers) to call QlikSense tasks and load data into Qlik Sense apps. 8 | 9 | ## Usage 10 | 11 | ![Usage](https://github.com/marcusspitzmiller/QlikSenseTask/blob/master/Screenshots/usage.JPG) 12 | 13 | ### Call QlikSenseTask.exe with the following parameters: 14 | -proxy: - URL of Qlik Sense proxy 15 | -task: - name of reload task to execute. Put task names with spaces in quotes. 16 | -wait: - number of seconds the utility should wait for task to execute before timing out. 17 | 18 | Example: qliksensetask -task:"Reload License Monitor" -proxy:https://localhost -wait:600" 19 | 20 | ### Global Settings: 21 | Use config.txt to set any of these parameters at a global level. The command line values override the settings in config.txt. 22 | For example, use config.txt to set the -proxy and -wait values at a global level so that each time the executable is called, these values to not need to be set from the command line. 23 | 24 | ## With QlikView Publisher 25 | With QlikSenseTask,exe, QlikView Publisher can be used to call reload tasks in Qlik Sense. Below, QlikSenseTask.exe is set up as a supporting task in Publisher which reloads a task in Qlik Sense named "Reload Sales Dashboard" and waits 90 seconds before terminating. 26 | 27 | ![Pub Dependancy](https://github.com/marcusspitzmiller/QlikSenseTask/blob/master/Screenshots/publisher_dependancy.JPG) 28 | 29 | 30 | This supporting task is triggered on the success of the reloaded data model in QlikView. Not pictured, the script in the Qlik Sense application binary loads the prepared QVW or QVD files. 31 | 32 | ![Pub Task](https://github.com/marcusspitzmiller/QlikSenseTask/blob/master/Screenshots/publisher_task.JPG) 33 | 34 | 35 | Installation 36 | 37 | Qlik Sense 1.0.X - QlikSenseTask.zip 38 | Qlik Sense 1.1 - QlikSenseTask-1.1.zip 39 | Qlik Sense 2.X - QlikSenseTask-2.X.zip 40 | Qlik Sense 3.X - QlikSenseTask-3.X.zip 41 | Note: 2.X is the same as 3.X, no changes. You can upgrade but it is totally the same. People were wondering if 2.X worked with 3.X, so this removes that doubt. 42 | 43 | 44 | Security 45 | The current version of QlikSenseTask.exe only supports NTLM authentication. In the context of QlikView Publisher, this means that the service running Publisher will be the account to authenticate to Qlik Sense. (Note: It is possible but not yet implemented to use SSL certificates as an authentication mechanism. If there is a need, please let me know.) 46 | 47 | The user that calls Qlik Sense needs to have access to the task. The simplest way to achieve this is to make the user a ContentAdmin in the Qlik Sense QMC. 48 | 49 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/QlikSenseTask.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928} 8 | Exe 9 | Properties 10 | QlikSenseTask 11 | QlikSenseTask 12 | v4.8 13 | 512 14 | 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\..\..\Json60r4\Bin\Net45\Newtonsoft.Json.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 67 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/QlikSenseTask.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {0760E516-3DB9-4611-B3AB-2FC1F3C0F928} 8 | Exe 9 | Properties 10 | QlikSenseTask 11 | QlikSenseTask 12 | v4.5 13 | 512 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | 36 | ..\..\..\Json60r4\Bin\Net45\Newtonsoft.Json.dll 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | Component 55 | 56 | 57 | Component 58 | 59 | 60 | 61 | 62 | 63 | 64 | 71 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Debug/QlikSenseTask.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\QlikSenseTask.exe.config 2 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\QlikSenseTask.exe 3 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\QlikSenseTask.pdb 4 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\Newtonsoft.Json.dll 5 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\Newtonsoft.Json.pdb 6 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\Newtonsoft.Json.xml 7 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Debug\QlikSenseTask.exe 8 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Debug\QlikSenseTask.pdb 9 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Debug\QlikSenseTask.csprojResolveAssemblyReference.cache 10 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe.config 11 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.exe 12 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.pdb 13 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe 14 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.pdb 15 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\Newtonsoft.Json.dll 16 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\Newtonsoft.Json.pdb 17 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\Newtonsoft.Json.xml 18 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.csprojResolveAssemblyReference.cache 19 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe.config 20 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.exe 21 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.pdb 22 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe.config 23 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.exe 24 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.pdb 25 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe 26 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.pdb 27 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\Newtonsoft.Json.pdb 28 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\Newtonsoft.Json.xml 29 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.csprojResolveAssemblyReference.cache 30 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/Logger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace MyLogger 9 | { 10 | public static class EnumHelper 11 | { 12 | /*public static T FromInt(int value) 13 | { 14 | return (T)value; 15 | }*/ 16 | 17 | public static T FromString(string value) 18 | { 19 | return (T)Enum.Parse(typeof(T), value); 20 | } 21 | } 22 | 23 | public enum LogLevel { Debug, Information, Warning, Error, Fatal }; 24 | 25 | class Logger 26 | { 27 | string sLogFile = ""; 28 | LogLevel minlevel = LogLevel.Debug; 29 | System.IO.StreamWriter file = null; 30 | 31 | 32 | 33 | public void Start(string task, string logpath) 34 | { 35 | DateTime d = DateTime.Now; 36 | Boolean dirtest = Directory.Exists(logpath); 37 | Directory.CreateDirectory(logpath); 38 | 39 | sLogFile = logpath + "\\" + task + "_" + d.ToString("yyyy_MM_dd_hh_mm_ss") + ".log"; 40 | 41 | file = new System.IO.StreamWriter(sLogFile); 42 | 43 | file.WriteLine("Time, LogLevel, Message"); 44 | } 45 | 46 | public void End() 47 | { 48 | file.Close(); 49 | } 50 | 51 | public void SetLogLevel(LogLevel loglevel) 52 | { 53 | minlevel = loglevel; 54 | } 55 | 56 | public void Log(LogLevel loglevel, string message) 57 | { 58 | if (loglevel >= minlevel) 59 | { 60 | DateTime d = DateTime.Now; 61 | 62 | string line = d.ToString("yyyy_MM_dd_hh_mm_ss") + ","; 63 | line += loglevel.ToString() + ","; 64 | line += (char)34 + message + (char)34; 65 | 66 | Console.WriteLine(line); 67 | file.WriteLine(line); 68 | } 69 | } 70 | 71 | public string GetLogFilePath() 72 | { 73 | file.Flush(); 74 | return Path.GetFullPath(sLogFile); 75 | } 76 | public void CleanLogFiles(string logpath, Int32 deletelog) 77 | { 78 | DirectoryInfo historyDi = new DirectoryInfo(logpath); 79 | 80 | //remove any history files greater than 90 days 81 | //DateTime from_date = DateTime.Now.AddMonths(-3); 82 | DateTime from_date = DateTime.Now.AddDays(deletelog); 83 | List historyFileInfoList = historyDi.GetFiles().Where(file => file.LastWriteTime < from_date).ToList(); 84 | foreach (FileInfo historyFile in historyFileInfoList) 85 | { 86 | string historytemp = historyFile.Extension; 87 | if (historyFile.Extension == ".log") 88 | { 89 | Log(LogLevel.Information, "Deleting Log File: " + historyFile.Name); 90 | string historytemp2 = historyFile.FullName; 91 | DateTime historytemp3 = historyFile.LastWriteTime; 92 | try 93 | { 94 | historyFile.Delete(); 95 | } 96 | catch (Exception e) 97 | { 98 | Log( 99 | LogLevel.Error, 100 | String.Format("Failed to delete log file: {0}\nError Message: {1}", historyFile.Name, e.Message) 101 | ); 102 | } 103 | } 104 | } 105 | } 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/Logger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace MyLogger 9 | { 10 | public static class EnumHelper 11 | { 12 | /*public static T FromInt(int value) 13 | { 14 | return (T)value; 15 | }*/ 16 | 17 | public static T FromString(string value) 18 | { 19 | return (T)Enum.Parse(typeof(T), value); 20 | } 21 | } 22 | 23 | public enum LogLevel { Debug, Information, Warning, Error, Fatal }; 24 | 25 | class Logger 26 | { 27 | string sLogFile = ""; 28 | LogLevel minlevel = LogLevel.Debug; 29 | System.IO.StreamWriter file = null; 30 | 31 | 32 | 33 | public void Start(string task, string logpath) 34 | { 35 | DateTime d = DateTime.Now; 36 | Boolean dirtest = Directory.Exists(logpath); 37 | Directory.CreateDirectory(logpath); 38 | 39 | sLogFile = logpath + "\\" + task + "_" + d.ToString("yyyy_MM_dd_HH_mm_ss") + ".log"; 40 | 41 | file = new System.IO.StreamWriter(sLogFile); 42 | 43 | file.WriteLine("Time, LogLevel, Message"); 44 | } 45 | 46 | public void End() 47 | { 48 | file.Close(); 49 | } 50 | 51 | public void SetLogLevel(LogLevel loglevel) 52 | { 53 | minlevel = loglevel; 54 | } 55 | 56 | public void Log(LogLevel loglevel, string message) 57 | { 58 | if (loglevel >= minlevel) 59 | { 60 | DateTime d = DateTime.Now; 61 | 62 | string line = d.ToString("yyyy_MM_dd_HH_mm_ss") + ","; 63 | line += loglevel.ToString() + ","; 64 | line += (char)34 + message + (char)34; 65 | 66 | Console.WriteLine(line); 67 | file.WriteLine(line); 68 | } 69 | } 70 | 71 | public string GetLogFilePath() 72 | { 73 | file.Flush(); 74 | return Path.GetFullPath(sLogFile); 75 | } 76 | public void CleanLogFiles(string logpath, Int32 deletelog) 77 | { 78 | DirectoryInfo historyDi = new DirectoryInfo(logpath); 79 | 80 | //remove any history files greater than 90 days 81 | //DateTime from_date = DateTime.Now.AddMonths(-3); 82 | DateTime from_date = DateTime.Now.AddDays(deletelog); 83 | List historyFileInfoList = historyDi.GetFiles().Where(file => file.LastWriteTime < from_date).ToList(); 84 | foreach (FileInfo historyFile in historyFileInfoList) 85 | { 86 | string historytemp = historyFile.Extension; 87 | if (historyFile.Extension == ".log") 88 | { 89 | Log(LogLevel.Information, "Deleting Log File: " + historyFile.Name); 90 | string historytemp2 = historyFile.FullName; 91 | DateTime historytemp3 = historyFile.LastWriteTime; 92 | try 93 | { 94 | historyFile.Delete(); 95 | } 96 | catch (Exception e) 97 | { 98 | Log( 99 | LogLevel.Error, 100 | String.Format("Failed to delete log file: {0}\nError Message: {1}", historyFile.Name, e.Message) 101 | ); 102 | } 103 | } 104 | } 105 | } 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Release\QlikSenseTask.exe.config 2 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Release\QlikSenseTask.exe 3 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Release\QlikSenseTask.pdb 4 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Release\Newtonsoft.Json.dll 5 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Release\Newtonsoft.Json.pdb 6 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Release\Newtonsoft.Json.xml 7 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Release\QlikSenseTask.csprojResolveAssemblyReference.cache 8 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Release\QlikSenseTask.exe 9 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Release\QlikSenseTask.pdb 10 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource\QlikSenseTask\bin\Release\QlikSenseTask.exe.config 11 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource\QlikSenseTask\obj\Release\QlikSenseTask.exe 12 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource\QlikSenseTask\obj\Release\QlikSenseTask.pdb 13 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\QlikSenseTask.exe.config 14 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Release\QlikSenseTask.exe 15 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Release\QlikSenseTask.pdb 16 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\QlikSenseTask.exe 17 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\QlikSenseTask.pdb 18 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\Newtonsoft.Json.dll 19 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\Newtonsoft.Json.pdb 20 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\Newtonsoft.Json.xml 21 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Release\QlikSenseTask.csprojResolveAssemblyReference.cache 22 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\QlikSenseTask.exe.config 23 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Release\QlikSenseTask.exe 24 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Release\QlikSenseTask.pdb 25 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\QlikSenseTask.exe 26 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\QlikSenseTask.pdb 27 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\Newtonsoft.Json.pdb 28 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\Newtonsoft.Json.xml 29 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Release\QlikSenseTask.csprojResolveAssemblyReference.cache 30 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\QlikSenseTask.exe.config 31 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Release\QlikSenseTask.exe 32 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Release\QlikSenseTask.pdb 33 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\QlikSenseTask.exe 34 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Release\QlikSenseTask.pdb 35 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Release\QlikSenseTask.csprojResolveAssemblyReference.cache 36 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/QlikSenseLoopAndReduce.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.IO; 7 | 8 | using QlikSenseJSONObjects; 9 | 10 | namespace QlikSenseHelper 11 | { 12 | class QlikSenseLoopAndReduce 13 | { 14 | private QlikSenseJSONHelper qs; 15 | 16 | private string url; 17 | private string sourceappname; 18 | private string loopandreducefield; 19 | private string streamname; 20 | private string folderpath; 21 | private string basefilename; 22 | 23 | public QlikSenseLoopAndReduce(string url) 24 | { 25 | this.url = url; 26 | 27 | 28 | //qs = new QlikSenseJSONHelper("https://qtarchlabus04.qliktech.com"); 29 | } 30 | 31 | /*public bool LoopAndReduce(string sourceappname, string loopandreducefield, string streamname) 32 | { 33 | this.sourceappname = sourceappname; 34 | this.loopandreducefield = loopandreducefield; 35 | this.streamname = streamname; 36 | 37 | string sourceappid = qs.GetAppID(sourceappname); 38 | string streamid = qs.GetStreamID(streamname); 39 | 40 | //use this for now 41 | //List values = new List(); 42 | List values = qs.GetFieldValues(sourceappid, loopandreducefield); 43 | 44 | values.Add("A"); 45 | values.Add("B"); 46 | values.Add("C"); 47 | 48 | for (int i = 0; i < values.Count(); i++) 49 | { 50 | string targetapp = sourceappname + "_" + values[i]; 51 | 52 | //first see if this app exists and get its info 53 | QlikSenseApp target = qs.GetApp(targetapp); 54 | 55 | //now copy 56 | string newappid = qs.CopyApp(sourceappid, targetapp); 57 | 58 | //qs.SetLoopAndReduceInfo(newappid, loopandreducefield, values[i]); 59 | 60 | //reload 61 | qs.Reload(newappid); 62 | 63 | //publish 64 | qs.Publish(newappid, streamid); 65 | 66 | //possibly replace the existing app 67 | if (target != null) //app exists 68 | { 69 | qs.Delete(target.id); 70 | } 71 | } 72 | return true; 73 | }*/ 74 | 75 | public bool LoopAndReduceBinary(string sourceappname, string folderpath, string basefilename, string streamname) 76 | { 77 | this.sourceappname = sourceappname; 78 | this.folderpath = folderpath; 79 | this.basefilename = basefilename; 80 | this.streamname = streamname; 81 | 82 | string sourceappid = qs.GetAppID(sourceappname); 83 | string streamid = qs.GetStreamID(streamname); 84 | 85 | //use this for now 86 | //List values = new List(); 87 | //List values = qs.GetFieldValues(sourceappid, loopandreducefield); 88 | string [] files = Directory.GetFiles(folderpath, basefilename + "*"); 89 | 90 | for (int i = 0; i < files.Count(); i++) 91 | { 92 | string targetapp = sourceappname + files[i].Replace(folderpath, "").Replace(basefilename, "").Replace("\\", ""); 93 | 94 | //first see if this app exists and get its info 95 | QlikSenseApp target = qs.GetApp(targetapp); 96 | 97 | //now copy 98 | string newappid = qs.CopyApp(sourceappid, targetapp); 99 | 100 | // qs.SetLoopAndReduceInfoBinary(newappid, files[i]); 101 | 102 | //reload 103 | string taskid = qs.CreateTask(newappid, targetapp, "Reload for Loop and Reduce"); 104 | qs.StartTask(taskid, true); 105 | //qs.Reload(newappid); 106 | //qs.Reload(newappid); 107 | 108 | 109 | //possibly replace the existing app 110 | if (target != null) //app exists 111 | { 112 | 113 | qs.Replace(newappid, streamid); 114 | qs.Delete(target.id); //unpublished copy 115 | } 116 | else 117 | { 118 | //publish 119 | qs.Publish(newappid, streamid); 120 | } 121 | } 122 | return true; 123 | 124 | } 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Debug/QlikSenseTask.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\QlikSenseTask.exe.config 2 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\QlikSenseTask.exe 3 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\QlikSenseTask.pdb 4 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\Newtonsoft.Json.dll 5 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\Newtonsoft.Json.pdb 6 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\bin\Debug\Newtonsoft.Json.xml 7 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Debug\QlikSenseTask.exe 8 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Debug\QlikSenseTask.pdb 9 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTask\QlikSenseTask\obj\Debug\QlikSenseTask.csprojResolveAssemblyReference.cache 10 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe.config 11 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.exe 12 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.pdb 13 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe 14 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.pdb 15 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\Newtonsoft.Json.dll 16 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\Newtonsoft.Json.pdb 17 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\Newtonsoft.Json.xml 18 | C:\Users\msi\Documents\Visual Studio 2012\Projects\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.csprojResolveAssemblyReference.cache 19 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe.config 20 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.exe 21 | D:\Projects\Visual Studio\QlikSense Task\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.pdb 22 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe.config 23 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.exe 24 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.pdb 25 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe 26 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\QlikSenseTask.pdb 27 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\Newtonsoft.Json.pdb 28 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\bin\Debug\Newtonsoft.Json.xml 29 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-2.X\QlikSenseTask\obj\Debug\QlikSenseTask.csprojResolveAssemblyReference.cache 30 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe.config 31 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\obj\Debug\QlikSenseTask.exe 32 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\obj\Debug\QlikSenseTask.pdb 33 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe 34 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Debug\QlikSenseTask.pdb 35 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Debug\Newtonsoft.Json.pdb 36 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Debug\Newtonsoft.Json.xml 37 | D:\Projects\Visual Studio\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\obj\Debug\QlikSenseTask.csprojResolveAssemblyReference.cache 38 | C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe.config 39 | C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Debug\QlikSenseTask.exe 40 | C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Debug\QlikSenseTask.pdb 41 | C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\obj\Debug\QlikSenseTask.csproj.CoreCompileInputs.cache 42 | C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\obj\Debug\QlikSenseTask.exe 43 | C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\obj\Debug\QlikSenseTask.pdb 44 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTask/QlikSenseTask/bin/Release/QlikSenseTask.exe.config 2 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTask/QlikSenseTask/bin/Release/QlikSenseTask.exe 3 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTask/QlikSenseTask/bin/Release/QlikSenseTask.pdb 4 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTask/QlikSenseTask/bin/Release/Newtonsoft.Json.dll 5 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTask/QlikSenseTask/bin/Release/Newtonsoft.Json.pdb 6 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTask/QlikSenseTask/bin/Release/Newtonsoft.Json.xml 7 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTask/QlikSenseTask/obj/Release/QlikSenseTask.csprojResolveAssemblyReference.cache 8 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTask/QlikSenseTask/obj/Release/QlikSenseTask.exe 9 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTask/QlikSenseTask/obj/Release/QlikSenseTask.pdb 10 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTaskSource/QlikSenseTask/bin/Release/QlikSenseTask.exe.config 11 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTaskSource/QlikSenseTask/obj/Release/QlikSenseTask.exe 12 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTaskSource/QlikSenseTask/obj/Release/QlikSenseTask.pdb 13 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.exe.config 14 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.exe 15 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.pdb 16 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.exe 17 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.pdb 18 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/Newtonsoft.Json.dll 19 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/Newtonsoft.Json.pdb 20 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/Newtonsoft.Json.xml 21 | C:/Users/msi/Documents/Visual Studio 2012/Projects/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.csprojResolveAssemblyReference.cache 22 | D:/Projects/Visual Studio/QlikSense Task/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.exe.config 23 | D:/Projects/Visual Studio/QlikSense Task/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.exe 24 | D:/Projects/Visual Studio/QlikSense Task/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.pdb 25 | D:/Projects/Visual Studio/QlikSense Task/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.exe 26 | D:/Projects/Visual Studio/QlikSense Task/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.pdb 27 | D:/Projects/Visual Studio/QlikSense Task/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/Newtonsoft.Json.pdb 28 | D:/Projects/Visual Studio/QlikSense Task/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/Newtonsoft.Json.xml 29 | D:/Projects/Visual Studio/QlikSense Task/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.csprojResolveAssemblyReference.cache 30 | D:/Projects/Visual Studio/QlikSenseTask/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.exe.config 31 | D:/Projects/Visual Studio/QlikSenseTask/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.exe 32 | D:/Projects/Visual Studio/QlikSenseTask/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.pdb 33 | D:/Projects/Visual Studio/QlikSenseTask/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.exe 34 | D:/Projects/Visual Studio/QlikSenseTask/QlikSenseTaskSource-2.X/QlikSenseTask/bin/Release/QlikSenseTask.pdb 35 | D:/Projects/Visual Studio/QlikSenseTask/QlikSenseTaskSource-2.X/QlikSenseTask/obj/Release/QlikSenseTask.csprojResolveAssemblyReference.cache 36 | D:/Projects/Visual Studio/QlikSenseTask/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.exe.config 37 | D:/Projects/Visual Studio/QlikSenseTask/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.exe 38 | D:/Projects/Visual Studio/QlikSenseTask/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.pdb 39 | D:/Projects/Visual Studio/QlikSenseTask/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.exe 40 | D:/Projects/Visual Studio/QlikSenseTask/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.pdb 41 | /Users/msi/Projects/QlikSenseTask/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.exe.config 42 | /Users/msi/Projects/QlikSenseTask/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.exe 43 | /Users/msi/Projects/QlikSenseTask/QlikSenseTaskSource-3.X/QlikSenseTask/bin/Release/QlikSenseTask.pdb 44 | /Users/msi/Projects/QlikSenseTask/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.csprojAssemblyReference.cache 45 | /Users/msi/Projects/QlikSenseTask/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.csproj.CoreCompileInputs.cache 46 | /Users/msi/Projects/QlikSenseTask/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.csproj.CopyComplete 47 | /Users/msi/Projects/QlikSenseTask/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.exe 48 | /Users/msi/Projects/QlikSenseTask/QlikSenseTaskSource-3.X/QlikSenseTask/obj/Release/QlikSenseTask.pdb 49 | C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Release\QlikSenseTask.exe.config 50 | C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Release\QlikSenseTask.exe 51 | C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\bin\Release\QlikSenseTask.pdb 52 | C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\obj\Release\QlikSenseTask.csproj.CoreCompileInputs.cache 53 | C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\obj\Release\QlikSenseTask.exe 54 | C:\Users\qmi\Source\Repos\QlikSenseTask\QlikSenseTaskSource-3.X\QlikSenseTask\obj\Release\QlikSenseTask.pdb 55 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.IO; 7 | using System.Threading; 8 | 9 | using QlikSenseJSONObjects; 10 | using System.Diagnostics; 11 | using MyLogger; 12 | 13 | namespace QlikSenseTask 14 | { 15 | 16 | 17 | class Program 18 | { 19 | private QlikSenseJSONHelper qs; 20 | 21 | static void Main(string[] args) 22 | { 23 | //usage**** 24 | //-proxy:https://usral-msi -timeout:10000 -task:"test123" -wait 25 | //*** 26 | Console.WriteLine("Use at your own risk. Created by Marcus Spitzmiller."); 27 | Console.WriteLine(""); 28 | 29 | Logger logger = new Logger(); 30 | logger.Start(); 31 | logger.SetLogLevel(LogLevel.Debug); 32 | 33 | 34 | //defaults 35 | string proxy = ""; 36 | Int32 timeout = 60*1000; 37 | string task = ""; 38 | bool synchronous = true; 39 | 40 | //global settings from config.txt 41 | string[] global = { }; 42 | if (File.Exists("config.txt")) 43 | { 44 | global = File.ReadAllLines("config.txt"); 45 | //args.CopyTo(global, 0); 46 | } 47 | 48 | string [] allargs = new string[args.Length + global.Length]; 49 | global.CopyTo(allargs, 0); 50 | args.CopyTo(allargs, global.Length); 51 | 52 | for (int i = 0; i < allargs.Length; i++) 53 | { 54 | string arg = allargs[i]; 55 | string[] param = arg.Split(':'); 56 | 57 | switch (param[0]) 58 | { 59 | case "-?": 60 | case "/?": 61 | Console.WriteLine("Usage:"); 62 | Console.WriteLine("-proxy: required example https://server.company.com"); 63 | Console.WriteLine(@"-task: required example ""test 123"""); 64 | Console.WriteLine("-wait:<# seconds to wait> optional example 30"); 65 | Console.WriteLine(" omit -wait to return immediately"); 66 | Console.WriteLine(" use -wait to wait for the task to finish"); 67 | Console.WriteLine(" Return Codes:"); 68 | Console.WriteLine(" 0 - task completed successfully"); 69 | Console.WriteLine(" 4 - task timed out"); 70 | Console.WriteLine(" 8 - task failed"); 71 | Console.WriteLine(""); 72 | Console.WriteLine("Optionally define any or all parameters in config.txt"); 73 | Console.WriteLine(" (to be used globally for all tasks)"); 74 | Console.WriteLine(""); 75 | // Console.WriteLine("-debug optional"); 76 | // Console.WriteLine(" omit -wait to return immediately"); 77 | Console.WriteLine("press any key..."); 78 | Console.ReadKey(); 79 | Environment.Exit(0); 80 | break; 81 | case "-proxy": 82 | proxy = ""; 83 | for (int j = 1; j < param.Length; j++) 84 | { 85 | proxy += param[j]; 86 | if (j < param.Length - 1) proxy += ":"; //put back the colon 87 | } 88 | 89 | break; 90 | case "-wait": 91 | timeout = Convert.ToInt32(param[1]); 92 | 93 | break; 94 | case "-task": 95 | task = param[1]; 96 | logger.Log(LogLevel.Information, "Task: " + task); 97 | 98 | break; 99 | default: 100 | logger.Log(LogLevel.Information, "Unrecognized: " + param[0]); 101 | 102 | break; 103 | 104 | } 105 | 106 | } 107 | 108 | 109 | logger.Log(LogLevel.Information, "Proxy: " + proxy); 110 | logger.Log(LogLevel.Information, "Wait: " + timeout + " seconds"); 111 | 112 | if (proxy == "" || task == "") 113 | { 114 | logger.Log(LogLevel.Fatal, "Proxy or Task undefined"); 115 | 116 | Environment.Exit(4); 117 | } 118 | 119 | int retval = 0; 120 | try 121 | { 122 | QlikSenseJSONHelper qs = new QlikSenseJSONHelper(proxy, 60000, logger); //http timeout 60 seconds 123 | 124 | logger.Log(LogLevel.Information, "Task is starting..."); 125 | QlikSenseTaskExecutionGuid taskexecutionguid = qs.StartTaskByName(task, synchronous); 126 | 127 | Stopwatch stopwatch = new Stopwatch(); 128 | stopwatch.Start(); 129 | 130 | int status = qs.GetTaskStatusByName(task); //1 is running, 3 is success 131 | while (status == 1 && stopwatch.Elapsed.Seconds < timeout) //running 132 | { 133 | Thread.Sleep(30000); //wait 30 seconds and try again 134 | 135 | logger.Log(LogLevel.Information, "Task is running..."); 136 | status = qs.GetTaskStatusByName(task); //1 is running, 3 is success 137 | } 138 | 139 | logger.Log(LogLevel.Information, "Task finished with status: " + status.ToString()); 140 | stopwatch.Stop(); 141 | 142 | if (status == 3) //success 143 | { 144 | 145 | } 146 | else if (status == 1) //still running 147 | { 148 | retval = 4; 149 | } 150 | else //problem 151 | { 152 | retval = 8; 153 | } 154 | } 155 | catch (Exception e) 156 | { 157 | logger.Log(LogLevel.Error, e.ToString()); 158 | 159 | if (e.ToString() == "Timeout: The operation has timed out") 160 | { 161 | retval = 4; 162 | } 163 | else 164 | { 165 | retval = 8; 166 | } 167 | } 168 | 169 | logger.Log(LogLevel.Information, "Returning Errorlevel " + retval.ToString()); 170 | 171 | logger.End(); 172 | Environment.Exit(retval); 173 | } 174 | } 175 | } 176 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/QlikSenseJSONObjects.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | namespace QlikSenseJSONObjects 3 | { 4 | // - /qrs/about 5 | public class QlikSenseAbout 6 | { 7 | public string buildVersion { get; set; } 8 | public string buildDate { get; set; } 9 | public string databaseProvider { get; set; } 10 | public int nodeType { get; set; } 11 | public string schemaPath { get; set; } 12 | } 13 | 14 | public class QlikSenseStream 15 | { 16 | public string name { get; set; } 17 | public object privileges { get; set; } 18 | public string id { get; set; } 19 | } 20 | 21 | public class QlikSenseApp 22 | { 23 | public string name { get; set; } 24 | public string appId { get; set; } 25 | public string publishTime { get; set; } 26 | public bool published { get; set; } 27 | public QlikSenseStream stream { get; set; } 28 | public object privileges { get; set; } 29 | public string id { get; set; } 30 | } 31 | 32 | 33 | public class QlikSenseCreateReloadTaskRequest 34 | { 35 | public string task { get; set; } 36 | /*public string appId { get; set; } 37 | public string publishTime { get; set; } 38 | public bool published { get; set; } 39 | public QlikSenseStream stream { get; set; } 40 | public object privileges { get; set; } 41 | public string id { get; set; }*/ 42 | } 43 | 44 | public class QInfo 45 | { 46 | public string qId { get; set; } 47 | public string qType { get; set; } 48 | } 49 | 50 | public class QSortCriteria 51 | { 52 | public int qSortByLoadOrder { get; set; } 53 | } 54 | 55 | public class QDef 56 | { 57 | public List qFieldDefs { get; set; } 58 | public List qFieldLabels { get; set; } 59 | public List qSortCriterias { get; set; } 60 | } 61 | 62 | public class QInitialDataFetch 63 | { 64 | public int qTop { get; set; } 65 | public int qHeight { get; set; } 66 | public int qLeft { get; set; } 67 | public int qWidth { get; set; } 68 | } 69 | 70 | public class QListObjectDef 71 | { 72 | public string qStateName { get; set; } 73 | public string qLibraryId { get; set; } 74 | public QDef qDef { get; set; } 75 | public List qInitialDataFetch { get; set; } 76 | } 77 | 78 | public class CreateSessionObjectParam 79 | { 80 | public QInfo qInfo { get; set; } 81 | public QListObjectDef qListObjectDef { get; set; } 82 | } 83 | 84 | public class CreateSessionObject 85 | { 86 | public string jsonrpc { get; set; } 87 | public int id { get; set; } 88 | public string method { get; set; } 89 | public int handle { get; set; } 90 | public List @params { get; set; } 91 | } 92 | 93 | 94 | public class QlikSenseTaskApp 95 | { 96 | public string id { get; set; } 97 | public string name { get; set; } 98 | } 99 | 100 | public class QlikSenseTask 101 | { 102 | public string name { get; set; } 103 | public int taskType { get; set; } 104 | public bool enabled { get; set; } 105 | public int taskSessionTimeout { get; set; } 106 | public int maxRetries { get; set; } 107 | public List tags { get; set; } 108 | public QlikSenseTaskApp app { get; set; } 109 | public bool isManuallyTriggered { get; set; } 110 | public List customProperties { get; set; } 111 | } 112 | 113 | public class QlikSenseCreateTask 114 | { 115 | public QlikSenseTask task { get; set; } 116 | } 117 | 118 | public class QlikSenseTaskAppResult 119 | { 120 | public string name { get; set; } 121 | public string appId { get; set; } 122 | public string publishTime { get; set; } 123 | public bool published { get; set; } 124 | public object stream { get; set; } 125 | public object privileges { get; set; } 126 | public string id { get; set; } 127 | } 128 | 129 | public class QlikSenseTaskExecutionGuid 130 | { 131 | public string value { get; set; } 132 | } 133 | 134 | public class QlikSenseTaskLastExecutionResult 135 | { 136 | public int status { get; set; } 137 | public string startTime { get; set; } 138 | public string stopTime { get; set; } 139 | public int duration { get; set; } 140 | public object privileges { get; set; } 141 | public string id { get; set; } 142 | } 143 | 144 | public class QlikSenseTaskOperational 145 | { 146 | public QlikSenseTaskLastExecutionResult lastExecutionResult { get; set; } 147 | public string nextExecution { get; set; } 148 | public object privileges { get; set; } 149 | public string id { get; set; } 150 | } 151 | 152 | public class QlikSenseCreateTaskResult 153 | { 154 | public List customProperties { get; set; } 155 | public QlikSenseTaskAppResult app { get; set; } 156 | public bool isManuallyTriggered { get; set; } 157 | public QlikSenseTaskOperational operational { get; set; } 158 | public string name { get; set; } 159 | public int taskType { get; set; } 160 | public bool enabled { get; set; } 161 | public int taskSessionTimeout { get; set; } 162 | public int maxRetries { get; set; } 163 | public List tags { get; set; } 164 | public List privileges { get; set; } 165 | public string id { get; set; } 166 | public string createdDate { get; set; } 167 | public string modifiedDate { get; set; } 168 | public string modifiedByUserName { get; set; } 169 | public string schemaPath { get; set; } 170 | } 171 | 172 | public class QlikSenseTaskResultLastExecutionResult 173 | { 174 | public int status { get; set; } 175 | public string startTime { get; set; } 176 | public string stopTime { get; set; } 177 | public int duration { get; set; } 178 | public object privileges { get; set; } 179 | public string id { get; set; } 180 | } 181 | 182 | public class QlikSenseTaskResultOperational 183 | { 184 | public QlikSenseTaskResultLastExecutionResult lastExecutionResult { get; set; } 185 | public string nextExecution { get; set; } 186 | public object privileges { get; set; } 187 | public string id { get; set; } 188 | } 189 | 190 | public class QlikSenseTaskResult 191 | { 192 | public QlikSenseTaskResultOperational operational { get; set; } 193 | public string name { get; set; } 194 | public int taskType { get; set; } 195 | public bool enabled { get; set; } 196 | public object privileges { get; set; } 197 | public string id { get; set; } 198 | } 199 | 200 | } -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/QlikSenseJSONObjects.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | namespace QlikSenseJSONObjects 3 | { 4 | // - /qrs/about 5 | public class QlikSenseAbout 6 | { 7 | public string buildVersion { get; set; } 8 | public string buildDate { get; set; } 9 | public string databaseProvider { get; set; } 10 | public int nodeType { get; set; } 11 | public string schemaPath { get; set; } 12 | } 13 | 14 | public class QlikSenseStream 15 | { 16 | public string name { get; set; } 17 | public object privileges { get; set; } 18 | public string id { get; set; } 19 | } 20 | 21 | public class QlikSenseApp 22 | { 23 | public string name { get; set; } 24 | public string appId { get; set; } 25 | public string publishTime { get; set; } 26 | public bool published { get; set; } 27 | public QlikSenseStream stream { get; set; } 28 | public object privileges { get; set; } 29 | public string id { get; set; } 30 | } 31 | 32 | 33 | public class QlikSenseCreateReloadTaskRequest 34 | { 35 | public string task { get; set; } 36 | /*public string appId { get; set; } 37 | public string publishTime { get; set; } 38 | public bool published { get; set; } 39 | public QlikSenseStream stream { get; set; } 40 | public object privileges { get; set; } 41 | public string id { get; set; }*/ 42 | } 43 | 44 | public class QInfo 45 | { 46 | public string qId { get; set; } 47 | public string qType { get; set; } 48 | } 49 | 50 | public class QSortCriteria 51 | { 52 | public int qSortByLoadOrder { get; set; } 53 | } 54 | 55 | public class QDef 56 | { 57 | public List qFieldDefs { get; set; } 58 | public List qFieldLabels { get; set; } 59 | public List qSortCriterias { get; set; } 60 | } 61 | 62 | public class QInitialDataFetch 63 | { 64 | public int qTop { get; set; } 65 | public int qHeight { get; set; } 66 | public int qLeft { get; set; } 67 | public int qWidth { get; set; } 68 | } 69 | 70 | public class QListObjectDef 71 | { 72 | public string qStateName { get; set; } 73 | public string qLibraryId { get; set; } 74 | public QDef qDef { get; set; } 75 | public List qInitialDataFetch { get; set; } 76 | } 77 | 78 | public class CreateSessionObjectParam 79 | { 80 | public QInfo qInfo { get; set; } 81 | public QListObjectDef qListObjectDef { get; set; } 82 | } 83 | 84 | public class CreateSessionObject 85 | { 86 | public string jsonrpc { get; set; } 87 | public int id { get; set; } 88 | public string method { get; set; } 89 | public int handle { get; set; } 90 | public List @params { get; set; } 91 | } 92 | 93 | 94 | public class QlikSenseTaskApp 95 | { 96 | public string id { get; set; } 97 | public string name { get; set; } 98 | } 99 | 100 | public class QlikSenseTask 101 | { 102 | public string name { get; set; } 103 | public int taskType { get; set; } 104 | public bool enabled { get; set; } 105 | public int taskSessionTimeout { get; set; } 106 | public int maxRetries { get; set; } 107 | public List tags { get; set; } 108 | public QlikSenseTaskApp app { get; set; } 109 | public bool isManuallyTriggered { get; set; } 110 | public List customProperties { get; set; } 111 | } 112 | 113 | public class QlikSenseCreateTask 114 | { 115 | public QlikSenseTask task { get; set; } 116 | } 117 | 118 | public class QlikSenseTaskAppResult 119 | { 120 | public string name { get; set; } 121 | public string appId { get; set; } 122 | public string publishTime { get; set; } 123 | public bool published { get; set; } 124 | public object stream { get; set; } 125 | public object privileges { get; set; } 126 | public string id { get; set; } 127 | } 128 | 129 | public class QlikSenseTaskExecutionGuid 130 | { 131 | public string value { get; set; } 132 | } 133 | 134 | public class QlikSenseTaskLastExecutionResult 135 | { 136 | public int status { get; set; } 137 | public string startTime { get; set; } 138 | public string stopTime { get; set; } 139 | public int duration { get; set; } 140 | public object privileges { get; set; } 141 | public string id { get; set; } 142 | } 143 | 144 | public class QlikSenseTaskOperational 145 | { 146 | public QlikSenseTaskLastExecutionResult lastExecutionResult { get; set; } 147 | public string nextExecution { get; set; } 148 | public object privileges { get; set; } 149 | public string id { get; set; } 150 | } 151 | 152 | public class QlikSenseCreateTaskResult 153 | { 154 | public List customProperties { get; set; } 155 | public QlikSenseTaskAppResult app { get; set; } 156 | public bool isManuallyTriggered { get; set; } 157 | public QlikSenseTaskOperational operational { get; set; } 158 | public string name { get; set; } 159 | public int taskType { get; set; } 160 | public bool enabled { get; set; } 161 | public int taskSessionTimeout { get; set; } 162 | public int maxRetries { get; set; } 163 | public List tags { get; set; } 164 | public List privileges { get; set; } 165 | public string id { get; set; } 166 | public string createdDate { get; set; } 167 | public string modifiedDate { get; set; } 168 | public string modifiedByUserName { get; set; } 169 | public string schemaPath { get; set; } 170 | } 171 | 172 | public class QlikSenseTaskResultLastExecutionResult 173 | { 174 | public int status { get; set; } 175 | public string startTime { get; set; } 176 | public string stopTime { get; set; } 177 | public int duration { get; set; } 178 | public object privileges { get; set; } 179 | public string id { get; set; } 180 | } 181 | 182 | public class QlikSenseTaskResultOperational 183 | { 184 | public QlikSenseTaskResultLastExecutionResult lastExecutionResult { get; set; } 185 | public string nextExecution { get; set; } 186 | public object privileges { get; set; } 187 | public string id { get; set; } 188 | } 189 | 190 | public class QlikSenseTaskResult 191 | { 192 | public QlikSenseTaskResultOperational operational { get; set; } 193 | public string name { get; set; } 194 | public int taskType { get; set; } 195 | public bool enabled { get; set; } 196 | public object privileges { get; set; } 197 | public string id { get; set; } 198 | } 199 | 200 | } -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/QlikSenseJSONObjects.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | namespace QlikSenseJSONObjects 3 | { 4 | // - /qrs/about 5 | public class QlikSenseAbout 6 | { 7 | public string buildVersion { get; set; } 8 | public string buildDate { get; set; } 9 | public string databaseProvider { get; set; } 10 | public int nodeType { get; set; } 11 | public string schemaPath { get; set; } 12 | } 13 | 14 | public class QlikSenseStream 15 | { 16 | public string name { get; set; } 17 | public object privileges { get; set; } 18 | public string id { get; set; } 19 | } 20 | 21 | public class QlikSenseApp 22 | { 23 | public string name { get; set; } 24 | public string appId { get; set; } 25 | public string publishTime { get; set; } 26 | public bool published { get; set; } 27 | public QlikSenseStream stream { get; set; } 28 | public object privileges { get; set; } 29 | public string id { get; set; } 30 | } 31 | 32 | 33 | public class QlikSenseCreateReloadTaskRequest 34 | { 35 | public string task { get; set; } 36 | /*public string appId { get; set; } 37 | public string publishTime { get; set; } 38 | public bool published { get; set; } 39 | public QlikSenseStream stream { get; set; } 40 | public object privileges { get; set; } 41 | public string id { get; set; }*/ 42 | } 43 | 44 | public class QInfo 45 | { 46 | public string qId { get; set; } 47 | public string qType { get; set; } 48 | } 49 | 50 | public class QSortCriteria 51 | { 52 | public int qSortByLoadOrder { get; set; } 53 | } 54 | 55 | public class QDef 56 | { 57 | public List qFieldDefs { get; set; } 58 | public List qFieldLabels { get; set; } 59 | public List qSortCriterias { get; set; } 60 | } 61 | 62 | public class QInitialDataFetch 63 | { 64 | public int qTop { get; set; } 65 | public int qHeight { get; set; } 66 | public int qLeft { get; set; } 67 | public int qWidth { get; set; } 68 | } 69 | 70 | public class QListObjectDef 71 | { 72 | public string qStateName { get; set; } 73 | public string qLibraryId { get; set; } 74 | public QDef qDef { get; set; } 75 | public List qInitialDataFetch { get; set; } 76 | } 77 | 78 | public class CreateSessionObjectParam 79 | { 80 | public QInfo qInfo { get; set; } 81 | public QListObjectDef qListObjectDef { get; set; } 82 | } 83 | 84 | public class CreateSessionObject 85 | { 86 | public string jsonrpc { get; set; } 87 | public int id { get; set; } 88 | public string method { get; set; } 89 | public int handle { get; set; } 90 | public List @params { get; set; } 91 | } 92 | 93 | 94 | public class QlikSenseTaskApp 95 | { 96 | public string id { get; set; } 97 | public string name { get; set; } 98 | } 99 | 100 | public class QlikSenseTask 101 | { 102 | public string name { get; set; } 103 | public int taskType { get; set; } 104 | public bool enabled { get; set; } 105 | public int taskSessionTimeout { get; set; } 106 | public int maxRetries { get; set; } 107 | public List tags { get; set; } 108 | public QlikSenseTaskApp app { get; set; } 109 | public bool isManuallyTriggered { get; set; } 110 | public List customProperties { get; set; } 111 | } 112 | 113 | public class QlikSenseCreateTask 114 | { 115 | public QlikSenseTask task { get; set; } 116 | } 117 | 118 | public class QlikSenseTaskAppResult 119 | { 120 | public string name { get; set; } 121 | public string appId { get; set; } 122 | public string publishTime { get; set; } 123 | public bool published { get; set; } 124 | public object stream { get; set; } 125 | public object privileges { get; set; } 126 | public string id { get; set; } 127 | } 128 | 129 | public class QlikSenseTaskExecutionGuid 130 | { 131 | public string value { get; set; } 132 | } 133 | 134 | public class QlikSenseTaskLastExecutionResult 135 | { 136 | public int status { get; set; } 137 | public string startTime { get; set; } 138 | public string stopTime { get; set; } 139 | public int duration { get; set; } 140 | public object privileges { get; set; } 141 | public string id { get; set; } 142 | } 143 | 144 | public class QlikSenseTaskOperational 145 | { 146 | public QlikSenseTaskLastExecutionResult lastExecutionResult { get; set; } 147 | public string nextExecution { get; set; } 148 | public object privileges { get; set; } 149 | public string id { get; set; } 150 | } 151 | 152 | public class QlikSenseCreateTaskResult 153 | { 154 | public List customProperties { get; set; } 155 | public QlikSenseTaskAppResult app { get; set; } 156 | public bool isManuallyTriggered { get; set; } 157 | public QlikSenseTaskOperational operational { get; set; } 158 | public string name { get; set; } 159 | public int taskType { get; set; } 160 | public bool enabled { get; set; } 161 | public int taskSessionTimeout { get; set; } 162 | public int maxRetries { get; set; } 163 | public List tags { get; set; } 164 | public List privileges { get; set; } 165 | public string id { get; set; } 166 | public string createdDate { get; set; } 167 | public string modifiedDate { get; set; } 168 | public string modifiedByUserName { get; set; } 169 | public string schemaPath { get; set; } 170 | } 171 | 172 | public class QlikSenseTaskResultLastExecutionResult 173 | { 174 | public int status { get; set; } 175 | public string startTime { get; set; } 176 | public string stopTime { get; set; } 177 | public int duration { get; set; } 178 | public object privileges { get; set; } 179 | public string id { get; set; } 180 | } 181 | 182 | public class QlikSenseTaskResultOperational 183 | { 184 | public QlikSenseTaskResultLastExecutionResult lastExecutionResult { get; set; } 185 | public string nextExecution { get; set; } 186 | public object privileges { get; set; } 187 | public string id { get; set; } 188 | } 189 | 190 | public class QlikSenseTaskResult 191 | { 192 | public QlikSenseTaskResultOperational operational { get; set; } 193 | public string name { get; set; } 194 | public int taskType { get; set; } 195 | public bool enabled { get; set; } 196 | public object privileges { get; set; } 197 | public string id { get; set; } 198 | } 199 | 200 | } -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/QRSwebclient.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.Specialized; 4 | using System.IO; 5 | using System.Net; 6 | using System.Text; 7 | using System.Security.Cryptography.X509Certificates; 8 | using System.Security.Principal; 9 | 10 | namespace SenseBuilder 11 | { 12 | public class QRSWebClient 13 | { 14 | private readonly CertificateWebClient _client; 15 | private readonly NameValueCollection _queryStringCollection; 16 | private string serverURL; 17 | public string ExecuteAs; 18 | 19 | public QRSWebClient(string QRSserverURL) 20 | { 21 | _client = new CertificateWebClient { Encoding = Encoding.UTF8 }; 22 | _client.Certificate = GetClientCertificate(); 23 | _queryStringCollection = new NameValueCollection { { "xrfkey", "ABCDEFG123456789" } }; 24 | ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 25 | serverURL = QRSserverURL; 26 | 27 | ExecuteAs = "UserDirectory=" + Environment.UserDomainName + "; UserId=" + Environment.UserName; 28 | //do a simple first GET to set cookies for subsequent actions (otherwise POST commands wont work) 29 | try 30 | { 31 | string resp = Get("/qrs/about"); 32 | } 33 | catch (Exception ex) 34 | { 35 | throw new Exception("Couldnt connect to the QRS at " + QRSserverURL + " , check the QRS is running at this address"); 36 | } 37 | } 38 | 39 | 40 | 41 | public string Put(string endpoint, string content) 42 | { 43 | SetHeaders(); 44 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 45 | 46 | _client.QueryString = queryStringCollection; 47 | 48 | try 49 | { 50 | return _client.UploadString(serverURL + endpoint, "Put", content); 51 | } 52 | catch (WebException ex) 53 | { 54 | throw new Exception(ParseWebException(ex)); 55 | } 56 | } 57 | 58 | public string Put(string endpoint, Dictionary queries) 59 | { 60 | SetHeaders(); 61 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 62 | 63 | if (queries != null) 64 | { 65 | foreach (KeyValuePair query in queries) 66 | queryStringCollection.Add(query.Key, query.Value); 67 | } 68 | 69 | _client.QueryString = queryStringCollection; 70 | 71 | try 72 | { 73 | return _client.UploadString(serverURL + endpoint, "Put", ""); 74 | } 75 | catch (WebException ex) 76 | { 77 | throw new Exception(ParseWebException(ex)); 78 | } 79 | } 80 | 81 | 82 | public byte[] PutFile(string endpoint, string filepath) 83 | { 84 | SetHeaders(); 85 | _client.QueryString = _queryStringCollection; 86 | 87 | try 88 | { 89 | return _client.UploadFile(serverURL + endpoint, "Put", filepath); 90 | } 91 | catch (WebException ex) 92 | { 93 | throw new Exception(ParseWebException(ex)); 94 | } 95 | } 96 | 97 | public string Post(string endpoint, string content) 98 | { 99 | SetHeaders(); 100 | _client.QueryString = _queryStringCollection; 101 | 102 | try 103 | { 104 | return _client.UploadString(serverURL + endpoint, "Post", content); 105 | } 106 | catch (WebException ex) 107 | { 108 | throw new Exception(ParseWebException(ex)); 109 | } 110 | } 111 | 112 | public string PostFile(string endpoint, string filepath, Dictionary queries) 113 | { 114 | SetHeaders(); 115 | 116 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 117 | 118 | if (queries != null) 119 | { 120 | foreach (KeyValuePair query in queries) 121 | queryStringCollection.Add(query.Key, query.Value); 122 | } 123 | _client.QueryString = queryStringCollection; 124 | 125 | try 126 | { 127 | byte[] result = _client.UploadFile(serverURL + endpoint, "Post", filepath); 128 | return Encoding.UTF8.GetString(result, 0, result.Length); 129 | } 130 | catch (WebException ex) 131 | { 132 | throw new Exception(ParseWebException(ex)); 133 | } 134 | } 135 | 136 | public string Delete(string endpoint) 137 | { 138 | SetHeaders(); 139 | _client.QueryString = _queryStringCollection; 140 | 141 | try 142 | { 143 | return _client.UploadString(serverURL + endpoint, "Delete", ""); 144 | } 145 | catch (WebException ex) 146 | { 147 | throw new Exception(ParseWebException(ex)); 148 | } 149 | } 150 | 151 | public string Get(string url) 152 | { 153 | return Get(url, null); 154 | } 155 | 156 | 157 | 158 | public string Get(string endpoint, Dictionary queries) 159 | { 160 | SetHeaders(); 161 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 162 | if (queries != null) 163 | { 164 | foreach (KeyValuePair query in queries) 165 | queryStringCollection.Add(query.Key, query.Value); 166 | } 167 | _client.QueryString = queryStringCollection; 168 | 169 | try 170 | { 171 | string response = _client.DownloadString(serverURL + endpoint); 172 | return response; 173 | } 174 | catch (WebException ex) 175 | { 176 | throw new Exception(ParseWebException(ex)); 177 | } 178 | } 179 | 180 | public void GetFile(string endpoint, string filepath) 181 | { 182 | SetHeaders(); 183 | 184 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 185 | 186 | _client.QueryString = queryStringCollection; 187 | 188 | try 189 | { 190 | _client.DownloadFile(serverURL + endpoint, filepath); 191 | return; 192 | } 193 | catch (WebException ex) 194 | { 195 | throw new Exception(ParseWebException(ex)); 196 | } 197 | } 198 | 199 | 200 | 201 | private void SetHeaders() 202 | { 203 | _client.Headers.Clear(); 204 | _client.Headers.Add("Accept-Charset", "utf-8"); 205 | _client.Headers.Add("Accept", "application/json"); 206 | _client.Headers.Add("Content-Type", "application/json"); 207 | _client.Headers.Add("X-Qlik-xrfkey", "ABCDEFG123456789"); 208 | _client.Headers.Add("X-QlikView-xrfkey", "ABCDEFG123456789"); 209 | _client.Headers.Add("X-Qlik-User", ExecuteAs); 210 | } 211 | 212 | private static X509Certificate2 GetClientCertificate() 213 | { 214 | X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser); 215 | 216 | store.Open(OpenFlags.ReadOnly); 217 | foreach (X509Certificate2 cert in store.Certificates) 218 | { 219 | if (cert.FriendlyName == "QlikClient") 220 | { 221 | store.Close(); 222 | return cert; 223 | } 224 | } 225 | 226 | throw new Exception("Could not find QlikClient certificate"); 227 | } 228 | 229 | 230 | private static string ParseWebException(WebException exception) 231 | { 232 | if (exception.Status == WebExceptionStatus.ConnectFailure) 233 | return exception.Status + ": " + exception.Message; 234 | 235 | HttpWebResponse webResponse = (HttpWebResponse)exception.Response; 236 | Stream responseStream = webResponse.GetResponseStream(); 237 | return webResponse.StatusDescription + (responseStream != null ? ": " + new StreamReader(responseStream).ReadToEnd() : string.Empty); 238 | } 239 | } 240 | 241 | 242 | class CertificateWebClient : WebClient 243 | { 244 | public X509Certificate2 Certificate { get; set; } 245 | 246 | protected override WebRequest GetWebRequest(Uri address) 247 | { 248 | HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address); 249 | request.ClientCertificates.Add(Certificate); 250 | return request; 251 | } 252 | } 253 | 254 | } 255 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/QRSwebclient.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.Specialized; 4 | using System.IO; 5 | using System.Net; 6 | using System.Text; 7 | using System.Security.Cryptography.X509Certificates; 8 | using System.Security.Principal; 9 | 10 | namespace SenseBuilder 11 | { 12 | public class QRSWebClient 13 | { 14 | private readonly CertificateWebClient _client; 15 | private readonly NameValueCollection _queryStringCollection; 16 | private string serverURL; 17 | public string ExecuteAs; 18 | 19 | public QRSWebClient(string QRSserverURL) 20 | { 21 | _client = new CertificateWebClient { Encoding = Encoding.UTF8 }; 22 | _client.Certificate = GetClientCertificate(); 23 | _queryStringCollection = new NameValueCollection { { "xrfkey", "ABCDEFG123456789" } }; 24 | ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 25 | serverURL = QRSserverURL; 26 | 27 | ExecuteAs = "UserDirectory=" + Environment.UserDomainName + "; UserId=" + Environment.UserName; 28 | //do a simple first GET to set cookies for subsequent actions (otherwise POST commands wont work) 29 | try 30 | { 31 | string resp = Get("/qrs/about"); 32 | } 33 | catch (Exception ex) 34 | { 35 | throw new Exception("Couldnt connect to the QRS at " + QRSserverURL + " , check the QRS is running at this address. Message: " + ex.Message); 36 | } 37 | } 38 | 39 | 40 | 41 | public string Put(string endpoint, string content) 42 | { 43 | SetHeaders(); 44 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 45 | 46 | _client.QueryString = queryStringCollection; 47 | 48 | try 49 | { 50 | return _client.UploadString(serverURL + endpoint, "Put", content); 51 | } 52 | catch (WebException ex) 53 | { 54 | throw new Exception(ParseWebException(ex)); 55 | } 56 | } 57 | 58 | public string Put(string endpoint, Dictionary queries) 59 | { 60 | SetHeaders(); 61 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 62 | 63 | if (queries != null) 64 | { 65 | foreach (KeyValuePair query in queries) 66 | queryStringCollection.Add(query.Key, query.Value); 67 | } 68 | 69 | _client.QueryString = queryStringCollection; 70 | 71 | try 72 | { 73 | return _client.UploadString(serverURL + endpoint, "Put", ""); 74 | } 75 | catch (WebException ex) 76 | { 77 | throw new Exception(ParseWebException(ex)); 78 | } 79 | } 80 | 81 | 82 | public byte[] PutFile(string endpoint, string filepath) 83 | { 84 | SetHeaders(); 85 | _client.QueryString = _queryStringCollection; 86 | 87 | try 88 | { 89 | return _client.UploadFile(serverURL + endpoint, "Put", filepath); 90 | } 91 | catch (WebException ex) 92 | { 93 | throw new Exception(ParseWebException(ex)); 94 | } 95 | } 96 | 97 | public string Post(string endpoint, string content) 98 | { 99 | SetHeaders(); 100 | _client.QueryString = _queryStringCollection; 101 | 102 | try 103 | { 104 | return _client.UploadString(serverURL + endpoint, "Post", content); 105 | } 106 | catch (WebException ex) 107 | { 108 | throw new Exception(ParseWebException(ex)); 109 | } 110 | } 111 | 112 | public string PostFile(string endpoint, string filepath, Dictionary queries) 113 | { 114 | SetHeaders(); 115 | 116 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 117 | 118 | if (queries != null) 119 | { 120 | foreach (KeyValuePair query in queries) 121 | queryStringCollection.Add(query.Key, query.Value); 122 | } 123 | _client.QueryString = queryStringCollection; 124 | 125 | try 126 | { 127 | byte[] result = _client.UploadFile(serverURL + endpoint, "Post", filepath); 128 | return Encoding.UTF8.GetString(result, 0, result.Length); 129 | } 130 | catch (WebException ex) 131 | { 132 | throw new Exception(ParseWebException(ex)); 133 | } 134 | } 135 | 136 | public string Delete(string endpoint) 137 | { 138 | SetHeaders(); 139 | _client.QueryString = _queryStringCollection; 140 | 141 | try 142 | { 143 | return _client.UploadString(serverURL + endpoint, "Delete", ""); 144 | } 145 | catch (WebException ex) 146 | { 147 | throw new Exception(ParseWebException(ex)); 148 | } 149 | } 150 | 151 | public string Get(string url) 152 | { 153 | return Get(url, null); 154 | } 155 | 156 | 157 | 158 | public string Get(string endpoint, Dictionary queries) 159 | { 160 | SetHeaders(); 161 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 162 | if (queries != null) 163 | { 164 | foreach (KeyValuePair query in queries) 165 | queryStringCollection.Add(query.Key, query.Value); 166 | } 167 | _client.QueryString = queryStringCollection; 168 | 169 | try 170 | { 171 | string response = _client.DownloadString(serverURL + endpoint); 172 | return response; 173 | } 174 | catch (WebException ex) 175 | { 176 | throw new Exception(ParseWebException(ex)); 177 | } 178 | } 179 | 180 | public void GetFile(string endpoint, string filepath) 181 | { 182 | SetHeaders(); 183 | 184 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 185 | 186 | _client.QueryString = queryStringCollection; 187 | 188 | try 189 | { 190 | _client.DownloadFile(serverURL + endpoint, filepath); 191 | return; 192 | } 193 | catch (WebException ex) 194 | { 195 | throw new Exception(ParseWebException(ex)); 196 | } 197 | } 198 | 199 | 200 | 201 | private void SetHeaders() 202 | { 203 | _client.Headers.Clear(); 204 | _client.Headers.Add("Accept-Charset", "utf-8"); 205 | _client.Headers.Add("Accept", "application/json"); 206 | _client.Headers.Add("Content-Type", "application/json"); 207 | _client.Headers.Add("X-Qlik-xrfkey", "ABCDEFG123456789"); 208 | _client.Headers.Add("X-QlikView-xrfkey", "ABCDEFG123456789"); 209 | _client.Headers.Add("X-Qlik-User", ExecuteAs); 210 | } 211 | 212 | private static X509Certificate2 GetClientCertificate() 213 | { 214 | X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser); 215 | 216 | store.Open(OpenFlags.ReadOnly); 217 | foreach (X509Certificate2 cert in store.Certificates) 218 | { 219 | if (cert.FriendlyName == "QlikClient") 220 | { 221 | store.Close(); 222 | return cert; 223 | } 224 | } 225 | 226 | throw new Exception("Could not find QlikClient certificate"); 227 | } 228 | 229 | 230 | private static string ParseWebException(WebException exception) 231 | { 232 | if (exception.Status == WebExceptionStatus.ConnectFailure) 233 | return exception.Status + ": " + exception.Message; 234 | 235 | HttpWebResponse webResponse = (HttpWebResponse)exception.Response; 236 | Stream responseStream = webResponse.GetResponseStream(); 237 | return webResponse.StatusDescription + (responseStream != null ? ": " + new StreamReader(responseStream).ReadToEnd() : string.Empty); 238 | } 239 | } 240 | 241 | 242 | class CertificateWebClient : WebClient 243 | { 244 | public X509Certificate2 Certificate { get; set; } 245 | 246 | protected override WebRequest GetWebRequest(Uri address) 247 | { 248 | HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address); 249 | request.ClientCertificates.Add(Certificate); 250 | return request; 251 | } 252 | } 253 | 254 | } 255 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/QRSwebclient.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.Specialized; 4 | using System.IO; 5 | using System.Net; 6 | using System.Text; 7 | using System.Security.Cryptography.X509Certificates; 8 | using System.Security.Principal; 9 | 10 | namespace SenseBuilder 11 | { 12 | public class QRSWebClient 13 | { 14 | private readonly CertificateWebClient _client; 15 | private readonly NameValueCollection _queryStringCollection; 16 | private string serverURL; 17 | public string ExecuteAs; 18 | 19 | public QRSWebClient(string QRSserverURL) 20 | { 21 | 22 | _client = new CertificateWebClient { Encoding = Encoding.UTF8 }; 23 | _client.Certificate = GetClientCertificate(); 24 | _queryStringCollection = new NameValueCollection { { "xrfkey", "ABCDEFG123456789" } }; 25 | // ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 26 | ServicePointManager.SecurityProtocol = SecurityProtocolType.SystemDefault; 27 | serverURL = QRSserverURL; 28 | 29 | ExecuteAs = "UserDirectory=" + Environment.UserDomainName + "; UserId=" + Environment.UserName; 30 | //do a simple first GET to set cookies for subsequent actions (otherwise POST commands wont work) 31 | try 32 | { 33 | string resp = Get("/qrs/about"); 34 | } 35 | catch (Exception ex) 36 | { 37 | throw new Exception("Couldnt connect to the QRS at " + QRSserverURL + " , check the QRS is running at this address. Message: " + ex.Message); 38 | } 39 | } 40 | 41 | 42 | 43 | public string Put(string endpoint, string content) 44 | { 45 | SetHeaders(); 46 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 47 | 48 | _client.QueryString = queryStringCollection; 49 | 50 | try 51 | { 52 | return _client.UploadString(serverURL + endpoint, "Put", content); 53 | } 54 | catch (WebException ex) 55 | { 56 | throw new Exception(ParseWebException(ex)); 57 | } 58 | } 59 | 60 | public string Put(string endpoint, Dictionary queries) 61 | { 62 | SetHeaders(); 63 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 64 | 65 | if (queries != null) 66 | { 67 | foreach (KeyValuePair query in queries) 68 | queryStringCollection.Add(query.Key, query.Value); 69 | } 70 | 71 | _client.QueryString = queryStringCollection; 72 | 73 | try 74 | { 75 | return _client.UploadString(serverURL + endpoint, "Put", ""); 76 | } 77 | catch (WebException ex) 78 | { 79 | throw new Exception(ParseWebException(ex)); 80 | } 81 | } 82 | 83 | 84 | public byte[] PutFile(string endpoint, string filepath) 85 | { 86 | SetHeaders(); 87 | _client.QueryString = _queryStringCollection; 88 | 89 | try 90 | { 91 | return _client.UploadFile(serverURL + endpoint, "Put", filepath); 92 | } 93 | catch (WebException ex) 94 | { 95 | throw new Exception(ParseWebException(ex)); 96 | } 97 | } 98 | 99 | public string Post(string endpoint, string content) 100 | { 101 | SetHeaders(); 102 | _client.QueryString = _queryStringCollection; 103 | 104 | try 105 | { 106 | return _client.UploadString(serverURL + endpoint, "Post", content); 107 | } 108 | catch (WebException ex) 109 | { 110 | throw new Exception(ParseWebException(ex)); 111 | } 112 | } 113 | 114 | public string PostFile(string endpoint, string filepath, Dictionary queries) 115 | { 116 | SetHeaders(); 117 | 118 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 119 | 120 | if (queries != null) 121 | { 122 | foreach (KeyValuePair query in queries) 123 | queryStringCollection.Add(query.Key, query.Value); 124 | } 125 | _client.QueryString = queryStringCollection; 126 | 127 | try 128 | { 129 | byte[] result = _client.UploadFile(serverURL + endpoint, "Post", filepath); 130 | return Encoding.UTF8.GetString(result, 0, result.Length); 131 | } 132 | catch (WebException ex) 133 | { 134 | throw new Exception(ParseWebException(ex)); 135 | } 136 | } 137 | 138 | public string Delete(string endpoint) 139 | { 140 | SetHeaders(); 141 | _client.QueryString = _queryStringCollection; 142 | 143 | try 144 | { 145 | return _client.UploadString(serverURL + endpoint, "Delete", ""); 146 | } 147 | catch (WebException ex) 148 | { 149 | throw new Exception(ParseWebException(ex)); 150 | } 151 | } 152 | 153 | public string Get(string url) 154 | { 155 | return Get(url, null); 156 | } 157 | 158 | 159 | 160 | public string Get(string endpoint, Dictionary queries) 161 | { 162 | SetHeaders(); 163 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 164 | if (queries != null) 165 | { 166 | foreach (KeyValuePair query in queries) 167 | queryStringCollection.Add(query.Key, query.Value); 168 | } 169 | _client.QueryString = queryStringCollection; 170 | 171 | try 172 | { 173 | string response = _client.DownloadString(serverURL + endpoint); 174 | return response; 175 | } 176 | catch (WebException ex) 177 | { 178 | throw new Exception(ParseWebException(ex)); 179 | } 180 | } 181 | 182 | public void GetFile(string endpoint, string filepath) 183 | { 184 | SetHeaders(); 185 | 186 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 187 | 188 | _client.QueryString = queryStringCollection; 189 | 190 | try 191 | { 192 | _client.DownloadFile(serverURL + endpoint, filepath); 193 | return; 194 | } 195 | catch (WebException ex) 196 | { 197 | throw new Exception(ParseWebException(ex)); 198 | } 199 | } 200 | 201 | 202 | 203 | private void SetHeaders() 204 | { 205 | 206 | 207 | _client.Headers.Clear(); 208 | _client.Headers.Add("Accept-Charset", "utf-8"); 209 | _client.Headers.Add("Accept", "application/json"); 210 | _client.Headers.Add("Content-Type", "application/json"); 211 | _client.Headers.Add("X-Qlik-xrfkey", "ABCDEFG123456789"); 212 | _client.Headers.Add("X-QlikView-xrfkey", "ABCDEFG123456789"); 213 | _client.Headers.Add("X-Qlik-User", ExecuteAs); 214 | } 215 | 216 | private static X509Certificate2 GetClientCertificate() 217 | { 218 | X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser); 219 | 220 | store.Open(OpenFlags.ReadOnly); 221 | foreach (X509Certificate2 cert in store.Certificates) 222 | { 223 | if (cert.FriendlyName == "QlikClient") 224 | { 225 | store.Close(); 226 | return cert; 227 | } 228 | } 229 | 230 | throw new Exception("Could not find QlikClient certificate"); 231 | } 232 | 233 | 234 | private static string ParseWebException(WebException exception) 235 | { 236 | if (exception.Status == WebExceptionStatus.ConnectFailure) 237 | return exception.Status + ": " + exception.Message; 238 | 239 | HttpWebResponse webResponse = (HttpWebResponse)exception.Response; 240 | Stream responseStream = webResponse.GetResponseStream(); 241 | return webResponse.StatusDescription + (responseStream != null ? ": " + new StreamReader(responseStream).ReadToEnd() : string.Empty); 242 | } 243 | } 244 | 245 | 246 | class CertificateWebClient : WebClient 247 | { 248 | public X509Certificate2 Certificate { get; set; } 249 | 250 | protected override WebRequest GetWebRequest(Uri address) 251 | { 252 | HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address); 253 | request.ClientCertificates.Add(Certificate); 254 | return request; 255 | } 256 | } 257 | 258 | } 259 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.IO; 7 | using System.Threading; 8 | 9 | using QlikSenseJSONObjects; 10 | using System.Diagnostics; 11 | using MyLogger; 12 | 13 | namespace QlikSenseTask 14 | { 15 | enum TaskStatus { NeverStarted, Triggered, Started, Queued, AbortInitiated, Aborting, Aborted, Success, Failed, Skipped, Retrying, Error, Reset }; 16 | 17 | class Program 18 | { 19 | //private QlikSenseJSONHelper qs; 20 | 21 | static void Main(string[] args) 22 | { 23 | //usage**** 24 | //-proxy:https://usral-msi -timeout:10000 -task:"test123" -wait 25 | //*** 26 | //Console.WriteLine("Use at your own risk. Created by Marcus Spitzmiller."); 27 | //Console.WriteLine(""); 28 | 29 | //Logger logger = new Logger(); 30 | //logger.Start(); 31 | //logger.SetLogLevel(LogLevel.Debug); 32 | string tasklogtxt = ""; 33 | 34 | //defaults 35 | string proxy = ""; 36 | Int32 timeout = 600; 37 | Int32 poll = 30; 38 | Int32 deletelog = -90; 39 | string task = ""; 40 | string logpath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 41 | 42 | bool synchronous = true; 43 | 44 | //global settings from config.txt 45 | string[] global = { }; 46 | if (File.Exists("config.txt")) 47 | { 48 | global = File.ReadAllLines("config.txt"); 49 | //args.CopyTo(global, 0); 50 | } 51 | 52 | string [] allargs = new string[args.Length + global.Length]; 53 | global.CopyTo(allargs, 0); 54 | args.CopyTo(allargs, global.Length); 55 | 56 | for (int i = 0; i < allargs.Length; i++) 57 | { 58 | string arg = allargs[i]; 59 | string[] param = arg.Split(':'); 60 | 61 | switch (param[0]) 62 | { 63 | case "-?": 64 | case "/?": 65 | Console.WriteLine("Usage:"); 66 | Console.WriteLine("-proxy: required example https://server.company.com"); 67 | Console.WriteLine(@"-task: required, example ""test 123"""); 68 | Console.WriteLine("-poll: optional, default 30"); 69 | Console.WriteLine("-log: optional, default exe directory"); 70 | Console.WriteLine("-deletelog:<# of days to keep of log files> optional, default -90 days"); 71 | Console.WriteLine("-wait:<# seconds to wait> optional, default 600"); 72 | Console.WriteLine(" omit -wait to return immediately"); 73 | Console.WriteLine(" use -wait to wait for the task to finish"); 74 | Console.WriteLine(" Return Codes:"); 75 | Console.WriteLine(" 0 - task completed successfully"); 76 | Console.WriteLine(" 4 - task timed out"); 77 | Console.WriteLine(" 8 - task failed"); 78 | Console.WriteLine(""); 79 | Console.WriteLine("Optionally define any or all parameters in config.txt"); 80 | Console.WriteLine(" (to be used globally for all tasks)"); 81 | Console.WriteLine(""); 82 | Console.WriteLine("Example usage:"); 83 | Console.WriteLine("qliksensetask -task:\"Reload License Monitor\" -proxy:https://localhost -wait:600 -poll:10 -log:\"e:\\log\" -deletelog:-30 "); 84 | Console.WriteLine(""); 85 | // Console.WriteLine("-debug optional"); 86 | // Console.WriteLine(" omit -wait to return immediately"); 87 | Console.WriteLine("press any key..."); 88 | Console.ReadKey(); 89 | Environment.Exit(0); 90 | break; 91 | case "-proxy": 92 | proxy = ""; 93 | for (int j = 1; j < param.Length; j++) 94 | { 95 | proxy += param[j]; 96 | if (j < param.Length - 1) proxy += ":"; //put back the colon 97 | } 98 | 99 | break; 100 | case "-wait": 101 | timeout = Convert.ToInt32(param[1]); 102 | 103 | break; 104 | case "-poll": 105 | poll = Convert.ToInt32(param[1]); 106 | break; 107 | case "-task": 108 | task = param[1]; 109 | //logger.Log(LogLevel.Information, "Task: " + task); 110 | 111 | break; 112 | case "-log": 113 | logpath = ""; 114 | for (int l = 1; l < param.Length; l++) 115 | { 116 | logpath += param[l]; 117 | if (l < param.Length - 1) logpath += ":"; //put back the colon 118 | } 119 | break; 120 | case "-deletelog": 121 | deletelog = Convert.ToInt32(param[1]); 122 | break; 123 | default: 124 | tasklogtxt = "Unrecognized: " + param[0]; 125 | //logger.Log(LogLevel.Information, "Unrecognized: " + param[0]); 126 | 127 | break; 128 | 129 | } 130 | 131 | } 132 | 133 | Logger logger = new Logger(); 134 | 135 | logger.Start(task, logpath); 136 | logger.SetLogLevel(LogLevel.Debug); 137 | 138 | logger.Log(LogLevel.Information, "Task: " + task); 139 | logger.Log(LogLevel.Information, "Proxy: " + proxy); 140 | logger.Log(LogLevel.Information, "Wait: " + timeout + " seconds"); 141 | logger.Log(LogLevel.Information, "Poll: " + poll + " seconds"); 142 | logger.Log(LogLevel.Information, "Log: " + logpath); 143 | logger.Log(LogLevel.Information, "Delete Log: " + deletelog + " days"); 144 | if (tasklogtxt.Length > 0) 145 | { 146 | logger.Log(LogLevel.Information, tasklogtxt); 147 | } 148 | logger.CleanLogFiles(logpath, deletelog); 149 | if (proxy == "" || task == "") 150 | { 151 | logger.Log(LogLevel.Fatal, "Proxy or Task undefined"); 152 | 153 | Environment.Exit(4); 154 | } 155 | 156 | int retval = 0; 157 | try 158 | { 159 | QlikSenseJSONHelper qs = new QlikSenseJSONHelper(proxy, 60000, logger); //http timeout 60 seconds 160 | 161 | logger.Log(LogLevel.Information, "Task is starting..."); 162 | QlikSenseTaskExecutionGuid taskexecutionguid = qs.StartTaskByName(task, synchronous); 163 | 164 | Stopwatch stopwatch = new Stopwatch(); 165 | stopwatch.Start(); 166 | 167 | TaskStatus status = (TaskStatus)qs.GetTaskStatusByName(task); //1 is running, 3 is success 168 | //while (status == 1 && stopwatch.Elapsed.Seconds < timeout) //running //1.x 169 | while((status == TaskStatus.NeverStarted || status == TaskStatus.Queued || 170 | status == TaskStatus.Retrying || status == TaskStatus.Started || status == TaskStatus.Triggered) && stopwatch.Elapsed.Seconds < timeout) 171 | { 172 | Thread.Sleep(poll * 1000); //wait 30 seconds and try again 173 | 174 | logger.Log(LogLevel.Information, "Task is running..."); 175 | status = (TaskStatus)qs.GetTaskStatusByName(task); //1 is running, 3 is success 176 | } 177 | 178 | if (stopwatch.Elapsed.Seconds > timeout) 179 | { 180 | logger.Log(LogLevel.Information, "Task timeout with status: " + status.ToString()); 181 | } 182 | else 183 | { 184 | logger.Log(LogLevel.Information, "Task finished with status: " + status.ToString()); 185 | } 186 | stopwatch.Stop(); 187 | 188 | 189 | if (status == TaskStatus.Success) //success 190 | { 191 | 192 | } 193 | else if (status == TaskStatus.Started) //still running 194 | { 195 | retval = 4; 196 | } 197 | else //problem 198 | { 199 | retval = 8; 200 | } 201 | } 202 | catch (Exception e) 203 | { 204 | logger.Log(LogLevel.Error, e.ToString()); 205 | 206 | if (e.ToString() == "Timeout: The operation has timed out") 207 | { 208 | retval = 4; 209 | } 210 | else 211 | { 212 | retval = 8; 213 | } 214 | } 215 | 216 | logger.Log(LogLevel.Information, "Returning Errorlevel " + retval.ToString()); 217 | 218 | logger.End(); 219 | Environment.Exit(retval); 220 | } 221 | } 222 | } 223 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-1.X/QlikSenseTask/QRSNTLMWebClient.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.Specialized; 4 | using System.IO; 5 | using System.Net; 6 | using System.Text; 7 | using System.Security.Principal; 8 | 9 | namespace QVnextDemoBuilder 10 | { 11 | public class QRSNTLMWebClient 12 | { 13 | private readonly CookierAwareWebClient _client; 14 | private readonly NameValueCollection _queryStringCollection; 15 | private string serverURL; 16 | 17 | public QRSNTLMWebClient(string QRSserverURL, Int32 requesttimeout) 18 | { 19 | _client = new CookierAwareWebClient { Encoding = Encoding.UTF8 }; 20 | _client.UseDefaultCredentials = true; 21 | _client.Timeout = requesttimeout; 22 | 23 | //_client.Credentials = CredentialCache.DefaultCredentials; 24 | 25 | _queryStringCollection = new NameValueCollection { { "xrfkey", "ABCDEFG123456789" } }; 26 | ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 27 | serverURL = QRSserverURL; 28 | 29 | //do a simple first GET to set cookies for subsequent actions (otherwise POST commands wont work) 30 | try 31 | { 32 | string resp = Get("/qrs/about"); 33 | } 34 | catch (Exception ex) 35 | { 36 | throw new Exception("Couldnt connect to the server at " + QRSserverURL + " , check that the Proxy and QRS are running."); 37 | } 38 | } 39 | 40 | 41 | 42 | public string Put(string endpoint, string content) 43 | { 44 | SetHeaders(); 45 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 46 | 47 | _client.QueryString = queryStringCollection; 48 | 49 | try 50 | { 51 | return _client.UploadString(serverURL + endpoint, "Put", content); 52 | } 53 | catch (WebException ex) 54 | { 55 | throw new Exception(ParseWebException(ex)); 56 | } 57 | } 58 | 59 | public string Put(string endpoint, Dictionary queries) 60 | { 61 | SetHeaders(); 62 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 63 | 64 | if (queries != null) 65 | { 66 | foreach (KeyValuePair query in queries) 67 | queryStringCollection.Add(query.Key, query.Value); 68 | } 69 | 70 | _client.QueryString = queryStringCollection; 71 | 72 | try 73 | { 74 | return _client.UploadString(serverURL + endpoint, "Put", ""); 75 | } 76 | catch (WebException ex) 77 | { 78 | throw new Exception(ParseWebException(ex)); 79 | } 80 | } 81 | 82 | public string Post(string endpoint, Dictionary queries) 83 | { 84 | SetHeaders(); 85 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 86 | 87 | if (queries != null) 88 | { 89 | foreach (KeyValuePair query in queries) 90 | queryStringCollection.Add(query.Key, query.Value); 91 | } 92 | 93 | _client.QueryString = queryStringCollection; 94 | 95 | try 96 | { 97 | 98 | 99 | return _client.UploadString(serverURL + endpoint, "Post", ""); 100 | } 101 | catch (WebException ex) 102 | { 103 | throw new Exception(ParseWebException(ex)); 104 | } 105 | } 106 | 107 | public byte[] PutFile(string endpoint, string filepath) 108 | { 109 | SetHeaders(); 110 | _client.QueryString = _queryStringCollection; 111 | 112 | try 113 | { 114 | return _client.UploadFile(serverURL + endpoint, "Put", filepath); 115 | } 116 | catch (WebException ex) 117 | { 118 | throw new Exception(ParseWebException(ex)); 119 | } 120 | } 121 | 122 | public string Post(string endpoint, string content) 123 | { 124 | SetHeaders(); 125 | //NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 126 | 127 | //_client.QueryString = queryStringCollection; 128 | 129 | try 130 | { 131 | return _client.UploadString(serverURL + endpoint, "Post", content); 132 | } 133 | catch (WebException ex) 134 | { 135 | throw new Exception(ParseWebException(ex)); 136 | } 137 | } 138 | 139 | public string PostFile(string endpoint, string filepath, Dictionary queries) 140 | { 141 | SetHeaders(); 142 | 143 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 144 | 145 | if (queries != null) 146 | { 147 | foreach (KeyValuePair query in queries) 148 | queryStringCollection.Add(query.Key, query.Value); 149 | } 150 | _client.QueryString = queryStringCollection; 151 | 152 | try 153 | { 154 | byte[] result = _client.UploadFile(serverURL + endpoint, "Post", filepath); 155 | return Encoding.UTF8.GetString(result, 0, result.Length); 156 | } 157 | catch (WebException ex) 158 | { 159 | throw new Exception(ParseWebException(ex)); 160 | } 161 | } 162 | 163 | public string Delete(string endpoint) 164 | { 165 | SetHeaders(); 166 | _client.QueryString = _queryStringCollection; 167 | 168 | try 169 | { 170 | return _client.UploadString(serverURL + endpoint, "DELETE", ""); 171 | } 172 | catch (WebException ex) 173 | { 174 | throw new Exception(ParseWebException(ex)); 175 | } 176 | } 177 | 178 | public string Get(string url) 179 | { 180 | return Get(url, null); 181 | } 182 | 183 | 184 | 185 | public string Get(string endpoint, Dictionary queries) 186 | { 187 | SetHeaders(); 188 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 189 | if (queries != null) 190 | { 191 | foreach (KeyValuePair query in queries) 192 | queryStringCollection.Add(query.Key, query.Value); 193 | } 194 | 195 | _client.QueryString = queryStringCollection; 196 | 197 | try 198 | { 199 | string response = _client.DownloadString(serverURL + endpoint); 200 | return response; 201 | } 202 | catch (WebException ex) 203 | { 204 | throw new Exception(ParseWebException(ex)); 205 | } 206 | } 207 | 208 | public void GetFile(string endpoint, string filepath) 209 | { 210 | SetHeaders(); 211 | 212 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 213 | 214 | _client.QueryString = queryStringCollection; 215 | 216 | try 217 | { 218 | _client.DownloadFile(serverURL + endpoint, filepath); 219 | return; 220 | } 221 | catch (WebException ex) 222 | { 223 | throw new Exception(ParseWebException(ex)); 224 | } 225 | } 226 | 227 | 228 | 229 | private void SetHeaders() 230 | { 231 | _client.Headers.Clear(); 232 | _client.Headers.Add("Accept-Charset", "utf-8"); 233 | _client.Headers.Add("Accept", "application/json"); 234 | _client.Headers.Add("Content-Type", "application/json"); 235 | _client.Headers.Add("X-Qlik-xrfkey", "ABCDEFG123456789"); 236 | _client.Headers.Add("X-QlikView-xrfkey", "ABCDEFG123456789"); 237 | _client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"); 238 | 239 | 240 | 241 | //_client.Headers.Add("X-Qlik-User", "UserDirectory=QTSEL; UserId=msi"); 242 | 243 | } 244 | 245 | 246 | 247 | 248 | private static string ParseWebException(WebException exception) 249 | { 250 | if (exception.Status == WebExceptionStatus.ConnectFailure || exception.Status == WebExceptionStatus.Timeout) 251 | return exception.Status + ": " + exception.Message; 252 | 253 | HttpWebResponse webResponse = (HttpWebResponse)exception.Response; 254 | Stream responseStream = webResponse.GetResponseStream(); 255 | return webResponse.StatusDescription + (responseStream != null ? ": " + new StreamReader(responseStream).ReadToEnd() : string.Empty); 256 | } 257 | } 258 | 259 | 260 | public class CookierAwareWebClient : WebClient 261 | { 262 | 263 | public CookieContainer QRSCookieContainer = new CookieContainer(); 264 | 265 | private Int32 timeout; 266 | public Int32 Timeout 267 | { 268 | get 269 | { 270 | return timeout; 271 | } 272 | set 273 | { 274 | timeout = value; 275 | } 276 | } 277 | 278 | protected override WebRequest GetWebRequest(Uri address) 279 | { 280 | HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address); 281 | request.CookieContainer = QRSCookieContainer; 282 | request.Timeout = this.timeout; 283 | 284 | return request; 285 | } 286 | 287 | 288 | } 289 | 290 | 291 | } 292 | 293 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-2.X/QlikSenseTask/QRSNTLMWebClient.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.Specialized; 4 | using System.IO; 5 | using System.Net; 6 | using System.Text; 7 | using System.Security.Principal; 8 | 9 | namespace QVnextDemoBuilder 10 | { 11 | public class QRSNTLMWebClient 12 | { 13 | private readonly CookierAwareWebClient _client; 14 | private readonly NameValueCollection _queryStringCollection; 15 | private string serverURL; 16 | 17 | public QRSNTLMWebClient(string QRSserverURL, Int32 requesttimeout) 18 | { 19 | _client = new CookierAwareWebClient { Encoding = Encoding.UTF8 }; 20 | _client.UseDefaultCredentials = true; 21 | _client.Timeout = requesttimeout; 22 | 23 | //_client.Credentials = CredentialCache.DefaultCredentials; 24 | 25 | _queryStringCollection = new NameValueCollection { { "xrfkey", "ABCDEFG123456789" } }; 26 | ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 27 | serverURL = QRSserverURL; 28 | 29 | //do a simple first GET to set cookies for subsequent actions (otherwise POST commands wont work) 30 | try 31 | { 32 | string resp = Get("/qrs/about"); 33 | } 34 | catch (Exception ex) 35 | { 36 | throw new Exception("Couldnt connect to the server at " + QRSserverURL + " , check that the Proxy and QRS are running. Message: " + ex.Message); 37 | } 38 | } 39 | 40 | 41 | 42 | public string Put(string endpoint, string content) 43 | { 44 | SetHeaders(); 45 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 46 | 47 | _client.QueryString = queryStringCollection; 48 | 49 | try 50 | { 51 | return _client.UploadString(serverURL + endpoint, "Put", content); 52 | } 53 | catch (WebException ex) 54 | { 55 | throw new Exception(ParseWebException(ex)); 56 | } 57 | } 58 | 59 | public string Put(string endpoint, Dictionary queries) 60 | { 61 | SetHeaders(); 62 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 63 | 64 | if (queries != null) 65 | { 66 | foreach (KeyValuePair query in queries) 67 | queryStringCollection.Add(query.Key, query.Value); 68 | } 69 | 70 | _client.QueryString = queryStringCollection; 71 | 72 | try 73 | { 74 | return _client.UploadString(serverURL + endpoint, "Put", ""); 75 | } 76 | catch (WebException ex) 77 | { 78 | throw new Exception(ParseWebException(ex)); 79 | } 80 | } 81 | 82 | public string Post(string endpoint, Dictionary queries) 83 | { 84 | SetHeaders(); 85 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 86 | 87 | if (queries != null) 88 | { 89 | foreach (KeyValuePair query in queries) 90 | queryStringCollection.Add(query.Key, query.Value); 91 | } 92 | 93 | _client.QueryString = queryStringCollection; 94 | 95 | try 96 | { 97 | 98 | 99 | return _client.UploadString(serverURL + endpoint, "Post", ""); 100 | } 101 | catch (WebException ex) 102 | { 103 | throw new Exception(ParseWebException(ex)); 104 | } 105 | } 106 | 107 | public byte[] PutFile(string endpoint, string filepath) 108 | { 109 | SetHeaders(); 110 | _client.QueryString = _queryStringCollection; 111 | 112 | try 113 | { 114 | return _client.UploadFile(serverURL + endpoint, "Put", filepath); 115 | } 116 | catch (WebException ex) 117 | { 118 | throw new Exception(ParseWebException(ex)); 119 | } 120 | } 121 | 122 | public string Post(string endpoint, string content) 123 | { 124 | SetHeaders(); 125 | //NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 126 | 127 | //_client.QueryString = queryStringCollection; 128 | 129 | try 130 | { 131 | return _client.UploadString(serverURL + endpoint, "Post", content); 132 | } 133 | catch (WebException ex) 134 | { 135 | throw new Exception(ParseWebException(ex)); 136 | } 137 | } 138 | 139 | public string PostFile(string endpoint, string filepath, Dictionary queries) 140 | { 141 | SetHeaders(); 142 | 143 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 144 | 145 | if (queries != null) 146 | { 147 | foreach (KeyValuePair query in queries) 148 | queryStringCollection.Add(query.Key, query.Value); 149 | } 150 | _client.QueryString = queryStringCollection; 151 | 152 | try 153 | { 154 | byte[] result = _client.UploadFile(serverURL + endpoint, "Post", filepath); 155 | return Encoding.UTF8.GetString(result, 0, result.Length); 156 | } 157 | catch (WebException ex) 158 | { 159 | throw new Exception(ParseWebException(ex)); 160 | } 161 | } 162 | 163 | public string Delete(string endpoint) 164 | { 165 | SetHeaders(); 166 | _client.QueryString = _queryStringCollection; 167 | 168 | try 169 | { 170 | return _client.UploadString(serverURL + endpoint, "DELETE", ""); 171 | } 172 | catch (WebException ex) 173 | { 174 | throw new Exception(ParseWebException(ex)); 175 | } 176 | } 177 | 178 | public string Get(string url) 179 | { 180 | return Get(url, null); 181 | } 182 | 183 | 184 | 185 | public string Get(string endpoint, Dictionary queries) 186 | { 187 | SetHeaders(); 188 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 189 | if (queries != null) 190 | { 191 | foreach (KeyValuePair query in queries) 192 | queryStringCollection.Add(query.Key, query.Value); 193 | } 194 | 195 | _client.QueryString = queryStringCollection; 196 | 197 | try 198 | { 199 | string response = _client.DownloadString(serverURL + endpoint); 200 | return response; 201 | } 202 | catch (WebException ex) 203 | { 204 | throw new Exception(ParseWebException(ex)); 205 | } 206 | } 207 | 208 | public void GetFile(string endpoint, string filepath) 209 | { 210 | SetHeaders(); 211 | 212 | NameValueCollection queryStringCollection = new NameValueCollection(_queryStringCollection); 213 | 214 | _client.QueryString = queryStringCollection; 215 | 216 | try 217 | { 218 | _client.DownloadFile(serverURL + endpoint, filepath); 219 | return; 220 | } 221 | catch (WebException ex) 222 | { 223 | throw new Exception(ParseWebException(ex)); 224 | } 225 | } 226 | 227 | 228 | 229 | private void SetHeaders() 230 | { 231 | _client.Headers.Clear(); 232 | _client.Headers.Add("Accept-Charset", "utf-8"); 233 | _client.Headers.Add("Accept", "application/json"); 234 | _client.Headers.Add("Content-Type", "application/json"); 235 | _client.Headers.Add("X-Qlik-xrfkey", "ABCDEFG123456789"); 236 | _client.Headers.Add("X-QlikView-xrfkey", "ABCDEFG123456789"); 237 | _client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"); 238 | 239 | 240 | 241 | //_client.Headers.Add("X-Qlik-User", "UserDirectory=QTSEL; UserId=msi"); 242 | 243 | } 244 | 245 | 246 | 247 | 248 | private static string ParseWebException(WebException exception) 249 | { 250 | if (exception.Status == WebExceptionStatus.ConnectFailure || exception.Status == WebExceptionStatus.Timeout) 251 | return exception.Status + ": " + exception.Message; 252 | 253 | HttpWebResponse webResponse = (HttpWebResponse)exception.Response; 254 | Stream responseStream = webResponse.GetResponseStream(); 255 | return webResponse.StatusDescription + (responseStream != null ? ": " + new StreamReader(responseStream).ReadToEnd() : string.Empty); 256 | } 257 | } 258 | 259 | 260 | public class CookierAwareWebClient : WebClient 261 | { 262 | 263 | public CookieContainer QRSCookieContainer = new CookieContainer(); 264 | 265 | private Int32 timeout; 266 | public Int32 Timeout 267 | { 268 | get 269 | { 270 | return timeout; 271 | } 272 | set 273 | { 274 | timeout = value; 275 | } 276 | } 277 | 278 | protected override WebRequest GetWebRequest(Uri address) 279 | { 280 | HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address); 281 | request.CookieContainer = QRSCookieContainer; 282 | request.Timeout = this.timeout; 283 | 284 | return request; 285 | } 286 | 287 | 288 | } 289 | 290 | 291 | } 292 | 293 | -------------------------------------------------------------------------------- /QlikSenseTaskSource-3.X/QlikSenseTask/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.IO; 7 | using System.Threading; 8 | 9 | using QlikSenseJSONObjects; 10 | using System.Diagnostics; 11 | using MyLogger; 12 | 13 | namespace QlikSenseTask 14 | { 15 | enum TaskStatus { NeverStarted, Triggered, Started, Queued, AbortInitiated, Aborting, Aborted, Success, Failed, Skipped, Retrying, Error, Reset }; 16 | 17 | class Program 18 | { 19 | //private QlikSenseJSONHelper qs; 20 | 21 | static void Main(string[] args) 22 | { 23 | //usage**** 24 | //-proxy:https://usral-msi -timeout:10000 -task:"test123" -wait 25 | //*** 26 | //Console.WriteLine("Use at your own risk. Created by Marcus Spitzmiller."); 27 | //Console.WriteLine(""); 28 | 29 | //Logger logger = new Logger(); 30 | //logger.Start(); 31 | //logger.SetLogLevel(LogLevel.Debug); 32 | string tasklogtxt = ""; 33 | 34 | //defaults 35 | string proxy = ""; 36 | Int32 timeout = 600; 37 | Int32 poll = 30; 38 | Int32 deletelog = -90; 39 | string task = ""; 40 | string logpath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 41 | 42 | bool synchronous = true; 43 | 44 | //global settings from config.txt 45 | string[] global = { }; 46 | if (File.Exists("config.txt")) 47 | { 48 | global = File.ReadAllLines("config.txt"); 49 | //args.CopyTo(global, 0); 50 | } 51 | 52 | string [] allargs = new string[args.Length + global.Length]; 53 | global.CopyTo(allargs, 0); 54 | args.CopyTo(allargs, global.Length); 55 | 56 | for (int i = 0; i < allargs.Length; i++) 57 | { 58 | string arg = allargs[i]; 59 | string[] param = arg.Split(':'); 60 | 61 | switch (param[0]) 62 | { 63 | case "-?": 64 | case "/?": 65 | Console.WriteLine("Usage:"); 66 | Console.WriteLine("-proxy: required example https://server.company.com"); 67 | Console.WriteLine(@"-task: required, example ""test 123"""); 68 | Console.WriteLine("-poll: optional, default 30"); 69 | Console.WriteLine("-log: optional, default exe directory"); 70 | Console.WriteLine("-deletelog:<# of days to keep of log files> optional, default -90 days"); 71 | Console.WriteLine("-wait:<# seconds to wait> optional, default 600"); 72 | Console.WriteLine(" omit -wait to return immediately"); 73 | Console.WriteLine(" use -wait to wait for the task to finish"); 74 | Console.WriteLine(" Return Codes:"); 75 | Console.WriteLine(" 0 - task completed successfully"); 76 | Console.WriteLine(" 4 - task timed out"); 77 | Console.WriteLine(" 8 - task failed"); 78 | Console.WriteLine(""); 79 | Console.WriteLine("Optionally define any or all parameters in config.txt"); 80 | Console.WriteLine(" (to be used globally for all tasks)"); 81 | Console.WriteLine(""); 82 | Console.WriteLine("Example usage:"); 83 | Console.WriteLine("qliksensetask -task:\"Reload License Monitor\" -proxy:https://localhost -wait:600 -poll:10 -log:\"e:\\log\" -deletelog:-30 "); 84 | Console.WriteLine(""); 85 | // Console.WriteLine("-debug optional"); 86 | // Console.WriteLine(" omit -wait to return immediately"); 87 | Console.WriteLine("press any key..."); 88 | Console.ReadKey(); 89 | Environment.Exit(0); 90 | break; 91 | case "-proxy": 92 | proxy = ""; 93 | for (int j = 1; j < param.Length; j++) 94 | { 95 | proxy += param[j]; 96 | if (j < param.Length - 1) proxy += ":"; //put back the colon 97 | } 98 | 99 | break; 100 | case "-wait": 101 | timeout = Convert.ToInt32(param[1]); 102 | 103 | break; 104 | case "-poll": 105 | poll = Convert.ToInt32(param[1]); 106 | break; 107 | case "-task": 108 | task = param[1]; 109 | //logger.Log(LogLevel.Information, "Task: " + task); 110 | 111 | break; 112 | case "-log": 113 | logpath = ""; 114 | for (int l = 1; l < param.Length; l++) 115 | { 116 | logpath += param[l]; 117 | if (l < param.Length - 1) logpath += ":"; //put back the colon 118 | } 119 | break; 120 | case "-deletelog": 121 | deletelog = Convert.ToInt32(param[1]); 122 | break; 123 | default: 124 | tasklogtxt = "Unrecognized: " + param[0]; 125 | //logger.Log(LogLevel.Information, "Unrecognized: " + param[0]); 126 | 127 | break; 128 | 129 | } 130 | 131 | } 132 | 133 | Logger logger = new Logger(); 134 | 135 | logger.Start(task, logpath); 136 | logger.SetLogLevel(LogLevel.Debug); 137 | 138 | logger.Log(LogLevel.Information, "Task: " + task); 139 | logger.Log(LogLevel.Information, "Proxy: " + proxy); 140 | logger.Log(LogLevel.Information, "Wait: " + timeout + " seconds"); 141 | logger.Log(LogLevel.Information, "Poll: " + poll + " seconds"); 142 | logger.Log(LogLevel.Information, "Log: " + logpath); 143 | logger.Log(LogLevel.Information, "Delete Log: " + deletelog + " days"); 144 | if (tasklogtxt.Length > 0) 145 | { 146 | logger.Log(LogLevel.Information, tasklogtxt); 147 | } 148 | logger.CleanLogFiles(logpath, deletelog); 149 | if (proxy == "" || task == "") 150 | { 151 | logger.Log(LogLevel.Fatal, "Proxy or Task undefined"); 152 | 153 | Environment.Exit(4); 154 | } 155 | 156 | int retval = 0; 157 | try 158 | { 159 | logger.Log(LogLevel.Information, "Creating connection..."); 160 | QlikSenseJSONHelper qs = new QlikSenseJSONHelper(proxy, 60000, logger); //http timeout 60 seconds 161 | 162 | logger.Log(LogLevel.Information, "Task is starting..."); 163 | QlikSenseTaskExecutionGuid taskexecutionguid = qs.StartTaskByName(task, synchronous); 164 | 165 | if (timeout == 0) 166 | { 167 | logger.Log(LogLevel.Information, "Task submitted asynchronously..."); 168 | logger.End(); 169 | Environment.Exit(retval); 170 | } 171 | 172 | Stopwatch stopwatch = new Stopwatch(); 173 | stopwatch.Start(); 174 | 175 | TaskStatus status = (TaskStatus)qs.GetTaskStatusByName(task); //1 is running, 3 is success 176 | //while (status == 1 && stopwatch.Elapsed.Seconds < timeout) //running //1.x 177 | while((status == TaskStatus.NeverStarted || status == TaskStatus.Queued || 178 | status == TaskStatus.Retrying || status == TaskStatus.Started || status == TaskStatus.Triggered) && stopwatch.Elapsed.Seconds < timeout) 179 | { 180 | Thread.Sleep(poll * 1000); //wait 30 seconds and try again 181 | 182 | logger.Log(LogLevel.Information, "Task is running..."); 183 | status = (TaskStatus)qs.GetTaskStatusByName(task); //1 is running, 3 is success 184 | } 185 | 186 | if (stopwatch.Elapsed.Seconds > timeout) 187 | { 188 | logger.Log(LogLevel.Information, "Task timeout with status: " + status.ToString()); 189 | } 190 | else 191 | { 192 | logger.Log(LogLevel.Information, "Task finished with status: " + status.ToString()); 193 | } 194 | stopwatch.Stop(); 195 | 196 | 197 | if (status == TaskStatus.Success) //success or async execution and we don't care about the result 198 | { 199 | 200 | } 201 | else if (status == TaskStatus.Started) //still running 202 | { 203 | retval = 4; 204 | } 205 | else //problem 206 | { 207 | retval = 8; 208 | } 209 | } 210 | catch (Exception e) 211 | { 212 | logger.Log(LogLevel.Error, e.ToString()); 213 | 214 | if (e.ToString() == "Timeout: The operation has timed out") 215 | { 216 | retval = 4; 217 | } 218 | else 219 | { 220 | retval = 8; 221 | } 222 | } 223 | 224 | logger.Log(LogLevel.Information, "Returning Errorlevel " + retval.ToString()); 225 | 226 | logger.End(); 227 | Environment.Exit(retval); 228 | } 229 | } 230 | } 231 | --------------------------------------------------------------------------------