public void GetAllStarshipsTest_ReturnsExpectedType()
        {
            string defaultPageNumber        = "1";
            EntityResults <Starship> result = swapiService.GetAllPaginated <Starship>("/starships/", defaultPageNumber);

            Assert.IsInstanceOfType(result, typeof(EntityResults <Starship>));
        }
예제 #2
0
        /// <summary>
        /// Retrieves the <see cref="SwapiStarshipApp.Entities.Starship" /> for the gievn endpoint.
        /// </summary>
        /// <param name="endpoint">The address of the endpoint.</param>
        /// <param name="parameters">The address of the endpoint.</param>
        /// <returns>
        /// Returns Entity results.
        /// </returns>
        private EntityResults <T> GetMultiple <T>(string endpoint, Dictionary <string, string> parameters) where T : BaseEntity
        {
            string serializedParameters = "";

            if (parameters != null)
            {
                serializedParameters = "?" + SerializeDictionary(parameters);
            }
            string            json          = Request(string.Format("{0}{1}{2}", apiUrl, endpoint, serializedParameters), HttpMethod.GET);
            EntityResults <T> swapiResponse = JsonConvert.DeserializeObject <EntityResults <T> >(json);

            return(swapiResponse);
        }
예제 #3
0
        /// <summary>
        /// Retrieves the next page number
        /// </summary>
        /// <param name="entityName">The name of the entity being retrieved</param>
        /// <param name="pageNumber">The number of the page being retrieved. Initially set to default.</param>
        /// <returns>
        /// Returns the next/previous page number
        /// </returns>
        public EntityResults <T> GetAllPaginated <T>(string entityName, string pageNumber = defaultPageNumber) where T : BaseEntity
        {
            Dictionary <string, string> parameters = new Dictionary <string, string>();

            parameters.Add("page", pageNumber);

            EntityResults <T> result = GetMultiple <T>(entityName, parameters);

            result.nextPageNo     = String.IsNullOrEmpty(result.next) ? null : GetQueryParameters(result.next)["page"];
            result.previousPageNo = String.IsNullOrEmpty(result.previous) ? null : GetQueryParameters(result.previous)["page"];

            return(result);
        }
예제 #4
0
        public async Task <IEnumerable <KeyValuePair <Personagem, int> > > ObterPaginado(int page = 1)
        {
            HelperApi           api      = new HelperApi("https://swapi.co/api/", "json");
            HttpResponseMessage response = await api.Cliente.GetAsync($"people?page={page}");

            if (response.IsSuccessStatusCode)
            {
                var dados = await response.Content.ReadAsStringAsync();

                EntityResults <PersonagemDTO> swapiResponse = JsonConvert.DeserializeObject <EntityResults <PersonagemDTO> >(dados);

                await AdicionaResponseAListaAsync(swapiResponse.results);

                return(Mapper(personagemCompleto, Convert.ToInt32(swapiResponse.count)));
            }

            return(new List <KeyValuePair <Personagem, int> >());
        }
예제 #5
0
        public async Task <IEnumerable <Especie> > ObterTodos()
        {
            HelperApi           api      = new HelperApi("https://swapi.co/api/", "json");
            HttpResponseMessage response = await api.Cliente.GetAsync($"species/?page={page}");

            if (response.IsSuccessStatusCode)
            {
                var dados = await response.Content.ReadAsStringAsync();

                swapiResponse = JsonConvert.DeserializeObject <EntityResults <EspecieDTO> >(dados);

                await AdicionaResponseAListaAsync();

                while (TemProximaPagina(swapiResponse))
                {
                    page++;
                    await ObterTodos();
                }

                return(Mapper(especies));
            }

            return(new List <Especie>());
        }
예제 #6
0
 private bool TemProximaPagina(EntityResults <EspecieDTO> swapiResponse)
 {
     return(swapiResponse.next != null);
 }
예제 #7
0
        /// <summary>
        /// Get all the starship entites on the given page
        /// </summary>
        public EntityResults <Starship> GetAllStarships(string pageNumber = defaultPageNumber)
        {
            EntityResults <Starship> result = GetAllPaginated <Starship>("/starships/", pageNumber);

            return(result);
        }