private void WriteSpecError(Type type, object value, Stream writeStream, Encoding effectiveEncoding, string detail)
        {
            var         errorStream   = new MemoryStream();
            IJsonWriter errorDocument = new ResourceDocument(new List <Error>
            {
                new Error
                {
                    Code   = "JsonApiSpecViolation",
                    Title  = "JsonApi Specification Violation",
                    Href   = "http://jsonapi.org/format",
                    Status = "500",
                    Detail = detail
                },
            }, _profile);
            JsonWriter     writer     = CreateJsonWriter(type, errorStream, effectiveEncoding);
            JsonSerializer serializer = CreateJsonSerializer();

            writer.Formatting = Formatting.Indented;

            serializer.Serialize(writer, errorDocument);
            writer.Flush();
            errorStream.Position = 0;
            errorStream.CopyTo(writeStream);
            writeStream.Flush();
        }
示例#2
0
 public static TestClass ConvertToResource(ResourceDocument document)
 {
     return(new TestClass
     {
         Id = Guid.Parse(document.Metadata["id"].GetString())
     });
 }
        public void CompoundDocumentShouldNotDuplicateIncludedResources()
        {
            var r1 = new ResourceWithRelationship
            {
                Id    = 1,
                ToOne = new Resource
                {
                    Id = 10
                }
            };
            var r2 = new ResourceWithRelationship
            {
                Id    = 2,
                ToOne = new Resource
                {
                    Id = 10
                }
            };
            var d = new ResourceDocument(new List <ResourceObject> {
                new ResourceObject(r1, _p), new ResourceObject(r2, _p)
            }, _p);
            JToken json = d.ToJson();

            Assert.AreEqual(1, json["included"].Count());
        }
 public static string SerializeToJson(ResourceDocument resourceDocument)
 {
     using (var stringWriter = new StringWriter())
     {
         _jsonSerializer.Serialize(stringWriter, resourceDocument, typeof(ResourceDocument));
         return(stringWriter.ToString());
     }
 }
示例#5
0
        public ShowDocumentWindow()
        {
            InitializeComponent();
            ResourceDocument resourceDocument = new ResourceDocument();

            bookItems = resourceDocument.bookItems;
            setUpView();
        }
示例#6
0
        public ActionResult Upload([Bind(Include = "ResourceDocumentId,ResourceId,DocumentTypeId,Description")] ResourceDocument resourcedocument)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    if (Request.Files.Count > 0)
                    {
                        foreach (string fileName in Request.Files)
                        {
                            HttpPostedFileBase file = file = Request.Files[fileName];
                            if (file != null && file.ContentLength > 0)
                            {
                                if (db.ResourceDocuments.Where(d => d.DocumentTypeId == resourcedocument.DocumentTypeId && d.Description == resourcedocument.Description).Count() > 0)
                                {
                                    ModelState.AddModelError("Description", "The Description specified already exists.");
                                    ViewBag.DocumentTypes = new SelectList(db.DocumentTypes, "DocumentTypeId", "Name", resourcedocument.DocumentTypeId);
                                    return(View(resourcedocument));
                                }
                                var allowedExtensions = new Utility().DocumentExtensions;
                                var extension         = Path.GetExtension(file.FileName);
                                if (!allowedExtensions.Contains(extension))
                                {
                                    ModelState.AddModelError("FilePath", "The extension " + extension + " files are not allowed.");
                                    ViewBag.DocumentTypes = new SelectList(db.DocumentTypes, "DocumentTypeId", "Name", resourcedocument.DocumentTypeId);
                                    return(View(resourcedocument));
                                }
                                string path = resourcedocument.DocumentPath + resourcedocument.ResourceId.ToString() + "_" + resourcedocument.DocumentTypeId.ToString() + "_"
                                              + DateTime.Now.ToString("MMddyyyyhhmmss") + "_" + Path.GetFileName(file.FileName);
                                string savedFileName = Path.Combine(Server.MapPath("~" + path));

                                file.SaveAs(savedFileName);
                                resourcedocument.ContentType       = file.ContentType;
                                resourcedocument.FilePath          = path;
                                resourcedocument.FileName          = file.FileName;
                                resourcedocument.UploadedBy        = User.Identity.GetUserId();
                                resourcedocument.UploadedTimestamp = DateTime.Now;
                                db.ResourceDocuments.Add(resourcedocument);
                                db.SaveChanges();

                                //update checklist for the document.
                                return(RedirectToAction("UpdateChecklist", "Resource", new { resourceId = resourcedocument.ResourceId, documentTypeId = resourcedocument.DocumentTypeId, flag = true }));

                                //return RedirectToAction("Index", "Resource");
                            }
                        }
                    }
                }

                ViewBag.DocumentTypes = new SelectList(db.DocumentTypes.OrderBy(d => d.Name), "DocumentTypeId", "Name", resourcedocument.DocumentTypeId);
                return(View(resourcedocument));
            }
            catch (Exception exp)
            {
                Logger.LogException(exp);
                return(RedirectToAction("AppError", "Error"));
            }
        }
