2using System.Collections;
3using System.Collections.Generic;
5using System.IO.Compression;
9using System.Runtime.InteropServices;
13using NaughtyAttributes;
27 private bool downloadFailed;
28 private byte failCounter = 0;
32 private bool dontUploadDEV =
38 [SerializeField]
private string currentToken =
"";
42 DontDestroyOnLoad(gameObject);
44 DontDestroyOnLoad(
this);
45 Debug.Log(Application.absoluteURL);
46 Debug.Log(System.Reflection.Assembly.GetExecutingAssembly().Location);
47 if (Application.absoluteURL.ToLower().Contains(
"demo") ||
forceDemo
49 || System.Reflection.Assembly.GetExecutingAssembly().Location.ToLower().Contains(
"demo")
54 Debug.Log(
"Using Demo URL");
60 currentToken =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsImlhdCI6MTYyMTMxOTI3NCwiZXhwIjoxNjUyODU1Mjc0fQ.TfN9HNCWHisjIOMURPf3VowoXOyNxbE5t6-65jJu-LE";
153 currentToken = token.Replace(
"Bearer%20",
"").Replace(
"Bearer ",
"");
156 public IEnumerator
Login(
string user,
string pw, Action<UserManager.WSLogin> success, Action<string> fail)
158 WWWForm form =
new WWWForm();
159 form.AddField(
"email", user);
160 form.AddField(
"password", pw);
161 using (UnityWebRequest www = UnityWebRequest.Post(
url +
"users/login", form))
163 yield
return www.SendWebRequest();
165 if (www.isNetworkError || www.isHttpError)
167 Debug.LogError(www.error);
168 var errortext = www.error;
172 errortext = JsonUtility.FromJson<
ReturnError>(www.downloadHandler.text).message;
187 var token = HttpCookie.GetCookie(
"token");
188 if (
string.IsNullOrEmpty(token))
190 HttpCookie.SetCookie(
"token",
"Bearer%20" + currentToken);
191 HttpCookie.SetCookie(
"userId", login.user.id.ToString());
198 public IEnumerator
LoginWithQR(
string qr, Action<UserManager.WSLogin> success, Action<string> fail)
200 WWWForm form =
new WWWForm();
201 form.AddField(
"qrcode", qr);
202 using (UnityWebRequest www = UnityWebRequest.Post(
url +
"users/login-with-qr", form))
204 yield
return www.SendWebRequest();
206 if (www.isNetworkError || www.isHttpError)
208 Debug.LogError(www.error);
216 var token = HttpCookie.GetCookie(
"token");
217 if (
string.IsNullOrEmpty(token))
219 HttpCookie.SetCookie(
"token",
"Bearer%20" + currentToken);
220 HttpCookie.SetCookie(
"userId", login.user.id.ToString());
229 req.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
232 public IEnumerator
CreateCurse(
string name,
string description, Action<WSCourse> success)
239 WWWForm form =
new WWWForm();
240 form.AddField(
"name", @name);
241 if (description ==
"")
245 form.AddField(
"description", description);
246 using (UnityWebRequest www = UnityWebRequest.Post(
url +
"course/create-course", form))
248 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
249 yield
return www.SendWebRequest();
251 if (www.isNetworkError || www.isHttpError)
253 Debug.LogError(www.error);
270 WWWForm form =
new WWWForm();
271 form.AddField(
"name", @name);
272 if (description ==
"")
276 form.AddField(
"description", description);
277 using (UnityWebRequest www = UnityWebRequest.Post(
url +
"course/create-quality-course", form))
279 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
280 yield
return www.SendWebRequest();
282 if (www.isNetworkError || www.isHttpError)
284 Debug.LogError(www.error);
295 public IEnumerator
CreateDobotCurse(
string name,
string description, Action<WSCourse> success)
302 WWWForm form =
new WWWForm();
303 form.AddField(
"name", @name);
304 if (description ==
"")
308 form.AddField(
"description", description);
309 using (UnityWebRequest www = UnityWebRequest.Post(
url +
"course/create-digital-twin-course", form))
311 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
312 yield
return www.SendWebRequest();
314 if (www.isNetworkError || www.isHttpError)
316 Debug.LogError(www.error);
329 byte[] compressedBytes;
331 using (var uncompressedStream =
new MemoryStream(Encoding.UTF8.GetBytes(uncompressedString)))
333 using (var compressedStream =
new MemoryStream())
335 using (var compressorStream =
new GZipStream(compressedStream, System.IO.Compression.CompressionLevel.Fastest))
337 uncompressedStream.CopyTo(compressorStream);
339 compressedBytes = compressedStream.ToArray();
343 return Convert.ToBase64String(compressedBytes);
350 var compressedStream =
new MemoryStream(Convert.FromBase64String(compressedString));
352 byte[] decompressedBytes;
353 using (var decompressorStream =
new GZipStream(compressedStream, CompressionMode.Decompress))
355 using (var decompressedStream =
new MemoryStream())
357 decompressorStream.CopyTo(decompressedStream);
359 decompressedBytes = decompressedStream.ToArray();
363 return Encoding.UTF8.GetString(decompressedBytes);
370 return compressedString;
373 public IEnumerator
SaveCourse(
int id,
string data, Action<WSCourse> success)
375 if (Application.internetReachability == NetworkReachability.NotReachable)
387 WWWForm form =
new WWWForm();
388 form.AddField(
"courseId",
id);
389 form.AddField(
"data",
Compress(data));
390 using (UnityWebRequest www = UnityWebRequest.Post(
url +
"course/save-course", form))
392 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
393 yield
return www.SendWebRequest();
395 if (www.isNetworkError || www.isHttpError)
397 Debug.LogError(www.error);
408 private IEnumerator SaveCourse2(
int id,
string data, Action<WSCourse> success)
415 WWWForm form =
new WWWForm();
416 form.AddField(
"courseId",
id);
417 form.AddField(
"data", data);
418 using (UnityWebRequest www = UnityWebRequest.Post(
url +
"course/save-course", form))
420 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
421 yield
return www.SendWebRequest();
423 if (www.isNetworkError || www.isHttpError)
425 Debug.Log(www.error);
429 selectedLevel = JsonUtility.FromJson<WSReturnCourse>(www.downloadHandler.text).course;
438 WWWForm form =
new WWWForm();
439 form.AddField(
"courseId", courseId);
440 var userIdData = userIds.Aggregate(
"[", (current, userId) => current + (userId +
","));
442 form.AddField(
"userIds", userIdData);
444 using (UnityWebRequest www = UnityWebRequest.Post(
url +
"course/add-users-to-course", form))
446 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
447 yield
return www.SendWebRequest();
449 if (www.isNetworkError || www.isHttpError)
451 Debug.Log(www.error);
462 using (UnityWebRequest www = UnityWebRequest.Get(
url +
"course/all-by-user"))
464 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
465 yield
return www.SendWebRequest();
467 if (www.isNetworkError || www.isHttpError)
469 Debug.LogError(www.error);
473 cachedCourses = JsonUtility.FromJson<
WSCourses>(www.downloadHandler.text);
474 success(cachedCourses);
481 using (UnityWebRequest www = UnityWebRequest.Get(
url +
"course/quality-all-by-user"))
483 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
484 yield
return www.SendWebRequest();
486 if (www.isNetworkError || www.isHttpError)
488 Debug.LogError(www.error);
492 cachedCourses = JsonUtility.FromJson<
WSCourses>(www.downloadHandler.text);
493 success(cachedCourses);
500 using (UnityWebRequest www = UnityWebRequest.Get(
url +
"course/digital-twin-all-by-user"))
502 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
503 yield
return www.SendWebRequest();
505 if (www.isNetworkError || www.isHttpError)
507 Debug.LogError(www.error);
511 cachedCourses = JsonUtility.FromJson<
WSCourses>(www.downloadHandler.text);
512 success(cachedCourses);
519 using (UnityWebRequest www = UnityWebRequest.Get(
url +
"files"))
521 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
522 yield
return www.SendWebRequest();
524 if (www.isNetworkError || www.isHttpError)
526 Debug.LogError(www.error);
530 var files = JsonUtility.FromJson<
WSFiles>(
"{\"files\": " + www.downloadHandler.text +
"}");
538 foreach (var course
in cachedCourses.
courses)
540 if (name == course.name)
552 foreach (var course
in cachedCourses.
courses)
554 if (Convert.ToInt32(
id) == course.id)
566 foreach (var course
in cachedCourses.
courses)
568 if (Convert.ToInt32(
id) == course.id)
580 using (UnityWebRequest www = UnityWebRequest.Get(
url +
"course/all-by-user/" +
id))
582 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
583 yield
return www.SendWebRequest();
585 if (www.isNetworkError || www.isHttpError)
587 Debug.LogError(www.error);
592 var course = JsonUtility.FromJson<
WSCourse>(www.downloadHandler.text);
601 using (UnityWebRequest www = UnityWebRequest.Delete(
url +
"course/delete-course-by-id/" +
id))
603 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
604 yield
return www.SendWebRequest();
606 if (www.isNetworkError || www.isHttpError)
608 Debug.LogError(www.error);
621 WWWForm form =
new WWWForm();
623 form.AddField(
"fileName", fileName);
625 byte[] data = (
byte[])
null;
627 if (data.Length == 0)
630 using (UnityWebRequest www = UnityWebRequest.Delete(
url +
"files/delete-file"))
632 www.uploadHandler = (UploadHandler)
new UploadHandlerRaw(data);
634 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
636 foreach (KeyValuePair<string, string> header
in form.headers)
637 www.SetRequestHeader(header.Key, header.Value);
639 yield
return www.SendWebRequest();
641 if (www.isNetworkError || www.isHttpError)
643 Debug.Log(www.error);
654 if (dontUploadDEV || fileId == -1)
656 Debug.Log(
"Invalid fileId!");
661 WWWForm form =
new WWWForm();
663 form.AddField(
"fileId", fileId);
665 byte[] data = (
byte[])
null;
667 if (data.Length == 0)
670 using (UnityWebRequest www = UnityWebRequest.Delete($
"{(forceDemo ? demoUrl : url)}files/delete-file-by-id/{fileId}/{selectedLevel.id}"))
672 www.uploadHandler = (UploadHandler)
new UploadHandlerRaw(data);
674 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
676 foreach (KeyValuePair<string, string> header
in form.headers)
677 www.SetRequestHeader(header.Key, header.Value);
679 yield
return www.SendWebRequest();
681 if (www.isNetworkError || www.isHttpError)
683 Debug.LogError($
"Failed to delete file id: {fileId}");
684 Debug.LogError(www.error);
699 WWWForm form =
new WWWForm();
700 form.AddField(
"fileId", fileId);
702 byte[] data = (
byte[])
null;
704 if (data.Length == 0)
707 using (UnityWebRequest www = UnityWebRequest.Delete($
"{url}files/delete-file-by-id/{fileId}"))
709 www.uploadHandler = (UploadHandler)
new UploadHandlerRaw(data);
711 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
713 foreach (KeyValuePair<string, string> header
in form.headers)
714 www.SetRequestHeader(header.Key, header.Value);
716 yield
return www.SendWebRequest();
718 if (www.isNetworkError || www.isHttpError)
720 Debug.LogError(www.error);
737 using (UnityWebRequest www = UnityWebRequest.Get(
url +
"files/get-file-list-by-course-id/" +
selectedLevel.
id))
739 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
740 yield
return www.SendWebRequest();
742 if (www.isNetworkError || www.isHttpError)
744 Debug.LogError(www.error);
749 var fileLoader = FindObjectOfType<FileDragAndDrop>();
750 var list = JsonUtility.FromJson<
WSFiles>(www.downloadHandler.text);
751 BuildFileTree(
new[] { Application.streamingAssetsPath });
752 foreach (var wsFile
in list.files)
757 if (HasFile(wsFile.GetFileName(), out var path) && (!Path.GetExtension(wsFile.GetFileName()).EndsWith(
"hlp") && !Path.GetExtension(wsFile.GetFileName()).EndsWith(
"qiz")))
759 Debug.Log($
"Has File '{wsFile.GetFileName()}' on disk, loading it from there.");
760 fileLoader.OnFileData(
File.ReadAllBytes(path), wsFile.fileName, wsFile.modified,
new WSFile() { fileSavedURL = path });
764 Debug.Log($
"Downloading File '{wsFile.GetFileName()}' now...");
765 yield
return GetFile(wsFile.fileSavedName, bytes =>
767 Debug.Log($
"File {wsFile.GetFileName()} downloaded!");
768 fileLoader.OnFileData(bytes, wsFile.GetFileName(), wsFile.modified, wsFile);
780#if UNITY_EDITOR && false
781 failed(
"Disabled in editor!");
784 var fileLoader = FindObjectOfType<FileDragAndDrop>();
786 yield
return GetGlobalFiles((retlist) => { list = retlist.files; });
787 foreach (var wsFile
in list)
789 if (HasFile(wsFile.GetFileName(), out var path))
791 Debug.Log($
"Has File '{wsFile.GetFileName()}' on disk, loading it from there.");
792 fileLoader.OnFileData(
File.ReadAllBytes(path), wsFile.GetFileName(), wsFile.modified,
793 new WSFile() { fileSavedURL = path },
true);
797 yield
return GetFile(wsFile.fileSavedName,
798 bytes => { fileLoader.OnFileData(bytes, wsFile.GetFileName(), wsFile.modified, wsFile, true); });
801 fileLoader.SetLoading(
false);
803 yield
return fileLoader.LateRebuild();
820 private readonly List<string> fileTree =
new List<string>();
821 private void BuildFileTree(
string[] aFiles)
826 foreach (var aFile
in aFiles)
831 var dirs =
Directory.GetDirectories(aFile);
832 BuildFileTree(files);
837 fileTree.Add(aFile.Replace(
'/',
'\\'));
842 private bool HasFile(
string fileName, out
string path)
848 foreach (var aFile
in fileTree)
850 if (fileName.ToLower() == aFile.Substring(aFile.LastIndexOf(
'\\') + 1).ToLower())
865 failed(
"level ID is 0");
868 using (UnityWebRequest www = UnityWebRequest.Get(
url +
"files/get-file-list-by-course-id/" +
selectedLevel.
id))
870 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
871 yield
return www.SendWebRequest();
873 if (www.isNetworkError || www.isHttpError)
875 Debug.LogError(www.error);
880 success(JsonUtility.FromJson<
WSFiles>(www.downloadHandler.text));
885 public IEnumerator
GetUserById(
int id, Action<UserManager.WSUser> success, Action<string> failed)
889 var token = HttpCookie.GetCookie(
"token");
890 if (!token.Contains(currentToken) && !
string.IsNullOrEmpty(token))
892 Debug.Log($
"MiARák: tokens does not match\nSaved: Bearer%20{currentToken}\nOnPage: {token}");
900 using (UnityWebRequest www = UnityWebRequest.Get(
url +
"users/user-by-id?userId=" +
id))
902 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
903 yield
return www.SendWebRequest();
905 if (www.isNetworkError || www.isHttpError)
907 Debug.LogError(www.error);
917 public IEnumerator
GetFile(
string name, Action<
byte[]> success)
919 using (UnityWebRequest www = UnityWebRequest.Get(
url +
"files/get-by-filename?filename=" + @name))
921 if (currentToken !=
"")
923 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
925 yield
return www.SendWebRequest();
927 if (www.isNetworkError || www.isHttpError)
929 Debug.LogError(www.error);
933 success(www.downloadHandler.data);
940 WWWForm form =
new WWWForm();
941 form.headers.Clear();
942 form.headers[
"Content-Type"] =
"application/json";
944 form.AddField(
"userId", wsActions.userId);
945 form.AddField(
"savedActions", wsActions.ActionsToArray());
946 var body = JsonUtility.ToJson(wsActions);
948 using (UnityWebRequest www = UnityWebRequest.Post(
url +
"statistics/create-tact-statistics", body))
950 www.uploadHandler =
new UploadHandlerRaw(Encoding.UTF8.GetBytes(body));
951 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
952 www.SetRequestHeader(
"Content-Type",
"application/json");
953 yield
return www.SendWebRequest();
955 if (www.isNetworkError || www.isHttpError)
957 Debug.LogError(www.error);
958 Debug.LogError(www.downloadHandler.text);
967 public IEnumerator
AddUser(
string email,
string name,
int groupId, Action<UserManager.WSUser> success)
969 WWWForm form =
new WWWForm();
970 form.AddField(
"email", email);
971 form.AddField(
"name", @name);
972 form.AddField(
"groupId", groupId);
973 using (UnityWebRequest www = UnityWebRequest.Post(
url +
"users/registration-from-cms", form))
975 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
976 yield
return www.SendWebRequest();
978 if (www.isNetworkError || www.isHttpError)
980 Debug.LogError(www.error);
994 public IEnumerator
SetFilesToCourse(
int courseId,
int[] fileIdArray, Action success =
null)
997 for (var i = 0; i < fileIdArray.Length; i++)
999 var
id = fileIdArray[i];
1000 if (i + 1 >= fileIdArray.Length)
1010 Debug.Log($
"setfiles: {fd}");
1012 var sendData = $
"{{\"courseId\":{courseId},\"fileIds\" :{fd}}}";
1014 using (UnityWebRequest www = UnityWebRequest.Put(
url +
"course/set-file-to-course", sendData))
1016 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
1017 www.SetRequestHeader(
"Content-Type",
"application/json");
1018 yield
return www.SendWebRequest();
1020 if (www.isNetworkError || www.isHttpError)
1022 Debug.LogError(www.error);
1033 using (UnityWebRequest www = UnityWebRequest.Get(
url +
"users/get-all-without-admin"))
1035 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
1036 yield
return www.SendWebRequest();
1038 if (www.isNetworkError || www.isHttpError)
1040 Debug.LogError(www.error);
1044 Debug.Log(
"Success! :D");
1045 Debug.Log(www.downloadHandler.text);
1046 success(JsonUtility.FromJson<
UserManager.
WSUsers>(
"{\"users\":" + www.downloadHandler.text +
"}"));
1051 public IEnumerator
UploadFileToCurrent(
byte[] file,
string filename,
bool global, Action onSuccess, Action onFailed)
1056 public IEnumerator
UploadFileToCurrent(
byte[] file,
string filename,
bool global, Action<WSFile> onSuccess, Action onFailed)
1061 public IEnumerator
UploadFileToCourse(
int courseId,
byte[] file,
string filename,
bool global, Action<WSFile> onSuccess, Action onFailed)
1065 File.WriteAllBytes(
@"E:\aaaaaa\" + filename.Substring(filename.LastIndexOf(
'\\') + 1), file);
1069 WWWForm form =
new WWWForm();
1070 form.AddField(
"courseId", courseId);
1071 form.AddBinaryData(
"file", file, filename);
1072 form.AddField(
"isGlobal", global ?
"true" :
"false");
1074 byte[] data = (
byte[])
null;
1076 if (data.Length == 0)
1077 data = (
byte[])
null;
1078 Debug.Log($
"Uploading file: {filename} size: {GetSizeInMemory(data.LongLength)}");
1080 using (UnityWebRequest www = UnityWebRequest.Post(
url +
"files/upload-file/" + courseId, form))
1082 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
1084 www.uploadHandler = (UploadHandler)
new UploadHandlerRaw(data);
1085 yield
return www.SendWebRequest();
1087 if (www.isNetworkError || www.isHttpError)
1089 Debug.LogError(www.error);
1094 onSuccess(JsonUtility.FromJson<
WSFile>(www.downloadHandler.text));
1099 string GetSizeInMemory(
long bytesize)
1103 string[] sizes = {
"B",
"KB",
"MB",
"GB",
"TB" };
1104 double len = Convert.ToDouble(bytesize);
1106 while (len >= 1024D && order < sizes.Length - 1)
1112 return string.Format(System.Globalization.CultureInfo.CurrentCulture,
"{0:0.##} {1}", len, sizes[order]);
1115 public IEnumerator
SetUserCourseStatus(
int courseId,
int userId,
int courseTypeId,
bool isSuccess,
bool isFinished,
float timeSpent, Action onSuccess, Action onFailed)
1117 WWWForm form =
new WWWForm();
1118 form.AddField(
"courseId", courseId);
1119 form.AddField(
"userId", userId);
1120 form.AddField(
"courseTypeId", courseTypeId);
1121 form.AddField(
"isSuccess", isSuccess.ToString());
1122 form.AddField(
"isFinished", isFinished.ToString());
1123 form.AddField(
"timeSpent", timeSpent.ToString());
1125 byte[] data = (
byte[])
null;
1127 if (data.Length == 0)
1128 data = (
byte[])
null;
1130 using (UnityWebRequest www = UnityWebRequest.Post(
url +
"course/set-user-course-status", form))
1132 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
1134 www.uploadHandler = (UploadHandler)
new UploadHandlerRaw(data);
1135 yield
return www.SendWebRequest();
1137 if (www.isNetworkError || www.isHttpError)
1139 Debug.LogError(www.error);
1144 onSuccess?.Invoke();
1149 public IEnumerator
SetUserCourseStatus(
int courseTypeId,
bool isSuccess,
bool isFinished,
float timeSpent, Action onSuccess, Action onFailed)
1151 if (courseTypeId == -1)
1153 Debug.Log(
"TODO: courseTypeId with -1");
1164 File.WriteAllBytes(
@"E:\aaaaaa\screenshot.png", file);
1168 WWWForm form =
new WWWForm();
1169 form.AddBinaryData(
"file", file);
1171 byte[] data = (
byte[])
null;
1173 if (data.Length == 0)
1174 data = (
byte[])
null;
1176 using (UnityWebRequest www = UnityWebRequest.Post(
url +
"files/upload-image-to-ducument/" +
selectedLevel.
id, form))
1178 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
1180 www.uploadHandler = (UploadHandler)
new UploadHandlerRaw(data);
1181 yield
return www.SendWebRequest();
1183 if (www.isNetworkError || www.isHttpError)
1185 Debug.LogError(www.error);
1197 var retlist =
new List<string>();
1198 ids =
new List<int>();
1199 foreach (var wsCourse
in courses.courses)
1201 retlist.Add(wsCourse.name);
1202 ids.Add(wsCourse.id);
1247 return Attachment.CreateAttachmentFromString(
"",
fileName).Name;
1288 return $
"ID: {id} fileName: {GetFileName()} fileSavedName: {fileSavedName} fileSavedURL:{fileSavedURL} Global: {global}";
1295 StartCoroutine(
Login(
"admin@teszt.hu",
"teszt", s =>
1297 Debug.Log(s.user.@group.name);
1298 },
Debug.LogError));
1312 StartCoroutine(
UploadFileToCourse(23,
File.ReadAllBytes(
@"C:\Users\UnityTeam\Desktop\dev.png"),
"teszt.png",
false, (x) =>
Debug.Log(
"success!"), () =>
Debug.Log(
"fail :(")));
1315 private void DownloadDemos()
1317 StartCoroutine(BackupDemos());
1320 private IEnumerator BackupDemos()
1322 WSCourses courses =
default;
1324 foreach (var wsCourse
in courses.courses)
1326 if (wsCourse.name.ToLower().Contains(
"tolltarto"))
1328 File.WriteAllText(Path.Combine(
"E:\\backup", wsCourse.name) +
".json", wsCourse.data);
1329 if (wsCourse.files !=
null)
1331 Directory.CreateDirectory(Path.Combine(
"E:\\backup", wsCourse.name));
1332 foreach (var file
in wsCourse.files)
1334 yield
return GetFile(file.fileSavedName,
1335 bytes => { File.WriteAllBytes(Path.Combine(
"E:\\backup", wsCourse.name, file.GetFileName()), bytes); });
1355 private void DeleteID()
1376 StartCoroutine(SaveCourse2(20,
File.ReadAllText(
@"E:\backup\tolltarto.json"), courses =>
1381 private string StripPath(
string fullname)
1383 var retval = fullname;
1384 if (retval.IndexOf(
'\\') != -1)
1386 retval = retval.Remove(0, retval.LastIndexOf(
'\\') + 1);
1388 if (retval.IndexOf(
'/') != -1)
1390 retval = retval.Remove(0, retval.LastIndexOf(
'/') + 1);
1399 currentToken =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsImlhdCI6MTY3MTE5NzAwMiwiZXhwIjoxNzAyNzMzMDAyfQ.SphSSutfVh1eWLBOXMX04KOH-0gx-PpyLMf9THd20y4";
1400 var value =
new UploadedFile() { fileName =
"1lépés.qiz" };
1405 foreach (var wsFile
in wsfiles.files)
1407 if (wsFile.fileName == StripPath(value.fileName) || wsFile.GetFileName() == StripPath(value.fileName))
1413 currentToken =
null;
1418 private void FilesParse()
1420 var files = JsonUtility.FromJson<WSFile[]>(
"{\"files\": " +
File.ReadAllText(
@"E:\files.json") +
"}");
1425 private void DuplicateDeleter() => StartCoroutine(dd());
1427 private IEnumerator dd()
1430 selectedLevel.
id = courseID;
1433 using (UnityWebRequest www = UnityWebRequest.Get((forceDemo ? demoUrl : url) +
"files/get-file-list-by-course-id/" + courseID))
1435 www.SetRequestHeader(
"Authorization",
"Bearer " + currentToken);
1436 yield
return www.SendWebRequest();
1438 if (www.isNetworkError || www.isHttpError)
1440 Debug.LogError(www.error);
1444 var wsFiles = JsonUtility.FromJson<WSFiles>(www.downloadHandler.text).files;
1445 var stayingFiles =
new Dictionary<string, WSFile>();
1446 foreach (var file
in wsFiles)
1448 if (!stayingFiles.ContainsKey(file.fileName))
1450 stayingFiles.Add(file.fileName, file);
1454 if (stayingFiles[file.fileName] < file)
1456 stayingFiles[file.fileName] = file;
1463 foreach (var file
in wsFiles)
1465 if (stayingFiles[file.fileName] > file)
1467 yield
return DeleteFileById(file.id, () => { Debug.Log(
"File deleted: " + file.GetFileName() +
" ID: " + file.id); });
1472 selectedLevel.
id = 0;
1473 currentToken =
null;
1479 [DllImport(
"user32.dll")]
1480 internal static extern bool OpenClipboard(IntPtr hWndNewOwner);
1482 [DllImport(
"user32.dll")]
1483 internal static extern bool CloseClipboard();
1485 [DllImport(
"user32.dll")]
1486 internal static extern bool SetClipboardData(uint uFormat, IntPtr data);
1487 [SerializeField]
private string decopressThis;
1491 private void Decompress()
1493 var decomp = Decompress(decopressThis);
1495 OpenClipboard(IntPtr.Zero);
1497 var ptr = Marshal.StringToHGlobalUni(decomp);
1498 SetClipboardData(13, ptr);
1500 Marshal.FreeHGlobal(ptr);
UnityEngine.UI.Button Button
IEnumerator AddUser(string email, string name, int groupId, Action< UserManager.WSUser > success)
IEnumerator GetMyCurses(Action< WSCourses > success)
string GetDataFromCourseNameInCache(string name)
IEnumerator GetCurseByID(int id, Action< WSCourse > success)
IEnumerator DeleteFileByName(string fileName, Action success)
IEnumerator DeleteCurseByID(int id, Action success)
void AuthWebRequest(ref UnityWebRequest req)
IEnumerator UploadFileToCurrent(byte[] file, string filename, bool global, Action onSuccess, Action onFailed)
IEnumerator GetFile(string name, Action< byte[]> success)
IEnumerator UploadJson(UserManager.WSActions wsActions)
IEnumerator GetGlobalFiles(Action< WSFiles > success)
IEnumerator DeleteFileById(int fileId, Action success)
IEnumerator GetDobotMyCurses(Action< WSCourses > success)
IEnumerator GetQualityMyCurses(Action< WSCourses > success)
IEnumerator SetUserCourseStatus(int courseTypeId, bool isSuccess, bool isFinished, float timeSpent, Action onSuccess, Action onFailed)
IEnumerator LoadAllGlobalFiles(Action success, Action< string > failed)
WSCourse GetCourseFromIdInCache(string id)
IEnumerator CreateDobotCurse(string name, string description, Action< WSCourse > success)
IEnumerator GetAllUserWOAdmin(Action< UserManager.WSUsers > success)
List< string > CourseArrayToNameList(WSCourses courses, out List< int > ids)
string GetDataFromIdInCache(string id)
string Decompress(string compressedString)
IEnumerator SetFilesToCourse(int[] fileIdArray, Action success=null)
IEnumerator DeleteGlobalFileById(int fileId, Action success)
IEnumerator SetFilesToCourse(int courseId, int[] fileIdArray, Action success=null)
IEnumerator AddUsersToCourse(int[] userIds, int courseId, Action success)
IEnumerator CreateCurse(string name, string description, Action< WSCourse > success)
void GetMyCursesTesztLocal()
string Compress(string uncompressedString)
IEnumerator SaveCourse(int id, string data, Action< WSCourse > success)
IEnumerator GetUserById(int id, Action< UserManager.WSUser > success, Action< string > failed)
IEnumerator Login(string user, string pw, Action< UserManager.WSLogin > success, Action< string > fail)
IEnumerator UploadScreenshotCourse(byte[] file, Action onSuccess, Action onFailed)
IEnumerator GetAllFilesForThisCourse(Action< WSFiles > success, Action< string > failed)
IEnumerator LoadAllFilesForThisCourse(Action success, Action< string > failed)
void SaveToken(string token)
IEnumerator CreateQualityCurse(string name, string description, Action< WSCourse > success)
IEnumerator LoginWithQR(string qr, Action< UserManager.WSLogin > success, Action< string > fail)
IEnumerator SetUserCourseStatus(int courseId, int userId, int courseTypeId, bool isSuccess, bool isFinished, float timeSpent, Action onSuccess, Action onFailed)
IEnumerator UploadFileToCourse(int courseId, byte[] file, string filename, bool global, Action< WSFile > onSuccess, Action onFailed)
IEnumerator UploadFileToCurrent(byte[] file, string filename, bool global, Action< WSFile > onSuccess, Action onFailed)
string WSFileToUrl(WSFile file)
int finishedStudentNumber
int requiredStudentNumber
override string ToString()
static bool operator>(WSFile a, WSFile b)
static bool operator<(WSFile a, WSFile b)
static bool operator==(WSFile a, WSFile b)
override bool Equals(object obj)
static bool operator!=(WSFile a, WSFile b)