Commit 143f1062 authored by EnesKarakas's avatar EnesKarakas
Browse files

Backend done

parent 3476b205
package io.swagger.api;
import io.swagger.model.Search;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.Valid;
import javax.validation.constraints.*;
import java.util.List;
@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.SpringCodegen", date = "2024-06-09T14:41:38.246173275Z[GMT]")
@Validated
public interface SearchApi {
@Operation(summary = "Get all locations", description = "", tags = {})
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "A list of locations", content = @Content(mediaType = "application/json", array = @ArraySchema(schema = @Schema(implementation = Search.class)))) })
@RequestMapping(value = "/search", produces = { "application/json" }, method = RequestMethod.GET)
ResponseEntity<List<Search>> searchGet(
@NotNull @Parameter(in = ParameterIn.QUERY, description = "Name of the city to filter locations by", required = true, schema = @Schema()) @Valid @RequestParam(value = "city", required = true) String city);
}
package io.swagger.api;
import io.swagger.model.Search;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.media.Schema;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.Valid;
import javax.validation.constraints.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.SpringCodegen", date = "2024-06-09T14:41:38.246173275Z[GMT]")
@RestController
public class SearchApiController implements SearchApi {
private static final Logger log = LoggerFactory.getLogger(SearchApiController.class);
private final ObjectMapper objectMapper;
@SuppressWarnings("unused")
private final HttpServletRequest request;
@org.springframework.beans.factory.annotation.Autowired
public SearchApiController(ObjectMapper objectMapper, HttpServletRequest request) {
this.objectMapper = objectMapper;
this.request = request;
}
public ResponseEntity<List<Search>> searchGet(
@NotNull @Parameter(in = ParameterIn.QUERY, description = "Name of the city to filter locations by", required = true, schema = @Schema()) @Valid @RequestParam(value = "city", required = true) String city) {
try {
RestTemplate restTemplate = new RestTemplate();
ApiService apiService = new ApiService(restTemplate);
String data = apiService.getDataFromFirstApi(
"http://api.weatherapi.com/v1/search.json?key=1244099aeaee4b179e6111803241304&q=" + city);
@SuppressWarnings("unchecked")
ResponseEntity<List<Search>> response = new ResponseEntity<List<Search>>(objectMapper.readValue(
data, List.class), HttpStatus.ACCEPTED);
return response;
} catch (IOException e) {
log.error("Couldn't serialize response for content type application/json", e);
return new ResponseEntity<List<Search>>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
package io.swagger.model;
import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.*;
/**
* Search
*/
@Validated
@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.SpringCodegen", date = "2024-06-09T14:41:38.246173275Z[GMT]")
@JsonInclude(Include.NON_NULL)
public class Search {
@JsonProperty("id")
private Integer id = null;
@JsonProperty("name")
private String name = null;
@JsonProperty("region")
private String region = null;
@JsonProperty("country")
private String country = null;
@JsonProperty("lat")
private Float lat = null;
@JsonProperty("lon")
private Float lon = null;
@JsonProperty("url")
private String url = null;
public Search id(Integer id) {
this.id = id;
return this;
}
/**
* Get id
*
* @return id
**/
@Schema(example = "2801268", description = "")
@NotNull
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Search name(String name) {
this.name = name;
return this;
}
/**
* Get name
*
* @return name
**/
@Schema(example = "London", description = "")
@NotNull
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Search region(String region) {
this.region = region;
return this;
}
/**
* Get region
*
* @return region
**/
@Schema(example = "City of London, Greater London", description = "")
@NotNull
public String getRegion() {
return region;
}
public void setRegion(String region) {
this.region = region;
}
public Search country(String country) {
this.country = country;
return this;
}
/**
* Get country
*
* @return country
**/
@Schema(example = "United Kingdom", description = "")
@NotNull
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public Search lat(Float lat) {
this.lat = lat;
return this;
}
/**
* Get lat
*
* @return lat
**/
@Schema(example = "51.52", description = "")
@NotNull
public Float getLat() {
return lat;
}
public void setLat(Float lat) {
this.lat = lat;
}
public Search lon(Float lon) {
this.lon = lon;
return this;
}
/**
* Get lon
*
* @return lon
**/
@Schema(example = "-0.11", description = "")
@NotNull
public Float getLon() {
return lon;
}
public void setLon(Float lon) {
this.lon = lon;
}
public Search url(String url) {
this.url = url;
return this;
}
/**
* Get url
*
* @return url
**/
@Schema(example = "london-city-of-london-greater-london-united-kingdom", description = "")
@NotNull
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
@Override
public boolean equals(java.lang.Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Search search = (Search) o;
return Objects.equals(this.id, search.id) &&
Objects.equals(this.name, search.name) &&
Objects.equals(this.region, search.region) &&
Objects.equals(this.country, search.country) &&
Objects.equals(this.lat, search.lat) &&
Objects.equals(this.lon, search.lon) &&
Objects.equals(this.url, search.url);
}
@Override
public int hashCode() {
return Objects.hash(id, name, region, country, lat, lon, url);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class Search {\n");
sb.append(" id: ").append(toIndentedString(id)).append("\n");
sb.append(" name: ").append(toIndentedString(name)).append("\n");
sb.append(" region: ").append(toIndentedString(region)).append("\n");
sb.append(" country: ").append(toIndentedString(country)).append("\n");
sb.append(" lat: ").append(toIndentedString(lat)).append("\n");
sb.append(" lon: ").append(toIndentedString(lon)).append("\n");
sb.append(" url: ").append(toIndentedString(url)).append("\n");
sb.append("}");
return sb.toString();
}
/**
* Convert the given object to string with each line indented by 4 spaces
* (except the first line).
*/
private String toIndentedString(java.lang.Object o) {
if (o == null) {
return "null";
}
return o.toString().replace("\n", "\n ");
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment