Beispiel #1
0
        static void Main(string[] args)
        {
            //Создаём объект класса Response для того, чтобы записать туда ответ.
            Response <AccountModel> response = new Response <AccountModel>();
            //Создаём объект класса HttpClient.
            HttpClient client = CreateClient();
            //Создаём объект класса RequestExample для того, чтобы через него вызывать методы, которые выполняют запросы
            RequestExample request = new RequestExample();
            //Создаём список частей операций.
            List <OperationItemRequest> items = new List <OperationItemRequest>();

            //Заполняем список частей операции
            items.Add(new OperationItemRequest {
                CalculationDate = "2020-02-25", ContrAgentId = null, Value = 123, IsCalculationCommitted = false, OperationCategoryId = null, ProjectId = null
            });
            //Создаём объект класса AccountCreationRequest и заполняем его данными для добавления счёта.
            AccountCreationRequest dataForPost = new AccountCreationRequest {
                Title = "test", AccountBank = null, AccountBik = null, AccountType = "Cash", AccountAcct = null, Active = true, CompanyId = 41104, CurrencyCode = "USD", Description = null, LongTitle = "", Remainder = 0, RemainderDate = "2020-03-02"
            };
            //Создаём объект класса OperationModificationRequest и заполняем его данными для изменнения операции.
            OperationModificationRequest dataForPut = new OperationModificationRequest {
                AccountId = 106080, Comment = "", IsCommitted = false, OperationDate = "2020-02-25", Items = items
            };
            //Создаём переменую для хранения api-ключа.
            string apiKey = "Ваш api-ключ";

            //Вызываем метод Delete для удаления операции и передаём ему в виде параметров api-ключ, id операции и объект класса HttpClient.
            request.Delete(apiKey, 16367698, client);
            //Вызываем метод Get для получения списка счетов и передаём ему в виде параметров api-ключ и объект класса HttpClient.
            request.Get(apiKey, client);
            //Выводим в консоль результат метода Post для добавления счёта. В параметрах этого метода передаём api-ключ, данные счёта, который мы хотим добавить, объект класса HttpClient.
            Console.WriteLine(request.Post(apiKey, dataForPost, client).GetAwaiter().GetResult());
            //Выводим в консоль результат метода Put для изменения операции. В параметрах этого метода передаём api-ключ, id операции, изменённые данные операции, объект класса HttpClient.
            Console.WriteLine(request.Put(apiKey, 16367698, dataForPut, client).GetAwaiter().GetResult());
        }
Beispiel #2
0
 public BaseResponse <AccountResponse> RegisterAccount([FromBody] AccountCreationRequest request, [FromHeader] Guid SessionID)
 {
     return(BaseResponse <AccountResponse> .ConstructResponse(
                HttpStatusCode.OK,
                HttpStatusCode.OK.ToString(),
                accountService.RegisterAccount(request, SessionID)));
 }
Beispiel #3
0
        public void TestCreateNewAzureMediaServiceAsync()
        {
            var fakeHttpHandler = new FakeHttpMessageHandler();

            string responseText = "{\"AccountId\":\"abe5afa0-704b-4d07-b5d8-5b0b039474e7\",\"AccountName\":\"tmp\",\"StatusCode\":201,\"Subscription\":\"f7190519-c29e-47f2-9019-c5a94c8e75f9\"}";

            var response = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new FakeHttpContent(responseText)
            };

            fakeHttpHandler.Send = request => response;

            var fakeHttpClient = fakeHttpHandler.CreateIMediaServicesHttpClient();

            var target = new MediaServicesClient(
                new SubscriptionData {
                SubscriptionId = _subscriptionId
            },
                null,
                fakeHttpClient,
                fakeHttpClient);

            var creationRequest = new AccountCreationRequest {
                AccountName = _accountName
            };

            var result = target.CreateNewAzureMediaServiceAsync(creationRequest).Result;

            Assert.AreEqual("tmp", result.Name);
        }
Beispiel #4
0
        bool AccountRequestExpired(AccountCreationRequest req)
        {
            var date   = DateTimeOffset.Now.ToUnixTimeSeconds();
            var expiry = req.Date + _apiSettings.CreationExpiryMinutes * 60;

            return(date > expiry);
        }
