public void DeleteFolder(long folderId)
        {
            var userData       = _readOnlyRepository.First <Account>(a => a.EMail == User.Identity.Name);
            var folderToDelete = userData.Files.FirstOrDefault(f => f.Id == folderId);

            //if (!folderToDelete.IsDirectory)
            //    {
            //        var deleteRequest = new DeleteObjectRequest
            //        {
            //            BucketName = userData.BucketName,
            //            Key = fileToDelete.Url + fileToDelete.Name
            //        };
            //        AWSClient.DeleteObject(deleteRequest);
            //        fileToDelete.IsArchived = true;
            //    }
            //    else
            //    {
            var userFiles = userData.Files.Where(t => t.Url.Contains(folderToDelete.Name));

            foreach (var file in userFiles)
            {
                if (file == null)
                {
                    continue;
                }

                if (file.IsDirectory)
                {
                    DeleteFolder(file.Id);
                }

                var fileFolderArray = file.Url.Split('/');
                var fileFolder      = fileFolderArray.Length > 1 ? fileFolderArray[fileFolderArray.Length - 2] : fileFolderArray.FirstOrDefault();

                if (!file.IsArchived && fileFolder.Equals(folderToDelete.Name) &&
                    !string.Equals(file.Name, folderToDelete.Name))
                {
                    var deleteRequest = new DeleteObjectRequest
                    {
                        BucketName = userData.BucketName,
                        Key        = file.Url + file.Name
                    };
                    AWSClient.DeleteObject(deleteRequest);
                    AddActivity("El usuario ha borrado el folder " + folderToDelete.Name);
                    file.IsArchived = true;
                    _writeOnlyRepository.Update(userData);
                }
            }

            folderToDelete.IsArchived = true;
            var deleteRequest2 = new DeleteObjectRequest
            {
                BucketName = userData.BucketName,
                Key        = folderToDelete.Url + folderToDelete.Name + "/"
            };

            AWSClient.DeleteObject(deleteRequest2);
            _writeOnlyRepository.Update(userData);
            //}
        }
예제 #2
0
        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("Hello World!");

                IAWSClient   client      = new AWSClient();
                IDataService dataService = new DataService(client);

                Dictionary <string, string> dataToAdd = new Dictionary <string, string>();
                dataToAdd.Add("Id", "1");
                dataToAdd.Add("name", "Irina Pauna");
                dataToAdd.Add("email", "*****@*****.**");
                dataService.AddNewRecord(dataToAdd).GetAwaiter().GetResult();


                //dataService.GetItemByKey().GetAwaiter().GetResult();

                dataService.ScanTable().GetAwaiter().GetResult();

                Console.ReadKey();
            }
            catch (Exception ex)
            {
                var a = 1;
            }
        }
 // Use this for initialization
 void Start()
 {
     resetDataFields("...");
     awsClient  = this.GetComponent <AWSClient>();
     streamName = "AmazonRekognitionStreamOut";
     StartCoroutine(ReadKinesisStream());
 }
        public ActionResult CreateFolder(string folderName, string clientDateTime)
        {
            if (folderName.Length > 25)
            {
                Error("Folder name should be 25 characters maximum!!!");
                return(RedirectToAction("ListAllContent"));
            }

            var userData = _readOnlyRepository.First <Account>(x => x.EMail == User.Identity.Name);

            if (userData.Files.Count(l => l.Name == folderName) > 0)
            {
                Error("Folder already exists!!!");
                return(RedirectToAction("ListAllContent"));
            }

            var actualPath = Session["ActualPath"].ToString();

            var putFolder = new PutObjectRequest {
                BucketName = userData.BucketName, Key = actualPath + folderName + "/", ContentBody = string.Empty
            };

            AWSClient.PutObject(putFolder);
            AddActivity("El usuario ha creado el folder " + folderName);
            //var serverFolderPath = Server.MapPath("~/App_Data/UploadedFiles/" + actualPath + "/"+folderName);

            //var folderInfo = new DirectoryInfo(serverFolderPath);

            //if (folderInfo.Exists)
            //{
            //    Error("Folder already exists!!!");
            //    return RedirectToAction("ListAllContent");
            //}
            var clientDate = Convert.ToDateTime(clientDateTime);

            userData.Files.Add(new File
            {
                Name         = folderName,
                CreatedDate  = clientDate,
                FileSize     = 0,
                IsArchived   = false,
                IsDirectory  = true,
                ModifiedDate = clientDate,
                Type         = "",
                Url          = actualPath
            });

            //var result=Directory.CreateDirectory(serverFolderPath);

            //if(!result.Exists)
            //    Error("The folder was not created!!! Try again please!!!");
            //else
            //{
            Success("The folder was created successfully!!!");
            _writeOnlyRepository.Update(userData);
            //}

            return(RedirectToAction("ListAllContent"));
        }
