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(); }
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()); } }
public ShowDocumentWindow() { InitializeComponent(); ResourceDocument resourceDocument = new ResourceDocument(); bookItems = resourceDocument.bookItems; setUpView(); }
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")); } }
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); }
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); }
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])); }
// 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"]); }
// 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])); }
// 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)); }
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." })); } }
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(); }
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);
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")); } }