Пример #1
0
        /// <summary>
        /// Runs the main logic of the activity. Has access to the context,
        /// which holds the values of properties for this activity and those from the parent scope.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        protected override async Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken)
        {
            var property = context.DataContext.GetProperties()[ParentScope.ApplicationTag];
            var app      = property.GetValue(context.DataContext) as Application;

            string cep = Cep.Get(context);

            if (cep.Length != 8)
            {
                throw new FormatException(string.Format(Resources.CepLenghtValidation));
            }


            var     clientWeb = new System.Net.WebClient();
            string  json_data = string.Empty;
            Address address   = null;

            try
            {
                clientWeb.Encoding = Encoding.UTF8;
                json_data          = clientWeb.DownloadString("https://viacep.com.br/ws/" + cep + "/json/");
                //JObject jj = JObject.Parse(json_data);
                address = JsonConvert.DeserializeObject <Address>(json_data);
            }
            catch (Exception) {
                throw new Exception(string.Format(Resources.RunTimeBuscaCepError));
            }

            return(ctx => {
                Result.Set(ctx, address);
            });
        }