예제 #5
0
 // Use this for initialization
 void Start()
 {
     _C             = GetComponent <AWSClient>();
     arCam          = this.GetComponent <Camera>();
     tex            = new Texture2D(arCam.pixelWidth, arCam.pixelHeight);
     screenRect     = new Rect(0, 0, arCam.pixelWidth, arCam.pixelHeight);
     exportInterval = new WaitForSeconds(2.0f);
 }
예제 #6
0
 public void Start()
 {
     _client = GameManager.Instance.Client;
     if (model != null)
     {
         Debug.Log("Retrieved model");
     }
     // DEPRECATED for now. Looking into ml-agents
     // GetLatestModel();
 }
    IEnumerator TestClient()
    {
        yield return(null);       // new WaitForSeconds(1f);

        try{
            // Test POC AWS client
            AWSClient awsClient  = AWSClientObject.GetComponent <AWSClient>();
            string    streamName = "AmazonRekognitionStreamOut";


            awsClient.ReadStream(streamName, (response) => {
                List <Amazon.Kinesis.Model.Record> records = response.Records;
                foreach (Amazon.Kinesis.Model.Record awsRecord in records)
                {
                    try{
                        string recordString = Encoding.ASCII.GetString(awsRecord.Data.ToArray());

                        Rekog.Record record = Rekog.Record.Deserialize(recordString);

                        // Debug.Log(record);

                        if (record.rekog_face_details.Count > 0)
                        {
                            printAge(record.rekog_face_details[0].AgeRange.Low, record.rekog_face_details[0].AgeRange.High);
                            printGender(record.rekog_face_details[0].Gender.Value, record.rekog_face_details[0].Gender.Confidence);

                            emotionStr = "";
                            foreach (Rekog.Emotion emotion in record.rekog_face_details[0].Emotions)
                            {
                                string s   = printEmotion(emotion.Type, emotion.Confidence);
                                emotionStr = emotionStr + s;
                            }
                            //emotionText.text = emotionStr;

                            //printConfidence(record.rekog_face_details[0].Mustache.Confidence, record.rekog_face_details[0].Mustache.Value,mustacheText);
                            //printConfidence(record.rekog_face_details[0].Beard.Confidence,record.rekog_face_details[0].Beard.Value ,beardText);
                            //printConfidence(record.rekog_face_details[0].Eyeglasses.Confidence, record.rekog_face_details[0].Eyeglasses.Value, glassesText);
                        }
                    } catch (Exception e) {
                        HandleError(e);
                    }
                }
            });
        } catch (Exception e) {
            HandleError(e);
        }
    }
