public HttpWebRequest CreateTableRequest(string command, string method, string content = null, RequestContinuationToken requestContinuationToken = null)
        {
            var uri = new StringBuilder();
            uri.AppendFormat("http://{0}.table.core.windows.net/{1}", _account, command);
            if (null != requestContinuationToken)
            {
                var joiningCharacter = command.Contains('?') ? '&' : '?';
                uri.Append(requestContinuationToken.ToRequestUriFragment(joiningCharacter));
            }

            var request = WebRequest.Create(uri.ToString());
            request.Method = method;
            request.ContentLength = (content ?? string.Empty).Length;
            request.Headers.Add("x-ms-date", DateTime.UtcNow.ToString("R", CultureInfo.InvariantCulture));

            if (method == "PUT" || method == "DELETE" || method == "MERGE")
            {
                request.Headers.Add("If-Match", "*");
            }

            SignAndAuthorize(request);

            if (content != null)
            {
                AddContent(content, request);
            }

            return (HttpWebRequest)request;
        }
        public static RequestContinuationToken Parse(NameValueCollection headers)
        {
            var candidate = new RequestContinuationToken()
            {
                NextPartitionKey = headers["x-ms-continuation-NextPartitionKey"],
                NextRowKey = headers["x-ms-continuation-NextRowKey"],
                NextTableName = headers["x-ms-continuation-NextTable"]
            };

            if (false == candidate.IsEmpty())
            {
                return candidate;
            }

            return null;
        }
        public IEnumerable<string> ListNextTables(RequestContinuationToken requestContinuationToken, out RequestContinuationToken nextRequestContinuationToken)
        {
            var request = _azure.CreateTableRequest("tables", RestVerbs.GET, requestContinuationToken:requestContinuationToken);

            return new WebRequester(_azure.RetryPolicy).RequestStringList(request, out nextRequestContinuationToken);
        }
 public IDictionary<string, object> Get(string partitionKey, string rowKey, RequestContinuationToken requestContinuationToken, out RequestContinuationToken nextRequestContinuationToken)
 {
     return Get(BuildEntityUri(_tableName, partitionKey, rowKey), requestContinuationToken, out nextRequestContinuationToken).SingleOrDefault();
 }
 public IEnumerable<IDictionary<string, object>> GetBlockOfRows(RequestContinuationToken requestContinuationToken, out RequestContinuationToken nextRequestContinuationToken)
 {
     return Get(_tableName, requestContinuationToken, out nextRequestContinuationToken);
 }
        private IEnumerable<IDictionary<string, object>> Get(string url, RequestContinuationToken requestContinuationToken, out RequestContinuationToken nextRequestContinuationToken)
        {
            var request = _azure.CreateTableRequest(url, GET, requestContinuationToken: requestContinuationToken);

            return WebRequester.Request(request, _azure.RetryPolicy, out nextRequestContinuationToken);
        }
 public IEnumerable<IDictionary<string, object>> QueryNextBlock(string filter, RequestContinuationToken requestContinuationToken, out RequestContinuationToken nextRequestContinuationToken)
 {
     return Get(_tableName + "?$filter=" + HttpUtility.UrlEncode(filter), requestContinuationToken, out nextRequestContinuationToken);
 }