예제 #1
0
        /// <summary>
        /// Validates action's parameters.
        /// Throws exception of failure, does nothing on success.
        /// </summary>
        /// <param name="action">IDynaliAction, request's action</param>
        protected void ValidateAction(IDynaliAction action)
        {
            List <string> validationErrors = action.GetValidationErrors();

            if (validationErrors.Count > 0)
            {
                throw new ArgumentException("Invalid request parameters: " + string.Join(", ", validationErrors));
            }
        }
예제 #2
0
        /// <summary>
        /// Calls the Dynali's webservice asynchronously, sends action's parameters as json.
        /// </summary>
        /// <param name="action">IDynaliAction, request's action</param>
        /// <returns>string, JSON response</returns>
        protected async Task <string> CallAsync(IDynaliAction action)
        {
            ValidateAction(action);
            byte[]     contentsBytes = UTF8Encoding.UTF8.GetBytes(action.ToJson());
            WebRequest request       = PrepareWebRequest();

            (await request.GetRequestStreamAsync()).Write(contentsBytes, 0, contentsBytes.Length);

            Stream responseStream = (await request.GetResponseAsync()).GetResponseStream();

            return(ReadResponse(responseStream));
        }
예제 #3
0
 /// <summary>
 /// Executes provided DynaliAction.
 /// </summary>
 /// <typeparam name="T">JsonResponse deriative</typeparam>
 /// <param name="action">Action details</param>
 /// <returns>JsonResponse deriative</returns>
 protected async Task <T> ExecuteActionAsync <T>(IDynaliAction action) where T : JsonResponse
 {
     return(JsonResponse.Parse <T>(await CallAsync(action)));
 }
예제 #4
0
 /// <summary>
 /// Executes provided DynaliAction.
 /// </summary>
 /// <typeparam name="T">JsonResponse deriative</typeparam>
 /// <param name="action">Action details</param>
 /// <returns>JsonResponse deriative</returns>
 protected T ExecuteAction <T>(IDynaliAction action) where T : JsonResponse
 {
     return(JsonResponse.Parse <T>(Call(action)));
 }