예제 #8
0
    IEnumerator TestClient()
    {
        yield return(new WaitForSeconds(1));

        // Test POC AWS client
        AWSClient awsClient = AWSClientObject.GetComponent <AWSClient>();

        awsClient.ListStreams((ListStreamsResponse r) => {
            foreach (string streamName in r.StreamNames)
            {
                Debug.Log(streamName);
            }
            Debug.Log("This prints last.");
        });

        Debug.Log("You would think this would print last, but you'd be wrong.");
    }
        public ActionResult DownloadFile(int fileId)
        {
            var userData = _readOnlyRepository.First <Account>(a => a.EMail == User.Identity.Name);
            var fileData = userData.Files.FirstOrDefault(f => f.Id == fileId);

            var objectRequest = new GetObjectRequest {
                BucketName = userData.BucketName, Key = fileData.Url + fileData.Name, Timeout = int.MaxValue, ReadWriteTimeout = int.MaxValue
            };
            var file      = AWSClient.GetObject(objectRequest);
            var byteArray = new byte[file.ContentLength];

            file.ResponseStream.Read(byteArray, 0, (int)file.ContentLength);
            //var template_file = System.IO.File.ReadAllBytes();

            return(new FileContentResult(byteArray, fileData.Type)
            {
                FileDownloadName = fileData.Name
            });
        }
        public ActionResult RenameObject(long objectId, string newObjectName, string clientDateTime2)
        {
            var userData   = _readOnlyRepository.First <Account>(a => a.EMail == User.Identity.Name);
            var fileData   = _readOnlyRepository.GetById <File>(objectId);
            var clientDate = Convert.ToDateTime(clientDateTime2);

            if (!fileData.IsDirectory)
            {
                //Copy the object
                var copyRequest = new CopyObjectRequest
                {
                    SourceBucket      = userData.BucketName,
                    SourceKey         = fileData.Url + fileData.Name,
                    DestinationBucket = userData.BucketName,
                    DestinationKey    = fileData.Url + newObjectName + "." + (fileData.Name.Split('.').LastOrDefault()),
                    CannedACL         = S3CannedACL.PublicRead
                };

                AWSClient.CopyObject(copyRequest);

                //Delete the original
                var deleteRequest = new DeleteObjectRequest
                {
                    BucketName = userData.BucketName,
                    Key        = fileData.Url + fileData.Name
                };
                AWSClient.DeleteObject(deleteRequest);

                fileData.ModifiedDate = clientDate;
                fileData.Name         = newObjectName + "." + (fileData.Name.Split('.').LastOrDefault());
                _writeOnlyRepository.Update(fileData);
            }
            else
            {
                RenameFolder(objectId, fileData.Name, newObjectName, clientDateTime2);
                fileData.ModifiedDate = clientDate;
                fileData.Name         = newObjectName;
                _writeOnlyRepository.Update(fileData);
            }

            return(RedirectToAction("ListAllContent"));
        }
예제 #11
0
    // Use this for initialization
    void Start()
    {
        _C = GetComponent <AWSClient>();
        Camera arCam = this.GetComponent <Camera>();

        arCamTexture = new RenderTexture(arCam.pixelWidth, arCam.pixelHeight, 16, RenderTextureFormat.ARGB32);
        arCamTexture.Create();
        arCam.targetTexture = arCamTexture;

        tex = new Texture2D(arCamTexture.width, arCamTexture.height);

        #region Webcam
#if DEBUG_Webcam
        defaultBackground = background.texture;
        WebCamDevice[] devices = WebCamTexture.devices;

        if (devices.Length == 0)
        {
            Debug.Log("No camera detected");
            return;
        }

        for (int i = 0; i < devices.Length; i++)
        {
            if (devices[i].isFrontFacing)
            {
                webCam = new WebCamTexture(devices[i].name, Screen.width / 100, Screen.height / 100);
            }
        }

        if (webCam == null)
        {
            Debug.Log("Unable to find webcam");
            return;
        }

        webCam.Play();
        background.texture = webCam;
        camAvailable       = true;
#endif
        #endregion
    }
        public ActionResult DownloadAudio(long id)
        {
            var userData = _readOnlyRepository.First <Account>(a => a.EMail == User.Identity.Name);
            var fileData = userData.Files.FirstOrDefault(f => f.Id == id);

            var objectRequest = new GetObjectRequest
            {
                BucketName = userData.BucketName,
                Key        = fileData.Url + fileData.Name
            };
            var file      = AWSClient.GetObject(objectRequest);
            var byteArray = new byte[file.ContentLength];

            file.ResponseStream.Read(byteArray, 0, (int)file.ContentLength);
            //var template_file = System.IO.File.ReadAllBytes();

            return(File(byteArray, "audio/mp3"));


            // Assuming that the resume is an MS Word document...
            // return File(t.FileStream, fileData.Type);
        }
        public void RenameFolder(long objectId, string oldObjectName, string newObjectName, string clientDateTime2)
        {
            var userData = _readOnlyRepository.First <Account>(a => a.EMail == User.Identity.Name);
            var fileData = userData.Files.FirstOrDefault(f => f.Id == objectId);

            var userFiles = userData.Files.Where(t => t.Url.Contains(fileData.Name));

            var clientDate = Convert.ToDateTime(clientDateTime2);
            var newFoldUrl = string.IsNullOrEmpty(fileData.Url) || string.IsNullOrWhiteSpace(fileData.Url)
                ? newObjectName + "/"
                : fileData.Url.Replace(oldObjectName, newObjectName) + fileData.Name + "/";

            var putFolder = new PutObjectRequest {
                BucketName = userData.BucketName, Key = newFoldUrl, ContentBody = string.Empty
            };

            AWSClient.PutObject(putFolder);

            foreach (var file in userFiles)
            {
                if (file == null)
                {
                    continue;
                }

                if (file.IsDirectory)
                {
                    RenameFolder(file.Id, oldObjectName, newObjectName, clientDateTime2);
                }
                else
                {
                    //Copy the object
                    var newUrl = file.Url.Replace(oldObjectName, newObjectName) + file.Name;

                    var copyRequest = new CopyObjectRequest
                    {
                        SourceBucket      = userData.BucketName,
                        SourceKey         = file.Url + file.Name,
                        DestinationBucket = userData.BucketName,
                        DestinationKey    = newUrl,
                        CannedACL         = S3CannedACL.PublicRead
                    };

                    AWSClient.CopyObject(copyRequest);

                    //Delete the original
                    var deleteRequest = new DeleteObjectRequest
                    {
                        BucketName = userData.BucketName,
                        Key        = file.Url + file.Name
                    };
                    AWSClient.DeleteObject(deleteRequest);

                    file.ModifiedDate = clientDate;
                    file.Url          = file.Url.Replace(oldObjectName, newObjectName);
                    _writeOnlyRepository.Update(file);
                }
            }//fin foreach

            var deleteFolderRequest = new DeleteObjectRequest
            {
                BucketName = userData.BucketName,
                Key        = fileData.Url + fileData.Name + "/"
            };

            AWSClient.DeleteObject(deleteFolderRequest);
            var newFolderUrl = fileData.Url.Replace(oldObjectName, newObjectName);

            fileData.Url = newFolderUrl;

            _writeOnlyRepository.Update(fileData);
        }