示例#7
0
 public async Task Apply(Kinds.Resources.ResourceDocument resourceDocument)
 {
     var protoResourceDocument = ResourceDocument.FromResourceDocument(resourceDocument);
     var client = new Control.ControlClient(ConnectionManager.ServicesChannel);
     await client.ApplyDocumentAsync(new ApplyDocumentRequest
     {
         ResourceDocument = protoResourceDocument
     });
 }
        public Task Store(string key, ResourceDocument resourceDocument)
        {
            EnsureDirectoryExists();

            var filePath = Path.Combine(_storageDirectory.FullName, $"{key.Replace('/', '-')}.json");
            var json     = ResourceDocumentSerializer.SerializeToJson(resourceDocument);

            return(File.WriteAllTextAsync(filePath, json, Encoding.UTF8));
        }
        public void DocumentRootMustBeJObject()
        {
            var r = new Resource {
                Id = 1
            };
            var    d    = new ResourceDocument(new ResourceObject(r, _p), _p);
            JToken json = d.ToJson();

            Assert.AreEqual(JTokenType.Object, json.Type);
        }
示例#10
0
        public static string GetMessageFromMesasgesPostRequest(ResourceDocument document)
        {
            ApiProperty des = null;

            document.Data.Attributes.TryGetApiProperty("message", out des);
            var str   = des.ToString();
            var sects = str.Split(':');

            return(sects[1]);
        }
        public void SimpleDocumentShouldLackIncludedSection()
        {
            var r = new Resource {
                Id = 1
            };
            var    d    = new ResourceDocument(new ResourceObject(r, _p), _p);
            JToken json = d.ToJson();

            Assert.IsNull(json["included"]);
        }
        public void DocumentRootMustContainPrimaryObject()
        {
            var r = new Resource {
                Id = 1
            };
            var    d    = new ResourceDocument(new ResourceObject(r, _p), _p);
            JToken json = d.ToJson();

            Assert.AreEqual(JTokenType.Object, json["data"].Type);
            Assert.IsTrue(IsResource(json["data"]));
        }
        public void DocumentRootMustContainPrimaryData()
        {
            var r = new Resource {
                Id = 1
            };
            var    d    = new ResourceDocument(new ResourceObject(r, _p), _p);
            JToken json = d.ToJson();

            Assert.IsNotNull(json["data"]);
            Assert.IsNull(json["errors"]);
        }
 public void TopLevelResourcesMustBeUnique()
 {
     var r1 = new Resource {
         Id = 1
     };
     var r2 = new Resource {
         Id = 1
     };
     var d = new ResourceDocument(new List <ResourceObject> {
         new ResourceObject(r1, _p), new ResourceObject(r2, _p)
     }, _p);
 }
        public void DocumentRootMustContainErrorsAsArray()
        {
            var e = new Error {
                Id = "1"
            };
            var d = new ResourceDocument(new List <Error> {
                e
            }, _p);
            JToken json = d.ToJson();

            Assert.AreEqual(JTokenType.Array, json["errors"].Type);
        }
示例#16
0
        public void ResourceDocumentWithMetadaShouldSerializeMetaAttribute()
        {
            var r = new Resource {
                Id = 1
            };
            var d = new ResourceDocument(new ResourceObject(r, _p), _p);

            d.Meta.MyMeta = "foo";
            JToken json = d.ToJson();

            Assert.AreEqual("foo", (string)json["meta"]["my-meta"]);
        }
        public void DocumentRootMustContainErrors()
        {
            var e = new Error {
                Id = "1"
            };
            var d = new ResourceDocument(new List <Error> {
                e
            }, _p);
            JToken json = d.ToJson();

            Assert.IsNotNull(json["errors"]);
            Assert.IsNull(json["data"]);
        }
        public void DocumentRootMustContainPrimaryArraySingle()
        {
            var r = new Resource {
                Id = 1
            };
            var d = new ResourceDocument(new List <ResourceObject> {
                new ResourceObject(r, _p)
            }, _p);
            JToken json = d.ToJson();

            Assert.AreEqual(JTokenType.Array, json["data"].Type);
            Assert.IsTrue(IsResource(json["data"][0]));
        }