Beispiel #5
0
        public async Task <IActionResult> Create([FromQuery] AccountCreationRequest request)
        {
            var(succeeded, errorMessage) = await mediator.Send(request);

            if (succeeded)
            {
                return(Ok());
            }

            return(BadRequest(new BadRequestResponse(errorMessage)));
        }
        /// <summary>
        /// Creates a new account using the specified username, provider token, password, and email
        /// </summary>
        /// <param name="username"></param>
        /// <param name="tokenType"></param>
        /// <param name="token"></param>
        /// <param name="password"></param>
        /// <param name="email"></param>
        /// <param name="loginWhenComplete"></param>
        /// <param name="options">The options for this request</param>
        /// <returns></returns>
        public async Task CreateAccountAsync(string username, AccountTokenType tokenType, string token, string password = null, string email = null, bool loginWhenComplete = true, RequestOptions options = null)
        {
            AccountCreationRequest request = new AccountCreationRequest()
            {
                Username = username,
                Password = password,
                Email    = email,
            };

            switch (tokenType)
            {
            case AccountTokenType.FacebookAuthCode:
                request.Provider = FacebookProvider;
                request.AuthCode = token;
                break;

            case AccountTokenType.FacebookAccessToken:
                request.Provider    = FacebookProvider;
                request.AccessToken = token;
                break;

            case AccountTokenType.TwitterToken:
                request.Provider = TwitterProvider;
                request.Token    = token;
                break;

            case AccountTokenType.TwitterVerifier:
                request.Provider = TwitterProvider;
                request.Verifier = token;
                break;

            case AccountTokenType.TwitterOauthToken:
                request.Provider   = TwitterProvider;
                request.OauthToken = token;
                break;

            case AccountTokenType.TwitterOauthTokenSecret:
                request.Provider         = TwitterProvider;
                request.OauthTokenSecret = token;
                break;
            }

            ClientAccountAuthResponse response = await ApiClient.CreateAccountAsync(request, options).ConfigureAwait(false);

            if (loginWhenComplete)
            {
                AccessToken  = response.AccessToken;
                RefreshToken = response.RefreshToken;
            }
        }
        public async Task <ApiResult> Create(
            [FromBody, BindRequired] AccountCreationRequest request)
        {
            try
            {
                // Attempt to create the account through the AccountService
                // implementation we were provided
                Account account = await _accountService.CreateAsync(request);

                return(Success(AccountCreationData.FromAccount(
                                   account,

                                   // TODO: Email verification
                                   emailVerificationRequired: false,
                                   verificationEmailSent: false
                                   )));
            }
            catch (AccountCreationException e)
            {
                var errors = new List <ApiError>();

                if ((e.ErrorFlags & AccountCreationErrorFlags.InvalidAccount) != 0)
                {
                    errors.Add(new ApiError(
                                   "Unable to create valid Account with supplied data.",
                                   ApiErrorCode.AccountCreationFailed
                                   ));
                }
                if ((e.ErrorFlags & AccountCreationErrorFlags.UsernameTaken) != 0)
                {
                    errors.Add(new ApiError(
                                   "An account has already been created under that username.",
                                   ApiErrorCode.AccountUsernameInUse
                                   ));
                }
                if ((e.ErrorFlags & AccountCreationErrorFlags.EmailInUse) != 0)
                {
                    errors.Add(new ApiError(
                                   "An account has already been created under that email address.",
                                   ApiErrorCode.AccountEmailInUse
                                   ));
                }

                return(Error(
                           StatusCodes.Status422UnprocessableEntity,
                           errors
                           ));
            }
        }
Beispiel #8
0
        /// <summary>
        /// POST-запрос для добавления счёта
        /// </summary>
        /// <param name="apiKey">Ваш api-ключ</param>
        /// <param name="data">Данные счёта для добавления (данные хранятся в объекте класса AccountCreationReques)</param>
        /// <param name="client">Объект класса HttpClient</param>
        /// <returns>Возвращает строку с ответом</returns>
        public async Task <string> Post(string apiKey, AccountCreationRequest data, HttpClient client)
        {
            client.DefaultRequestHeaders.Add("X-ApiKey", apiKey);
            var request       = new HttpRequestMessage(HttpMethod.Post, "https://api.planfact.io/api/v1/accounts");
            var json          = JsonConvert.SerializeObject(data);
            var stringContent = new StringContent(json, Encoding.UTF8, "application/json");

            request.Content = stringContent;
            var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);

            response.EnsureSuccessStatusCode();
            var responseBody = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

            var result = JsonConvert.DeserializeObject <Response <AccountModel> >(responseBody);

            return(await response.Content.ReadAsStringAsync());
        }
