Example #1
0
 protected ActionResultRepresentation(HttpRequestMessage req, ActionResultContextSurface actionResult, RestControlFlags flags) : base(flags) {
     SelfRelType = new ActionResultRelType(RelValues.Self, new UriMtHelper(req, actionResult.ActionContext));
     SetResultType(actionResult);
     SetLinks(req, actionResult);
     SetExtensions();
     SetHeader();
 }
Example #2
0
 public RestSnapshot(ActionResultContextSurface actionResultContext, HttpRequestMessage req, RestControlFlags flags)
     : this(actionResultContext, req, true) {
     populator = () => {
         representation = ActionResultRepresentation.Create(req, actionResultContext, flags);
         SetHeaders();
     };
 }
Example #3
0
 private void SetLinks(HttpRequestMessage req, ActionResultContextSurface actionResult) {
     if (actionResult.ActionContext.Action.IsQueryOnly()) {
         Links = new[] {LinkRepresentation.Create(SelfRelType, Flags, new OptionalProperty(JsonPropertyNames.Arguments, CreateArguments(req, actionResult)))};
     }
     else {
         Links = new LinkRepresentation[] {};
     }
 }
Example #4
0
 private void SetResultType(ActionResultContextSurface actionResult) {
     if (actionResult.Specification.IsParseable()) {
         ResultType = ResultTypes.Scalar;
     }
     else if (actionResult.Specification.IsCollection()) {
         ResultType = ResultTypes.List;
     }
     else {
         ResultType = actionResult.Specification.IsVoid() ? ResultTypes.Void : ResultTypes.Object;
     }
 }
Example #5
0
        private MapRepresentation CreateArguments(HttpRequestMessage req, ActionResultContextSurface actionResult) {
            var optionalProperties = new List<OptionalProperty>();

            foreach (ParameterContextSurface visibleParamContext in actionResult.ActionContext.VisibleParameters) {
                IRepresentation value;

                if (visibleParamContext.Specification.IsParseable()) {
                    object proposedObj = visibleParamContext.ProposedNakedObject == null ? visibleParamContext.ProposedValue : visibleParamContext.ProposedNakedObject.Object;
                    object valueObj = RestUtils.ObjectToPredefinedType(proposedObj);
                    value = MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.Value, valueObj));
                }
                else if (visibleParamContext.Specification.IsCollection()) {

                    if (visibleParamContext.Specification.ElementType.IsParseable()) {
                        var proposedCollection = ((IEnumerable) (visibleParamContext.ProposedNakedObject == null ? visibleParamContext.ProposedValue : visibleParamContext.ProposedNakedObject.Object)).Cast<object>();                     
                        var valueObjs = proposedCollection.Select(RestUtils.ObjectToPredefinedType).ToArray();
                        value = MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.Value, valueObjs));
                    }
                    else {
                
                        var refNos = visibleParamContext.ProposedNakedObject.ToEnumerable().Select(no => no).ToArray();
                        var refs = refNos.Select(no => RefValueRepresentation.Create(new ObjectRelType(RelValues.Self, new UriMtHelper(req, no)), Flags)).ToArray();

                        value = MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.Value, refs));

                                         }
                }
                else {
                    var valueRef = RefValueRepresentation.Create(new ObjectRelType(RelValues.Self, new UriMtHelper(req, visibleParamContext.ProposedNakedObject)), Flags);
                    value = MapRepresentation.Create(new OptionalProperty(JsonPropertyNames.Value, valueRef));
                }

                optionalProperties.Add(new OptionalProperty(visibleParamContext.Id, value));
            }
            return MapRepresentation.Create(optionalProperties.ToArray());
        }
Example #6
0
 public static ListRepresentation Create(ActionResultContextSurface actionResultContext, HttpRequestMessage req, RestControlFlags flags) {
     return new ListRepresentation(actionResultContext.Result, req, flags, actionResultContext.ActionContext);
 }
Example #7
0
        public static ActionResultRepresentation Create(HttpRequestMessage req, ActionResultContextSurface actionResult, RestControlFlags flags) {
            if (actionResult.HasResult) {
                IRepresentation result;

                if (actionResult.Result == null) {
                    result = null;
                }
                else if (actionResult.Specification.IsParseable()) {
                    result = ScalarRepresentation.Create(actionResult.Result, req, flags);
                }
                else if (actionResult.Specification.IsObject()) {
                    result = ObjectRepresentation.Create(actionResult.Result, req, flags);
                }
                else {
                    result = ListRepresentation.Create(actionResult, req, flags);
                }

                return CreateWithOptionals<ActionResultRepresentation>(new object[] {req, actionResult, flags}, new[] {new OptionalProperty(JsonPropertyNames.Result, result)});
            }
            return new ActionResultRepresentation(req, actionResult, flags);
        }