예제 #14
0
        public ActionResult AccountSignUp(AccountSignUpModel model)
        {
            var result = _readOnlyRepository.Query <Account>(a => a.EMail == model.EMail);

            if (result.Any())
            {
                Error("Email account is already registered in this site!!!");
                return(View(model));
            }

            var account = Mapper.Map <Account>(model);

            account.IsArchived  = false;
            account.IsAdmin     = false;
            account.IsBlocked   = false;
            account.SpaceLimit  = 2408;
            account.Password    = EncriptacionMD5.Encriptar(model.Password);
            account.Isconfirmed = false;
            account.BucketName  = string.Format("mdp.{0}", Guid.NewGuid());

            //var account = new Account
            //{
            //    Name = accountModel.Name,
            //    LastName = accountModel.LastName,
            //    EMail = accountModel.EMail,
            //    IsArchived = false,
            //    IsBlocked = false,
            //    SpaceLimit = 500,
            //    UsedSpace = 0,
            //    Password = EncriptacionMD5.Encriptar(accountModel.Password)
            //};
            //account.AddRole(new Role{Name = "User",IsArchived = false});

            var createdAccount = _writeOnlyRepository.Create(account);

            var token = Convert.ToInt64(Session["userReferralId"]);

            if (token != 0)
            {
                var userReferring = _readOnlyRepository.GetById <Account>(token);
                userReferring.Referrals.Add(createdAccount);
                _writeOnlyRepository.Update(userReferring);
            }

            var serverFolderPath = Server.MapPath("~/App_Data/UploadedFiles/" + account.EMail);

            Directory.CreateDirectory(serverFolderPath);

            var newBucket = new PutBucketRequest {
                BucketName = account.BucketName
            };

            AWSClient.PutBucket(newBucket);

            var putFolder = new PutObjectRequest {
                BucketName = account.BucketName, Key = "Shared/", ContentBody = string.Empty
            };

            AWSClient.PutObject(putFolder);

            var sharedDirectory = serverFolderPath + "/Shared";

            Directory.CreateDirectory(sharedDirectory);
            //var serverFolderPath = Server.MapPath("~/App_Data/UploadedFiles/" + account.EMail);
            //Directory.CreateDirectory(serverFolderPath);

            //var sharedDirectory =serverFolderPath + "/Shared";
            //Directory.CreateDirectory(sharedDirectory);

            if (createdAccount.Files == null)
            {
                createdAccount.Files = new List <Domain.File>();
            }
            if (createdAccount.History == null)
            {
                createdAccount.History = new List <Actividades>();
            }

            createdAccount.Files.Add(new Domain.File
            {
                CreatedDate  = DateTime.Now,
                FileSize     = 0,
                IsArchived   = false,
                IsDirectory  = true,
                Name         = "Shared",
                Url          = "",
                Type         = "",
                ModifiedDate = DateTime.Now
            });
            _writeOnlyRepository.Update(createdAccount);



            AddActivity("El usuario se registro.", createdAccount);


            // ESTOOOOOOO
            #region EnvioCorreoParaNotificacion

            var fechaActual = DateTime.Now.Date;

            var pass        = result.FirstOrDefault().Id;
            var data        = "" + fechaActual.Day + fechaActual.Month + fechaActual.Year;
            var tokenConfir = pass + ";" + EncriptacionMD5.Encriptar(data);

            //var url = "http://minidropbox-1.apphb.com/PasswordReset/PasswordReset";
            var url = "http://minidropboxclase.apphb.com/Account/Confirmed";

            var emailBody = new StringBuilder("<b>Confirm your account of MiniDropbox</b>");
            emailBody.Append("<br/>");
            emailBody.Append("<br/>");
            emailBody.Append("<b>" + url + "?token=" + tokenConfir + "<b>");
            emailBody.Append("<br/>");
            emailBody.Append("<br/>");
            emailBody.Append("<b>This link is only valid through " + DateTime.Now.Day + "/" + DateTime.Now.Month + "/" + DateTime.Now.Year + "</b>");

            if (MailSender.SendEmail(model.EMail, "Confirm your account of MiniDropbox", emailBody.ToString()))
            {
                return(Cancelar());
            }

            Error("E-Mail failed to be sent, please try again!!!");
            return(View(model));

            #endregion


            return(Cancelar());
        }
        private bool fileUploader(HttpPostedFileBase fileControl, string user, string clientDateTime)
        {
            if (fileControl == null)
            {
                Error("There was a problem uploading the file  , please try again!!!");
                return(false);
            }
            var fileSize = fileControl.ContentLength;

            if (fileSize > 10485760)
            {
                Error("The file must be of 10 MB or less!!!");
                return(false);
            }
            var userData   = _readOnlyRepository.First <Account>(x => x.EMail == User.Identity.Name);
            var actualPath = Session["ActualPath"].ToString();
            var fileName   = Path.GetFileName(fileControl.FileName);
            var clientDate = Convert.ToDateTime(clientDateTime);
            //var serverFolderPath = Server.MapPath("~/App_Data/UploadedFiles/"+actualPath);

            //var directoryInfo = new DirectoryInfo(serverFolderPath);
            //if (!directoryInfo.Exists)
            //{
            //    directoryInfo.Create();
            //}
            //var sharedDirectory = new DirectoryInfo( Server.MapPath("~/App_Data/UploadedFiles/"+User.Identity.Name + "/Shared"));
            //if (!sharedDirectory.Exists)
            //{
            //    sharedDirectory.Create();
            //    userData.Files.Add(new File
            //    {
            //        Name = "Shared",
            //        CreatedDate = DateTime.Now,
            //        ModifiedDate = DateTime.Now,
            //        FileSize = 0,
            //        Type = "",
            //        Url = sharedDirectory.FullName,
            //        IsArchived = false,
            //        IsDirectory = true
            //    });
            //}
            //var path = Path.Combine(serverFolderPath, fileName);
            //var fileInfo = new DirectoryInfo(serverFolderPath+fileName);
            var putObjectRequest = new PutObjectRequest
            {
                BucketName  = userData.BucketName,
                Key         = actualPath + fileName,
                InputStream = fileControl.InputStream
            };
            var putResponse = AWSClient.PutObject(putObjectRequest);

            if (userData.Files.Count(l => l.Name == fileName && l.Url.EndsWith(actualPath) && !l.IsArchived) > 0)//Actualizar Info Archivo
            {
                var bddInfo = userData.Files.FirstOrDefault(f => f.Name == fileName);
                //bddInfo.ModifiedDate = clientDate;
                //bddInfo.Type = fileControl.ContentType;
                //bddInfo.FileSize = fileSize;
                bddInfo.FileVersions.Add(new FileVersion
                {
                    AmazonVersionId = putResponse.VersionId,
                    CreationDate    = clientDate,
                    FileSize        = fileSize,
                    IsArchived      = false
                });
                _writeOnlyRepository.Update(bddInfo);
            }
            else//Archivo nuevo
            {
                var newFile = new File
                {
                    Name         = fileName,
                    CreatedDate  = clientDate,
                    ModifiedDate = clientDate,
                    FileSize     = fileSize,
                    Type         = fileControl.ContentType,
                    Url          = actualPath,
                    IsArchived   = false,
                    IsDirectory  = false
                };
                //if (userData.Files == null)//Si es primer archivo subido por el usuario
                //{
                //    userData.Files = new List<File> {newFile};
                //    var retorno = _writeOnlyRepository.Update(userData);
                //    var file = retorno.Files.FirstOrDefault();
                //    file.FileVersions = new List<FileVersion>();
                //    file.FileVersions.Add(new FileVersion
                //    {
                //        AmazonVersionId = putResponse.VersionId,
                //        CreationDate = clientDate,
                //        FileSize = fileSize,
                //        IsArchived = false
                //    });
                //    _writeOnlyRepository.Update(file);
                //}
                //else
                //{
                userData.Files.Add(newFile);
                var archivo = _writeOnlyRepository.Update(userData).Files.LastOrDefault();
                archivo.FileVersions = new List <FileVersion>();
                archivo.FileVersions.Add(new FileVersion
                {
                    AmazonVersionId = putResponse.VersionId,
                    CreationDate    = clientDate,
                    FileSize        = fileSize,
                    IsArchived      = false
                });
                _writeOnlyRepository.Update(archivo);

                //}
            }
            //fileControl.SaveAs(path);

            return(true);
        }
        public ActionResult DeleteFile(int fileId)
        {
            var userData     = _readOnlyRepository.First <Account>(a => a.EMail == User.Identity.Name);
            var fileToDelete = userData.Files.FirstOrDefault(f => f.Id == fileId);

            if (fileToDelete != null)
            {
                if (!fileToDelete.IsDirectory)
                {
                    var deleteRequest = new DeleteObjectRequest
                    {
                        BucketName = userData.BucketName,
                        Key        = fileToDelete.Url + fileToDelete.Name
                    };
                    AWSClient.DeleteObject(deleteRequest);
                    fileToDelete.IsArchived = true;
                }
                else//Borrar carpeta con todos sus archivos
                {
                    DeleteFolder(fileToDelete.Id);
                    //var filesList = new List<KeyVersion>();
                    //var userFiles = userData.Files;

                    //foreach (var file in userFiles)
                    //{
                    //    if (file == null)
                    //        continue;

                    //    var fileFolderArray = file.Url.Split('/');
                    //    var fileFolder = fileFolderArray.Length > 1 ? fileFolderArray[fileFolderArray.Length - 2] : fileFolderArray.FirstOrDefault();

                    //    if (!file.IsArchived && fileFolder.Equals(fileToDelete.Name) &&
                    //        !string.Equals(file.Name, fileToDelete.Name))
                    //    {
                    //        filesList.Add(!file.IsDirectory ? new KeyVersion(file.Url + file.Name) : new KeyVersion(file.Url+file.Name + "/"));
                    //        file.IsArchived = true;
                    //    }

                    fileToDelete.IsArchived = true;
                    //}

                    //filesList.Add(new KeyVersion(fileToDelete.Name+"/"));

                    //var deleteRequest = new DeleteObjectsRequest
                    //{
                    //    BucketName = userData.BucketName,
                    //    Keys = filesList
                    //};

                    //AWSClient.DeleteObjects(deleteRequest);

                    var deleteRequest = new DeleteObjectRequest
                    {
                        BucketName = userData.BucketName,
                        Key        = fileToDelete.Url + fileToDelete.Name + "/"
                    };
                    AWSClient.DeleteObject(deleteRequest);
                    AddActivity("El usuario ha borrado el siguiente archivo " + fileToDelete.Name);
                }
                _writeOnlyRepository.Update(userData);
            }

            return(RedirectToAction("ListAllContent"));
        }
예제 #17
0
 public FeatureExporter()
 {
     _client = GameManager.Instance.Client;
 }