Beispiel #9
0
        public void TestCreateNewAzureMediaServiceAsyncInvalidAccount()
        {
            var fakeHttpHandler = new FakeHttpMessageHandler();

            string responseText = "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">{\"Code\":\"BadRequest\",\"Message\":\"Account Creation Request contains an invalid account name.\"}</string>";

            var response = new HttpResponseMessage(HttpStatusCode.BadRequest)
            {
                Content = new FakeHttpContent(responseText)
            };

            fakeHttpHandler.Send = request => response;

            var fakeHttpClient = fakeHttpHandler.CreateIMediaServicesHttpClient();

            var target = new MediaServicesClient(
                new SubscriptionData {
                SubscriptionId = _subscriptionId
            },
                null,
                fakeHttpClient,
                fakeHttpClient);

            var creationRequest = new AccountCreationRequest {
                AccountName = _accountName
            };

            try
            {
                var result = target.CreateNewAzureMediaServiceAsync(creationRequest).Result;
            }
            catch (AggregateException ax)
            {
                ServiceManagementClientException x = (ServiceManagementClientException)ax.InnerExceptions.Single();

                Assert.AreEqual(HttpStatusCode.BadRequest, x.HttpStatus);
                return;
            }

            Assert.Fail("ServiceManagementClientException expected");
        }
        public IActionResult CreateAccount([FromBody] AccountCreationRequest account)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                Account domainModel = account.ToDomain();
                domainModel = _accountService.Add(domainModel);
                return(Ok(new AccountCreationResponse(domainModel)));
            }
            catch (InvalidParametersException)
            {
                return(BadRequest("Account properties are not setted corretly."));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <Account> CreateAsync(
            AccountCreationRequest request)
        {
            var errorFlags = AccountCreationErrorFlags.None;

            // Attempt to create an Account instance from the request data
            if (!Account.TryCreateFromRequest(request, _passwordHasher, out var account))
            {
                errorFlags |= AccountCreationErrorFlags.InvalidAccount;
            }

            // Make sure that an account does not exist with the same username
            if (await IsUsernameTaken(account.Username))
            {
                errorFlags |= AccountCreationErrorFlags.UsernameTaken;
            }

            // Make sure that an account does not exist with the same email
            if (await IsEmailInUse(account.Email))
            {
                errorFlags |= AccountCreationErrorFlags.EmailInUse;
            }

            // If there was a confliction, do not attempt to insert into the database
            if (errorFlags != AccountCreationErrorFlags.None)
            {
                throw new AccountCreationException(
                          "An error occurred while creating the account.",
                          errorFlags
                          );
            }

            // Attempt to add the new account to the database
            _accountContext.Add(account);
            await _accountContext.SaveChangesAsync();

            return(account);
        }
Beispiel #12
0
        public override void ExecuteCmdlet()
        {
            MediaServicesClient = MediaServicesClient ?? new MediaServicesClient(CurrentSubscription, WriteDebug);


            StorageService storage           = null;
            Uri            storageEndPoint   = null;
            string         storageAccountKey = null;

            CatchAggregatedExceptionFlattenAndRethrow(() => { storage = MediaServicesClient.GetStorageServiceKeys(StorageAccountName).Result; });
            storageAccountKey = storage.StorageServiceKeys.Primary;


            CatchAggregatedExceptionFlattenAndRethrow(() => { storage = MediaServicesClient.GetStorageServiceProperties(StorageAccountName).Result; });

            if (storage.StorageServiceProperties != null && storage.StorageServiceProperties.Endpoints.Count > 0)
            {
                storageEndPoint = new Uri(storage.StorageServiceProperties.Endpoints[0]);
            }
            else
            {
                throw new Exception(string.Format(Utilities.Properties.Resources.EndPointNotFoundForBlobStorage, Name));
            }

            AccountCreationResult result = null;
            var request = new AccountCreationRequest
            {
                AccountName            = Name,
                BlobStorageEndpointUri = storageEndPoint.ToString(),
                Region             = Location,
                StorageAccountKey  = storageAccountKey,
                StorageAccountName = StorageAccountName
            };

            CatchAggregatedExceptionFlattenAndRethrow(() => { result = MediaServicesClient.CreateNewAzureMediaServiceAsync(request).Result; });
            WriteObject(result, false);
        }
Beispiel #13
0
        public AccountResponse RegisterAccount(AccountCreationRequest request, Guid SessionID)
        {
            Sessions session = dbContext.Sessions
                               .Where(s => s.SessionId.Equals(SessionID) && s.LastActivity < DateTime.Now.AddDays(1))
                               .FirstOrDefault();

            if (session == null)
            {
                throw new BusinessLogicException(HttpStatusCode.BadRequest, ResponseCode.INVALID_SESSION.ToString());
            }

            Users checkUser = dbContext.Users
                              .Where(u => u.Email.Equals(request.Email))
                              .FirstOrDefault();

            if (checkUser != null)
            {
                throw new BusinessLogicException(HttpStatusCode.BadRequest, ResponseCode.USER_ALREADY_REGISTERED.ToString());
            }

            Genders gender = dbContext.Genders.Find(request.Gender);

            if (gender == null)
            {
                throw new BusinessLogicException(HttpStatusCode.BadRequest, ResponseCode.NOT_VALID_GENDER.ToString());
            }

            Users newUser = new Users();

            newUser.UserId       = Guid.NewGuid();
            newUser.FirstName    = request.FirstName;
            newUser.LastName     = request.LastName;
            newUser.Email        = request.Email;
            newUser.PasswordHash = PasswordHelper.ConvertToSHA512(request.Password);
            newUser.GenderId     = request.Gender;
            newUser.Age          = request.Age;
            newUser.CreatedDate  = DateTime.Now;
            newUser.CreatedBy    = request.Email;
            newUser.UpdatedDate  = DateTime.Now;
            newUser.UpdatedBy    = request.Email;

            Roles     role      = dbContext.Roles.Where(r => r.Name.Equals("Client")).FirstOrDefault();
            UserRoles userRoles = new UserRoles();

            userRoles.UserId = newUser.UserId;
            userRoles.RoleId = role.RoleId;

            using (IDbContextTransaction transaction = dbContext.Database.BeginTransaction())
            {
                try
                {
                    dbContext.Users.Add(newUser);
                    dbContext.UserRoles.Add(userRoles);
                    dbContext.SaveChanges();
                    transaction.Commit();
                }
                catch
                {
                    transaction.Rollback();
                    throw new BusinessLogicException(HttpStatusCode.InternalServerError, ResponseCode.FAILED_TO_REGISTER_ACCOUNT.ToString());
                }
            }

            var task = kafkaProducer.SendToKafka(JsonConvert.SerializeObject(ConstructKafkaRequest(newUser, gender, "CREATE")));

            return(ConstructResponse(newUser, gender));
        }
Beispiel #14
0
 /// <summary>
 ///     Create new azure media service async.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns></returns>
 public Task <AccountCreationResult> CreateNewAzureMediaServiceAsync(AccountCreationRequest request)
 {
     return(_httpClient.PostAsJsonAsyncWithoutEnsureSuccessStatusCode(MediaServicesUriElements.Accounts, JObject.FromObject(request), Logger).ContinueWith(tr => ProcessJsonResponse <AccountCreationResult>(tr)));
 }
Beispiel #15
0
        public void NewMediaServiceAccountShouldPassWithValidParameters()
        {
            // Setup
            var clientMock = new Mock <IMediaServicesClient>();

            const string storageAccountName     = "teststorage";
            const string storageAccountKey      = "key";
            const string accountName            = "testaccount";
            const string region                 = "West US";
            const string blobStorageEndpointUri = "http://awesome.blob.core.windows.net/";

            AccountCreationRequest request = new AccountCreationRequest()
            {
                AccountName            = accountName,
                BlobStorageEndpointUri = blobStorageEndpointUri,
                Region             = region,
                StorageAccountKey  = storageAccountKey,
                StorageAccountName = storageAccountName
            };

            clientMock.Setup(f => f.CreateNewAzureMediaServiceAsync(It.Is <AccountCreationRequest>(creationRequest => request.AccountName == accountName))).Returns(Task.Factory.StartNew(() =>
            {
                return(new AccountCreationResult()
                {
                    AccountId = Guid.NewGuid().ToString(),
                    Name = request.AccountName,
                    Subscription = Guid.NewGuid().ToString()
                });
            }));


            clientMock.Setup(f => f.GetStorageServiceKeys(storageAccountName)).Returns(Task.Factory.StartNew(() =>
            {
                return(new StorageService()
                {
                    StorageServiceKeys = new StorageServiceKeys()
                    {
                        Primary = storageAccountKey,
                        Secondary = storageAccountKey
                    }
                });
            }));


            clientMock.Setup(f => f.GetStorageServiceProperties(storageAccountName)).Returns(Task.Factory.StartNew(() =>
            {
                return(new StorageService()
                {
                    StorageServiceProperties = new StorageServiceProperties()
                    {
                        Endpoints = new EndpointList()
                        {
                            blobStorageEndpointUri
                        }
                    }
                });
            }));

            // Test
            var command = new NewAzureMediaServiceCommand()
            {
                CommandRuntime      = new MockCommandRuntime(),
                Name                = accountName,
                Location            = region,
                StorageAccountName  = storageAccountName,
                MediaServicesClient = clientMock.Object,
            };

            command.ExecuteCmdlet();
            Assert.AreEqual(1, ((MockCommandRuntime)command.CommandRuntime).OutputPipeline.Count);
            var accountCreationResult = (AccountCreationResult)((MockCommandRuntime)command.CommandRuntime).OutputPipeline.FirstOrDefault();

            Assert.IsNotNull(accountCreationResult);
            Assert.AreEqual(accountName, accountCreationResult.Name);
        }