Пример #1
0
        public static Character getCharacter(string name)
        {
            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri("https://gateway.marvel.com");
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            string lien = "/v1/public/characters?ts=1&apikey=81ca23b977c4b9d1f55715b9f4b16b50&hash=36261a4a1ba872396797b75452408068&name=" + name;
//ttps://gateway.marvel.com/v1/public/characters?ts=1&apikey=81ca23b977c4b9d1f55715b9f4b16b50&hash=36261a4a1ba872396797b75452408068&name=Spider-Man
            HttpResponseMessage  reponse = client.GetAsync(lien).Result;
            CharacterDataWrapper e       = new CharacterDataWrapper();

            if (reponse.IsSuccessStatusCode)
            {
                string contenu = reponse.Content.ReadAsStringAsync().Result;
                e = JsonConvert.DeserializeObject <CharacterDataWrapper>(contenu);
            }

            Character retour = new Character();

            if (e.data.count != 0)
            {
                retour = e.data.results.FirstOrDefault();
            }
            else
            {
                retour.id = 0;
            }

            return(retour);
        }
Пример #2
0
        public async Task <CharacterDataWrapper> GetCharactersAtParameters(CharacterParameters characterParameters)
        {
            List <CharacterViewModel> result = new List <CharacterViewModel>();

            if (characterParameters.ValidLimit())
            {
                throw new ConflictRequestException("Limit greater than 100.");
            }

            var listcharacter = await _characterService.GetCharactersAtParameters(characterParameters);

            foreach (Character character in listcharacter)
            {
                var obj = _mapper.Map <CharacterViewModel>(character);

                result.Add(obj);
            }

            CharacterDataWrapper characterDataWrapper = new CharacterDataWrapper();


            GetDataWrapper(characterDataWrapper, characterParameters);
            characterDataWrapper.data.total   = characterDataWrapper.data.count = result.Count;
            characterDataWrapper.data.results = result;

            return(characterDataWrapper);
        }
Пример #3
0
        public static CharacterList getCharacterList(int page = 1)
        {
            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri("https://gateway.marvel.com");
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            string lien = "/v1/public/characters?ts=1&apikey=81ca23b977c4b9d1f55715b9f4b16b50&hash=36261a4a1ba872396797b75452408068&offset=" + (page - 1) * 20;
            HttpResponseMessage  reponse = client.GetAsync(lien).Result;
            CharacterDataWrapper e       = new CharacterDataWrapper();

            if (reponse.IsSuccessStatusCode)
            {
                string contenu = reponse.Content.ReadAsStringAsync().Result;
                e = JsonConvert.DeserializeObject <CharacterDataWrapper>(contenu);
            }

            CharacterList retour = new CharacterList();

            foreach (Character element in e.data.results)
            {
                retour.items.Add(element);
            }

            return(retour);
        }
Пример #4
0
        public async Task <IActionResult> Hero(string searchString)
        {
            var _marvel = new MarvelApi.Marvel();
            CharacterDataWrapper CharacterModel = await _marvel.GetCharacters(searchString);

            Character _character = CharacterModel.Data.Results.FirstOrDefault();


            // ComicDataWrapper comicModel = await _marvel.GetComicsForCharacter(_character.Id);
            // List<Comic> _comics = comicModel.Data.Results;
            // List<Comic> _ComicsWithImages = new List<Comic>(3);
            // int count = 0;
            //some of the data is not in the api db. So skip the comics that do not have images and trim the description
            // foreach (var comic in _comics)
            // {
            //     int pathlength = 0;
            //     if (count == 3)
            //     {
            //         break;
            //     }

            //     //Truncate the description if it is too long
            //     if (!String.IsNullOrEmpty(comic.Description))
            //     {
            //         if (comic.Description.Length > 360)
            //         {
            //             comic.Description = comic.Description.Substring(0, 360) + " ...";
            //         }
            //     }

            //     pathlength = comic.Thumbnail.Path.Length;

            //     if (comic.Thumbnail.Path.Substring(pathlength - 19, 19) != "image_not_available")
            //     {
            //         _ComicsWithImages.Add(comic);
            //         count++;
            //     }
            // }

            // CharacterComicViewModel ccVM = new CharacterComicViewModel();

            // ccVM.Character = _character;
            // ccVM.Comics = _ComicsWithImages;
            // ccVM.AttributionText = CharacterModel.AttributionText;
            if (_character == null)
            {
                return(Redirect("/main"));
            }
            return(View(_character));
        }
Пример #5
0
        private void GetDataWrapper(CharacterDataWrapper characterDataWrapper, CharacterParameters characterParameters)
        {
            characterDataWrapper.Code      = 200;
            characterDataWrapper.Status    = "OK";
            characterDataWrapper.Copyright = "© 2020 MARVEL";

            characterDataWrapper.AttributionText = "Data provided by Marvel. © 2020 MARVEL";
            characterDataWrapper.AttributionHTML = "<a href=\"http://marvel.com\">Data provided by Marvel. © 2020 MARVEL</a>";
            characterDataWrapper.etag            = "b7f6ec76174886d8042748a557e7099ad1151f12";

            characterDataWrapper.data        = new CharacterDataContainer();
            characterDataWrapper.data.offset = characterParameters.Offset;
            characterDataWrapper.data.limit  = characterParameters.Limit;
        }