示例#19
0
        // GET: /ResourceDocument/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("BadRequest", "Error"));
            }
            ResourceDocument resourcedocument = db.ResourceDocuments.Find(id);

            if (resourcedocument == null)
            {
                return(RedirectToAction("NotFound", "Error"));
            }
            return(View(resourcedocument));
        }
        public void CompoundDocumentWithoutSideloadsShouldLackIncludedSection()
        {
            var r = new ResourceWithRelationshipNoSideload
            {
                Id    = 1,
                ToOne = new Resource
                {
                    Id = 2
                }
            };
            var    d    = new ResourceDocument(new ResourceObject(r, _p), _p);
            JToken json = d.ToJson();

            Assert.IsNull(json["included"]);
        }
        public void CompoundDocumentShouldHaveIncludedSection()
        {
            var r = new ResourceWithRelationship
            {
                Id    = 1,
                ToOne = new Resource
                {
                    Id = 2
                }
            };
            var    d    = new ResourceDocument(new ResourceObject(r, _p), _p);
            JToken json = d.ToJson();

            Assert.IsNotNull(json["included"]);
        }
示例#22
0
 // GET: /ResourceDocument/Create
 public ActionResult Upload(int resourceId)
 {
     try
     {
         ViewBag.DocumentTypes = new SelectList(db.DocumentTypes.Where(d => d.DocumentGroup == (int)DocumentGroup.ResourceDocument).OrderBy(d => d.Name), "DocumentTypeId", "Name");
         var resourceDoc = new ResourceDocument();
         resourceDoc.ResourceId = resourceId;
         return(View(resourceDoc));
     }
     catch (Exception exp)
     {
         Logger.LogException(exp);
         return(RedirectToAction("AppError", "Error"));
     }
 }
        public void CompoundDocumentMustHaveArrayOfResourcesAsIncludedSection()
        {
            var r = new ResourceWithRelationship
            {
                Id    = 1,
                ToOne = new Resource
                {
                    Id = 2
                }
            };
            var    d    = new ResourceDocument(new ResourceObject(r, _p), _p);
            JToken json = d.ToJson();

            Assert.AreEqual(JTokenType.Array, json["included"].Type);
            Assert.IsTrue(IsResource(json["included"][0]));
        }
示例#24
0
        // GET: /ResourceDocument/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("BadRequest", "Error"));
            }
            ResourceDocument resourcedocument = db.ResourceDocuments.Find(id);

            if (resourcedocument == null)
            {
                return(RedirectToAction("NotFound", "Error"));
            }
            ViewBag.DocumentTypeId = new SelectList(db.DocumentTypes, "DocumentTypeId", "Name", resourcedocument.DocumentTypeId);
            ViewBag.ResourceId     = new SelectList(db.Resources, "ResourceId", "FirstName", resourcedocument.ResourceId);
            return(View(resourcedocument));
        }
示例#25
0
        public ResourceDocument Patch(ResourceDocument patchDocument)
        {
            var definition = new ResourceDefinition(ResourceFieldCollection.Patch(Definition.Fields, patchDocument.Definition.Fields));
            var metadata   = (Metadata != null) ?
                             new ResourceMetadata(ResourceFieldCollection.Patch(Metadata?.Fields, patchDocument.Metadata?.Fields)) : null;
            var spec = (Spec != null) ?
                       new ResourceSpec(ResourceFieldCollection.Patch(Spec?.Fields, patchDocument.Spec?.Fields)) : null;
            var state = (State != null) ?
                        new ResourceState(ResourceFieldCollection.Patch(State?.Fields, patchDocument.State?.Fields)) : null;

            return(new ResourceDocument(
                       definition, metadata,
                       spec, state,
                       Kind
                       ));
        }
        public async Task <IActionResult> PostMessage([FromBody] ResourceDocument document)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                var token   = SiteAuthorizationExtensions.GetTokenFromHeader(Request.Headers["Authorization"]);
                var userid  = SiteAuthorizationExtensions.DecryptUserId(token);
                var message = JsonApiUtil.GetMessageFromMesasgesPostRequest(document);

                if (string.IsNullOrWhiteSpace(message))
                {
                    return(StatusCode(422, new { title = "Field data error." }));
                }

                var messageRecord = new MessageRecord()
                {
                    UserId    = int.Parse(userid),
                    Message   = message,
                    CreatedAt = DateTime.Now
                };
                _context.MessageRecord.Add(messageRecord);
                await _context.SaveChangesAsync();

                messageRecord.User = _context.User.FirstOrDefault(u => u.Id == messageRecord.UserId);

                var newToken = SiteAuthorizationExtensions.CreateJwtToken(userid);
                this.Response.Headers.Add("Authorization", "Bearer " + newToken);

                var currentRequestUrl = this.HttpContext.Request.GetUri();

                // Build new document.
                var newDocument = JsonApiUtil.WriteDocumentForMessagesPostResponse(currentRequestUrl, messageRecord);
                return(Created(currentRequestUrl.AbsoluteUri, newDocument));
            }
            catch (Exception e)
            {
                return(StatusCode(500, new { title = "Something went wrong, please try again." }));
            }
        }
