Пример #1
0
        internal static async Task <BulkEnrollmentOperationResult> BulkOperationAsync(
            IContractApiHttp contractApiHttp,
            BulkOperationMode bulkOperationMode,
            IEnumerable <IndividualEnrollment> individualEnrollments,
            CancellationToken cancellationToken)
        {
            /* SRS_INDIVIDUAL_ENROLLMENT_MANAGER_21_004: [The BulkOperationAsync shall throw ArgumentException if the provided
             *                                      individualEnrollments is null or empty.] */
            if (!(individualEnrollments ?? throw new ArgumentNullException(nameof(individualEnrollments))).Any())
            {
                throw new ArgumentException($"{nameof(individualEnrollments)} cannot be empty");
            }

            /* SRS_INDIVIDUAL_ENROLLMENT_MANAGER_21_005: [The BulkOperationAsync shall sent the Put HTTP request to run the bulk operation to the collection of the individualEnrollment.] */
            ContractApiResponse contractApiResponse = await contractApiHttp.RequestAsync(
                HttpMethod.Post,
                GetEnrollmentUri(),
                null,
                BulkEnrollmentOperation.ToJson(bulkOperationMode, individualEnrollments),
                null,
                cancellationToken).ConfigureAwait(false);

            if (contractApiResponse.Body == null)
            {
                throw new ProvisioningServiceClientHttpException(contractApiResponse, true);
            }

            /* SRS_INDIVIDUAL_ENROLLMENT_MANAGER_21_006: [The BulkOperationAsync shall return an BulkEnrollmentOperationResult object created from the body of the HTTP response.] */
            return(JsonConvert.DeserializeObject <BulkEnrollmentOperationResult>(contractApiResponse.Body));
        }
        internal static async Task <BulkEnrollmentOperationResult> BulkOperationAsync(
            IContractApiHttp contractApiHttp,
            BulkOperationMode bulkOperationMode,
            IEnumerable <IndividualEnrollment> individualEnrollments,
            CancellationToken cancellationToken)
        {
            if (individualEnrollments == null)
            {
                throw new ArgumentNullException(nameof(individualEnrollments));
            }

            if (!individualEnrollments.Any())
            {
                throw new ArgumentException($"{nameof(individualEnrollments)} cannot be empty.");
            }

            ContractApiResponse contractApiResponse = await contractApiHttp
                                                      .RequestAsync(
                HttpMethod.Post,
                GetEnrollmentUri(),
                null,
                BulkEnrollmentOperation.ToJson(bulkOperationMode, individualEnrollments),
                null,
                cancellationToken)
                                                      .ConfigureAwait(false);

            if (contractApiResponse.Body == null)
            {
                throw new ProvisioningServiceClientHttpException(contractApiResponse, true);
            }

            return(JsonConvert.DeserializeObject <BulkEnrollmentOperationResult>(contractApiResponse.Body));
        }
        /// <summary>
        /// Serializer
        /// </summary>
        /// <remarks>
        /// Creates a <c>string</c>, whose content represents the mode and the collection of
        ///     individualEnrollments in a JSON format.
        /// </remarks>
        /// <param name="mode">the <see cref="BulkOperationMode"/> that defines the single operation to do over the
        ///     individualEnrollments.</param>
        /// <param name="individualEnrollments">the collection of <see cref="IndividualEnrollment"/> that contains the description
        ///     of each individualEnrollment.</param>
        /// <returns>The <c>string</c> with the content of this class.</returns>
        /// <exception cref="ArgumentNullException">if the individualEnrollments is null.</exception>
        /// <exception cref="ArgumentException">if the individualEnrollments is invalid.</exception>
        public static string ToJson(BulkOperationMode mode, IEnumerable <IndividualEnrollment> individualEnrollments)
        {
            if (!(individualEnrollments ?? throw new ArgumentNullException(nameof(individualEnrollments))).Any())
            {
                throw new ArgumentException("The collection is null or empty.", nameof(individualEnrollments));
            }

            var bulkOperation = new BulkOperation
            {
                Mode        = mode,
                Enrollments = individualEnrollments,
            };

            return(JsonConvert.SerializeObject(bulkOperation));
        }
        /// <summary>
        /// Serializer
        /// </summary>
        /// <remarks>
        /// Creates a <code>string</code>, whose content represents the mode and the collection of
        ///     individualEnrollments in a JSON format.
        /// </remarks>
        /// <param name="mode">the <see cref="BulkOperationMode"/> that defines the single operation to do over the
        ///     individualEnrollments.</param>
        /// <param name="individualEnrollments">the collection of <see cref="IndividualEnrollment"/> that contains the description
        ///     of each individualEnrollment.</param>
        /// <returns>The <code>string</code> with the content of this class.</returns>
        /// <exception cref="ArgumentNullException">if the individualEnrollments is null.</exception>
        /// <exception cref="ArgumentException">if the individualEnrollments is invalid.</exception>
        public static string ToJson(BulkOperationMode mode, IEnumerable <IndividualEnrollment> individualEnrollments)
        {
            /* SRS_BULK_OPERATION_21_001: [The toJsonElement shall throw ArgumentException if the provided collection of
             *                              individualEnrollments is null or empty.] */
            if (!(individualEnrollments ?? throw new ArgumentNullException("individualEnrollments")).Any())
            {
                throw new ArgumentException("individualEnrollments");
            }

            /* SRS_BULK_OPERATION_21_002: [The toJson shall return a String with the mode and the collection of individualEnrollments
             *                              using a JSON format.] */
            BulkOperation bulkOperation = new BulkOperation()
            {
                Mode = mode, Enrollments = individualEnrollments
            };

            return(Newtonsoft.Json.JsonConvert.SerializeObject(bulkOperation));
        }