public void TestParseCorrectData() { var response = "{\"statusCode\":200,\"result\":{}}"; WebApiJsonStatusMessage message = AuthenticateResponseParser.ParseResponse(response, CancellationToken.None); Assert.AreEqual(200, message.StatusCode); }
public void TestParseDeniedResponseData() { var response = "{\"statusCode\":401,\"error\":{\"message\":\"Access to site is not granted.\"}}"; WebApiJsonStatusMessage message = AuthenticateResponseParser.ParseResponse(response, CancellationToken.None); Assert.AreEqual(401, message.StatusCode); Assert.AreEqual("Access to site is not granted.", message.Message); }
public static ScItemsResponse Parse(string responseString, CancellationToken cancelToken) { if (string.IsNullOrEmpty(responseString)) { throw new ArgumentException("response cannot null or empty"); } JObject response = JObject.Parse(responseString); int statusCode = ScItemsParser.ParseOrFail <int>(response, "$.statusCode"); bool isSuccessfulCode = (200 <= statusCode) && (statusCode <= 299); if (!isSuccessfulCode) { var error = new WebApiJsonStatusMessage(statusCode, ParseOrFail <string>(response, "$.error.message")); throw new WebApiJsonErrorException(error); } int totalCount = ParseOrFail <int>(response, "$.result.totalCount"); int resultCount = ParseOrFail <int>(response, "$.result.resultCount"); var responseItems = response.SelectToken("$.result.items"); var items = new List <ISitecoreItem>(); foreach (JObject item in responseItems) { cancelToken.ThrowIfCancellationRequested(); var source = ParseItemSource(item); var displayName = (string)item.GetValue("DisplayName"); var hasChildren = (bool)item.GetValue("HasChildren"); var id = (string)item.GetValue("ID"); var longId = (string)item.GetValue("LongID"); var path = (string)item.GetValue("Path"); var template = (string)item.GetValue("Template"); JObject fieldsJSON = (JObject)item.GetValue("Fields"); List <IField> fields = ScFieldsParser.ParseFieldsData(fieldsJSON, cancelToken); var fieldsByName = new Dictionary <string, IField>(fields.Count); foreach (IField singleField in fields) { cancelToken.ThrowIfCancellationRequested(); string lowercaseName = singleField.Name.ToLowerInvariant(); fieldsByName[lowercaseName] = singleField; } ScItem newItem = new ScItem(source, displayName, hasChildren, id, longId, path, template, fieldsByName); items.Add(newItem); } return(new ScItemsResponse(totalCount, resultCount, items)); }
public async Task <bool> AuthenticateAsync(CancellationToken cancelToken = default(CancellationToken)) { var sessionUrlBuilder = new SessionConfigUrlBuilder(this.restGrammar, this.webApiGrammar); using (var cryptor = await this.GetCredentialsCryptorAsync(cancelToken)) { var taskFlow = new AuthenticateTasks(this.restGrammar, this.webApiGrammar, sessionUrlBuilder, this.httpClient, cryptor); WebApiJsonStatusMessage result = await RestApiCallFlow.LoadRequestFromNetworkFlow(this.sessionConfig, taskFlow, cancelToken); return(result.StatusCode == 200); } }
public static ScDeleteItemsResponse ParseResponse(string response, CancellationToken token) { if (string.IsNullOrEmpty(response)) { throw new ArgumentException("response shouldn't be empty or null"); } token.ThrowIfCancellationRequested(); JObject responseJObject = JObject.Parse(response); var statusCode = (int)responseJObject.SelectToken("statusCode"); bool isSuccessfulCode = (200 <= statusCode) && (statusCode <= 299); if (!isSuccessfulCode) { var error = new WebApiJsonStatusMessage(statusCode, ParseOrFail <string>(responseJObject, "$.error.message")); throw new WebApiJsonErrorException(error); } var count = (int)responseJObject.SelectToken("$.result.count"); var responseItems = responseJObject.SelectToken("$.result.itemIds"); var itemsIds = new List <string>(); foreach (JValue itemId in responseItems) { token.ThrowIfCancellationRequested(); string itemIdString = itemId.Value <string>(); itemsIds.Add(itemIdString); } if (itemsIds.Count != count) { throw new ParserException("[DELETE RESPONSE] Inconsistent items count in JSON response "); } return(new ScDeleteItemsResponse(itemsIds)); }
public static string Parse(string responseString, CancellationToken cancelToken) { if (string.IsNullOrEmpty(responseString)) { throw new ArgumentException("response cannot null or empty"); } cancelToken.ThrowIfCancellationRequested(); JObject response = JObject.Parse(responseString); cancelToken.ThrowIfCancellationRequested(); int statusCode = ParseOrFail <int>(response, "$.statusCode"); bool isSuccessfulCode = (200 <= statusCode) && (statusCode <= 299); if (!isSuccessfulCode) { var error = new WebApiJsonStatusMessage(statusCode, ParseOrFail <string>(response, "$.error.message")); throw new WebApiJsonErrorException(error); } cancelToken.ThrowIfCancellationRequested(); return(ParseOrFail <string>(response, "$.result")); }