示例#27
0
 public ActionResult Edit([Bind(Include = "ResourceDocumentId,ResourceId,DocumentTypeId,Description,FilePath")] ResourceDocument resourcedocument)
 {
     try
     {
         if (ModelState.IsValid)
         {
             db.Entry(resourcedocument).State = EntityState.Modified;
             db.SaveChanges();
             return(RedirectToAction("Index"));
         }
         ViewBag.DocumentTypeId = new SelectList(db.DocumentTypes, "DocumentTypeId", "Name", resourcedocument.DocumentTypeId);
         ViewBag.ResourceId     = new SelectList(db.Resources, "ResourceId", "FirstName", resourcedocument.ResourceId);
         return(View(resourcedocument));
     }
     catch (Exception exp)
     {
         Logger.LogException(exp);
         return(RedirectToAction("AppError", "Error"));
     }
 }
        private void WriteDocument(Type type, object value, Stream writeStream, Encoding effectiveEncoding)
        {
            // Buffer the output in case there is an error
            var nominalStream = new MemoryStream();

            IJsonWriter resourceDocument;

            if (value is IEnumerable <JsonApiResponse> )
            {
                var resourceObjectList = ((IEnumerable <JsonApiResponse>)value).Select(r => r.ToResourceObject(_profile)).ToList();
                resourceDocument = new ResourceDocument(resourceObjectList, _profile);
            }

            else if (value is JsonApiResponse)
            {
                resourceDocument = new ResourceDocument(((JsonApiResponse)value).ToResourceObject(_profile), _profile);
            }

            else if (value is IEnumerable <object> )
            {
                var resourceObjectList = ((IEnumerable <object>)value).Select(o => new ResourceObject(o, _profile)).ToList();
                resourceDocument = new ResourceDocument(resourceObjectList, _profile);
            }

            else
            {
                resourceDocument = new ResourceDocument(new ResourceObject(value, _profile), _profile);
            }

            JsonWriter     writer     = CreateJsonWriter(type, nominalStream, effectiveEncoding);
            JsonSerializer serializer = CreateJsonSerializer();

            writer.Formatting = Formatting.Indented;

            serializer.Serialize(writer, resourceDocument);
            writer.Flush();
            nominalStream.Position = 0;
            nominalStream.CopyTo(writeStream);
            writeStream.Flush();
        }
示例#29
0
        public static Kind?DocumentToKind(ResourceDocument resourceDocument, Func <KindDescriptor, Kind?>?resolveExtensionKind)
        {
            if (resourceDocument.Kind?.Group != Kind.Group ||
                resourceDocument.Kind?.ApiVersion != Kind.ApiVersion ||
                resourceDocument.Kind?.KindName != Kind.KindName)
            {
                return(null);                //  not a kind
            }
            return(new SchemaDrivenKind(
                       ReadStringField(resourceDocument.Metadata, "name"),
                       ReadStringField(resourceDocument.Metadata, "namePlural"),
                       ReadStringField(resourceDocument.Metadata, "group"),
                       ReadStringField(resourceDocument.Metadata, "apiVersion"),
                       KindSchema.FromKindDefinition(resourceDocument.Definition ?? throw new MissingResourceFieldException("definition")),
                       ResolveExtensionKind(resourceDocument?.Metadata["extendsKind"]?.GetString())
                       ));

            Kind?ResolveExtensionKind(string?kindDescriptorString)
            {
                if (string.IsNullOrWhiteSpace(kindDescriptorString))
                {
                    return(default);
示例#30
0
        public ActionResult DeleteConfirmed(int id)
        {
            try
            {
                ResourceDocument resourcedocument = db.ResourceDocuments.Find(id);
                string           path             = Request.MapPath(resourcedocument.FilePath);
                if (System.IO.File.Exists(path))
                {
                    System.IO.File.Delete(path);
                }
                db.ResourceDocuments.Remove(resourcedocument);
                db.SaveChanges();

                return(RedirectToAction("UpdateChecklist", "Resource", new { resourceId = resourcedocument.ResourceId, documentTypeId = resourcedocument.DocumentTypeId, flag = false }));
                //return RedirectToAction("Index", new { resourceId = resourcedocument.ResourceId });
            }
            catch (Exception exp)
            {
                Logger.LogException(exp);
                return(RedirectToAction("AppError", "Error"));
            }
        }