Ejemplo n.º 1
0
        /**
         * Build token for authentication on WebSocket
         */
        public async Task <string> BuildToken(string apiKey)
        {
            var createTokenResponse     = new CreateTokenResponse();
            var createApiFailedResponse = new CreateApiResponseFailed();
            var account = await this._accountRepository.GetAccountByApiKey(apiKey);

            if (account == null)
            {
                createApiFailedResponse.Reason = Enum.GetName(typeof(CreateApiFailedEnum), CreateApiFailedEnum.FAILED);
                return(JsonConvert.SerializeObject(createApiFailedResponse));
            }

            if (((DateTime)account.ApiKeyExpirationDate <= DateTime.Now))
            {
                createApiFailedResponse.Reason = Enum.GetName(typeof(CreateApiFailedEnum), CreateApiFailedEnum.NOTOKEN);
                return(JsonConvert.SerializeObject(createApiFailedResponse));
            }

            this._logger.Debug($"Token value before edit {account.Token}");

            //edit token and save it
            this._accountRepository.Entities().AddOrUpdate(account.Id, account, (i, editedAccount) =>
            {
                editedAccount.Token    = Guid.NewGuid().ToString();
                editedAccount.IsEdited = true;
                return(editedAccount);
            });

            createTokenResponse.Token = account.Token;//"7j60imkfu60w";//account.Token;

            this._logger.Debug($"Token value after edit {createTokenResponse.Token}");


            return(JsonConvert.SerializeObject(createTokenResponse));
        }
Ejemplo n.º 2
0
        /**
         * Get Ticket on WebSocket
         */
        public async Task <string> GetTicket(string ticket)
        {
            var createApiFailedResponse = new CreateApiResponseFailed();
            var account = await this._accountRepository.GetAccountByTicket(ticket);

            if (account == null)
            {
                createApiFailedResponse.Reason = Enum.GetName(typeof(CreateApiFailedEnum), CreateApiFailedEnum.FAILED);
                return(JsonConvert.SerializeObject(createApiFailedResponse));
            }
            return(JsonConvert.SerializeObject(account));
        }
Ejemplo n.º 3
0
        /**
         * Create Key from CreateApiKeyRequest
         */
        public async Task <string> CreateKey(CreateApiKeyRequest createApiKeyRequest, string ipAddress)
        {
            var createApiResponse       = new CreateApiResponse();
            var createApiFailedResponse = new CreateApiResponseFailed();

            var account = await this._accountRepository.GetAccountByLogin(createApiKeyRequest.login);

            //return failed if account is wrong
            if (account == null || account.Password != createApiKeyRequest.password)
            {
                createApiFailedResponse.Reason = Enum.GetName(typeof(CreateApiFailedEnum), CreateApiFailedEnum.FAILED);
                return(JsonConvert.SerializeObject(createApiFailedResponse));
            }

            this._accountRepository.Entities().AddOrUpdate(account.Id, account, (i, editedAccount) =>
            {
                //if expired token or empty
                if (account.ApiKeyExpirationDate == null || (DateTime)account.ApiKeyExpirationDate <= DateTime.Now)
                {
                    editedAccount.ApiKey = Guid.NewGuid().ToString();
                    editedAccount.ApiKeyExpirationDate = DateTime.Now.AddHours(50);//4
                }

                editedAccount.Ip       = ipAddress;
                editedAccount.IsEdited = true;

                return(editedAccount);
            });


            createApiResponse.AccountId = account.Id;
            createApiResponse.AddedDate = DateTimeOffset.Now;
            createApiResponse.Data      = new CreateApiResponseData()
            {
                Country  = "FR",
                Currency = "EUR"
            };
            createApiResponse.Key            = account.ApiKey;
            createApiResponse.ExpirationDate = DateTime.Now.AddHours(50);//4
            createApiResponse.RefreshToken   = "";
            createApiResponse.Ip             = account.Ip;

            return(JsonConvert.SerializeObject(createApiResponse));
        }