Пример #6
0
        /// <summary>
        /// Searches characters.
        /// </summary>
        /// <param name="limit">The number of result</param>
        /// <param name="offset">The number of character to jump before search</param>
        /// <param name="Endpoint">The endpoint</param>
        /// <param name="SearchString">The search string</param>
        /// <returns></returns>
        /// <exception cref="System.InvalidOperationException">Limit 0 to 100 only</exception>
        public List <Characters> SearchCharacters(int limit           = 1,
                                                  int offset          = 200, string Endpoint = "v1/public/characters",
                                                  string SearchString = "")
        {
            //Marvel accept a maximum of 100 character by requests
            if (limit > 100)
            {
                throw new InvalidOperationException("Limit 0 to 100 only");
            }
            //1- Get the time
            t = DateTime.Now.TimeOfDay;
            //2- Calculate hash in accordance with marvel documentation
            hash = Tools.CalculateMD5LikeMarvel(t, pKey).ToLower();
            //3- Prepare the parameters
            urlParameters = "?nameStartsWith=" + HttpUtility.UrlEncode(SearchString) + "&ts=" + t.ToString().Replace(":", "").Replace(".", "") + "&limit=" + limit + "&offset=" + offset + "&apikey=" + Key + "&hash=" + hash;

            //4- Get the json response from marvel API
            string json = base.Execute(Endpoint, urlParameters);

            if (json != "")
            {
                List <Characters>    lc = null;
                CharacterDataWrapper cd = JsonConvert.DeserializeObject <CharacterDataWrapper>(json);

                if (cd.data != null)
                {
                    CharacterDataContainer CDC = cd.data;
                    if (CDC.results.Count > 0)
                    {
                        lc = CDC.results;
                    }
                }


                return(lc);
            }
            else
            {
                return(null);
            }
        }
Пример #7
0
        public async Task <IActionResult> Add(string heroname)
        {
            var _marvel = new MarvelApi.Marvel();
            CharacterDataWrapper CharacterModel = await _marvel.GetCharacters(heroname);

            Character _character = CharacterModel.Data.Results.FirstOrDefault();


            int? userid   = HttpContext.Session.GetInt32("UserId");
            User userInDb = context.Users.FirstOrDefault(u => u.UserId == userid);

            _character.usuario = userInDb;
            if (context.elchar.Any(u => u.Id == _character.Id))
            {
                return(Redirect("/main"));
            }
            else
            {
                context.elchar.Add(_character);
                context.SaveChanges();
                return(RedirectToAction("Main"));
            }
        }
Пример #8
0
        public Characters GetCharacter(long id, string Endpoint = "v1/public/characters")
        {
            int limit  = 1;
            int offset = 0;

            //1- Get the time
            t = DateTime.Now.TimeOfDay;
            //2- Calculate hash in accordance with marvel documentation
            hash = Tools.CalculateMD5LikeMarvel(t, pKey).ToLower();
            //3- Prepare the parameters
            urlParameters = "/" + id + "?ts=" + t.ToString().Replace(":", "").Replace(".", "") + "&limit=" + limit + "&offset=" + offset + "&apikey=" + Key + "&hash=" + hash;

            //4- Get the json response from marvel API
            string json = base.Execute(Endpoint, urlParameters);

            if (json != "")
            {
                Characters           lc = null;
                CharacterDataWrapper cd = JsonConvert.DeserializeObject <CharacterDataWrapper>(json);

                if (cd.data != null)
                {
                    CharacterDataContainer CDC = cd.data;
                    if (CDC.results.Count > 0)
                    {
                        lc = CDC.results.First();
                    }
                }


                return(lc);
            }
            else
            {
                return(null);
            }
        }
Пример #9
0
        private static async Task <CharacterDataWrapper> GetCharacterDataWrapperAsync(int offset, int limit)
        {
            var timeStamp = DateTime.Now.Ticks.ToString();

            var    hash = GenerateHash(timeStamp);
            string path = String.Format("https://gateway.marvel.com:443/v1/public/characters?limit={0}&offset={1}&apikey={2}&ts={3}&hash={4}", limit, offset, PublicKey, timeStamp, hash);

            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri(path);
            var response = await client.GetAsync(client.BaseAddress);

            response.EnsureSuccessStatusCode();

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

            JObject o = JObject.Parse(content);

            CharacterDataWrapper deserializedUser = new CharacterDataWrapper();

            deserializedUser = JsonConvert.DeserializeObject <CharacterDataWrapper>(o.ToString());

            return(deserializedUser);
        }
Пример #10
0
        public async Task <IActionResult> CharacterDetails(int?id, string name)
        {
            MarvelApi            marvel       = new MarvelApi();
            CharacterDataWrapper apiCharacter = new CharacterDataWrapper();

            if (id == null && name == null)
            {
                return(NotFound());
            }

            if (id != null)
            {
                apiCharacter = await marvel.GetCharacterById(id);
            }

            if (name != null)
            {
                apiCharacter = await marvel.GetCharacterByName(name);
            }

            IEnumerable <Character> characterList = apiCharacter.Data.Results;

            return(View(characterList));
        }