Exemplo n.º 1
0
        public static ScEntity ParseSource(JObject item, CancellationToken cancelToken)
        {
            ScEntity newItem;

            try {
                List <IField> fields       = ScFieldsParser.ParseFieldsData(item, cancelToken);
                var           fieldsByName = new Dictionary <string, IField>(fields.Count);
                foreach (IField singleField in fields)
                {
                    cancelToken.ThrowIfCancellationRequested();

                    fieldsByName[singleField.Name] = singleField;
                }

                newItem = new ScEntity(fieldsByName);
            } catch (Exception e) {
                OperationCanceledException cancel = e as OperationCanceledException;
                if (cancel != null)
                {
                    throw cancel;
                }

                throw new ParserException(TaskFlowErrorMessages.PARSER_EXCEPTION_MESSAGE + item.ToString(), e);
            }

            return(newItem);
        }
        public static ScCreateEntityResponse Parse(string responseString, int statusCode, CancellationToken cancelToken)
        {
            if (string.IsNullOrEmpty(responseString))
            {
                return(new ScCreateEntityResponse(null, statusCode));
            }

            var response = JToken.Parse(responseString);


            ScEntity newItem = ScEntityParser.ParseSource(response as JObject, cancelToken);

            return(new ScCreateEntityResponse(newItem, statusCode));
        }
        public static ScEntityResponse Parse(string responseString, int statusCode, CancellationToken cancelToken)
        {
            if (string.IsNullOrEmpty(responseString))
            {
                return(new ScEntityResponse(new List <ISitecoreEntity>(), statusCode));
            }

            var response = JToken.Parse(responseString);

            var items = new List <ISitecoreEntity>();

            JToken results = null;

            try
            {
                results = response.Value <JToken>("value");


                if (results != null)
                {
                    response = results;
                }

                if (response is JArray)
                {
                    foreach (JObject item in response)
                    {
                        cancelToken.ThrowIfCancellationRequested();

                        ScEntity newItem = ScEntityParser.ParseSource(item, cancelToken);
                        items.Add(newItem);
                    }
                }
                else if (response is JObject)
                {
                    ScEntity newItem = ScEntityParser.ParseSource(response as JObject, cancelToken);
                    items.Add(newItem);
                }
            }
            catch {
                //ScEntityResponse will be created any way
            }

            return(new ScEntityResponse(items, statusCode));
        }