public override async Task <ActionResponse> ExecuteActionAsync(ActionRequest request) { var accountsWithSpaces = request.DataStore.GetValue("Accounts"); var accounts = accountsWithSpaces.Split(' ').ToList(); List <string> invalid = new List <string>(); Dictionary <string, string> valid = new Dictionary <string, string>(); foreach (var accountItem in accounts) { var accountTrimmed = accountItem.ToString().Trim(); accountTrimmed = accountTrimmed.Replace("@", ""); AzureHttpClient client = new AzureHttpClient(new Dictionary <string, string>() { { "X-Push-State-Request", "true" } }); string json = await client.GetJson(HttpMethod.Get, $"https://www.twitter.com/{accountTrimmed}"); if (!string.IsNullOrEmpty(json)) { var obj = JsonUtility.GetJObjectFromJsonString(json); var id = obj.SelectToken("init_data")?.SelectToken("profile_user")?.SelectToken("id_str")?.ToString(); valid.Add(accountTrimmed, id); } else { invalid.Add(accountItem.ToString()); } } dynamic response = new ExpandoObject(); response.InvalidAccounts = invalid; response.ValidAccounts = valid; response.twitterHandle = string.Join(",", valid.Keys); response.twitterHandleId = string.Join(",", valid.Values); if (invalid.Any()) { return(new ActionResponse(ActionStatus.FailureExpected, JsonUtility.GetJObjectFromObject(response), null, AzureErrorCodes.TwitterAccountsInvalid)); } return(new ActionResponse(ActionStatus.Success, JsonUtility.GetJObjectFromObject(response))); }