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); }
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); }
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); }
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)); }
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; }
/// <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); } }
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")); } }
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); } }
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); }
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)); }