Exemplo n.º 1
0
        public IActionResult PostPosition([FromForm] BibliographicPositionViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(this.BadRequest("Podano błędne dane!"));
            }
            var redis = ConnectionMultiplexer.Connect("redis_image:6379");
            var db    = redis.GetDatabase();
            var x     = db.StringGet("user_" + model.UserGuid);

            if (x.IsNullOrEmpty)
            {
                return(this.NotFound($"Użytkownik z id {model.UserGuid} nie został znaleziony"));
            }
            BibliographicPosition position = new BibliographicPosition();

            position.Title           = model.Title;
            position.Author          = model.Author;
            position.PublicationDate = model.PublicationDate;
            position.Links           = new List <Link>();
            position.Files           = new List <File>();
            position.UserId          = model.UserGuid;
            //this.CreateLinksForUser(position);
            position.Guid = Guid.NewGuid().ToString();
            var serialized = JsonConvert.SerializeObject(position);

            db.StringSet("position_" + position.Guid, serialized);
            var user = JsonConvert.DeserializeObject <User>(x.ToString());

            user.Positions.Add(position.Guid);
            var serializedU = JsonConvert.SerializeObject(user);

            db.StringSet("user_" + user.Id, serializedU);
            return(Ok(this.CreateLinksForPosition(position, model.UserGuid)));
        }
        public async Task <ActionResult> ConnectFile(string link1, string link2)
        {
            string id = HttpContext.User.Claims.FirstOrDefault(b => b.Type == ClaimTypes.NameIdentifier).Value;

            if (!CheckIfUserInRedis(id))
            {
                return(RedirectToAction("Denied", "Home"));
            }
            HttpClient client   = new HttpClient();
            var        response = await client.GetAsync(link1);

            var data = await response.Content.ReadAsStringAsync();

            BibliographicPosition position = JsonConvert.DeserializeObject <BibliographicPosition>(data);
            var response2 = await client.GetAsync(link2);

            var data2 = await response2.Content.ReadAsStringAsync();

            List <File>          files = JsonConvert.DeserializeObject <List <File> >(data2);
            ConnectFileViewModel model = new ConnectFileViewModel
            {
                Position = position,
                Files    = files
            };

            return(View(model));
        }
        public async Task <ActionResult> ShowPosition(string link)
        {
            string id = HttpContext.User.Claims.FirstOrDefault(b => b.Type == ClaimTypes.NameIdentifier).Value;

            if (!CheckIfUserInRedis(id))
            {
                return(RedirectToAction("Denied", "Home"));
            }
            HttpClient client   = new HttpClient();
            var        response = await client.GetAsync(link);

            var data = await response.Content.ReadAsStringAsync();

            BibliographicPosition position = JsonConvert.DeserializeObject <BibliographicPosition>(data);

            return(View(position));
        }
Exemplo n.º 4
0
        private BibliographicPosition CreateLinksForPosition(BibliographicPosition position, string userGuid)
        {
            position.Links = new List <Link>();
            var idObj = new { guid = position.Guid };

            position.Links.Add(
                new Link(Request.Scheme + "://" + Request.Host + "/rest/" + nameof(this.GetPositions) + "/" + userGuid,
                         "get-positions",
                         "GET"));

            position.Links.Add(
                new Link(Request.Scheme + "://" + Request.Host + "/rest/" + nameof(this.GetPosition) + "/" + userGuid + "/" + position.Guid,
                         "get-position",
                         "GET"));

            position.Links.Add(
                new Link(Request.Scheme + "://" + Request.Host + "/rest/" + nameof(this.PostPosition),
                         "post-position",
                         "POST"));

            position.Links.Add(
                new Link(Request.Scheme + "://" + Request.Host + "/rest/" + nameof(this.ConnectFile) + "/" + userGuid + "/" + position.Guid + "?fileGuid=",
                         "connect-file",
                         "PATCH"));

            position.Links.Add(
                new Link(Request.Scheme + "://" + Request.Host + "/rest/" + nameof(this.DisconnectFile) + "/" + userGuid + "/" + position.Guid + "?fileGuid=",
                         "disconnect-file",
                         "PATCH"));

            position.Links.Add(
                new Link(Request.Scheme + "://" + Request.Host + "/rest/" + nameof(this.DeletePosition) + "/" + userGuid + "/" + position.Guid,
                         "delete-position",
                         "DELETE"));

            position.Links.Add(
                new Link(Request.Scheme + "://" + Request.Host + "/rest/" + nameof(this.GetFiles) + "/" + userGuid,
                         "get-files",
                         "GET"));

            return(position);
        }