This commit is contained in:
Marcin Pawlicki 2023-01-28 10:03:04 +01:00
parent 9f1d3fa92d
commit 365eb02330
5 changed files with 47 additions and 4 deletions

View File

@ -33,6 +33,8 @@ dependencies {
runtimeOnly 'com.mysql:mysql-connector-j' runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.12.4'
} }
jar { jar {

View File

@ -2,16 +2,27 @@ package com.s477603.movies.web;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.s477603.movies.document.Movie; import com.s477603.movies.document.Movie;
import com.s477603.movies.document.MoviesCommonResponse; import com.s477603.movies.document.MoviesCommonResponse;
import com.s477603.movies.service.IMDBService; import com.s477603.movies.service.IMDBService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@RestController @RestController
@RequestMapping("/api/movies") @RequestMapping("/api/movies")
public class MoviesController { public class MoviesController {
@ -33,6 +44,35 @@ public class MoviesController {
} }
} }
@GetMapping("/trending/download")
public ResponseEntity trendingGenerate() throws IOException {
MoviesCommonResponse trending = imdbService.getTrending(1);
XmlMapper xmlMapper = new XmlMapper();
String xml = xmlMapper.writeValueAsString(trending);
FileWriter fw = new FileWriter("trending.xml");
fw.write(xml);
File file = new File("trending.xml");
HttpHeaders header = new HttpHeaders();
header.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=trending.xml");
header.add("Cache-Control", "no-cache, no-store, must-revalidate");
header.add("Pragma", "no-cache");
header.add("Expires", "0");
Path path = Paths.get(file.getAbsolutePath());
ByteArrayResource resource = new ByteArrayResource(Files.readAllBytes(path));
return ResponseEntity.ok()
.headers(header)
.contentLength(file.length())
.contentType(MediaType.parseMediaType("application/octet-stream"))
.body(resource);
}
@GetMapping("/search") @GetMapping("/search")
public ResponseEntity search(@RequestParam(name = "query") String query, @RequestParam(name = "page", defaultValue = "1") int page) { public ResponseEntity search(@RequestParam(name = "query") String query, @RequestParam(name = "page", defaultValue = "1") int page) {
MoviesCommonResponse search = imdbService.searchMovies(query, page); MoviesCommonResponse search = imdbService.searchMovies(query, page);

View File

@ -4,6 +4,6 @@ REFRESH_TOKEN_PRIVATE_KEY_PATH: "access-refresh-token-keys/refresh-token-private
REFRESH_TOKEN_PUBLIC_KEY_PATH: "access-refresh-token-keys/refresh-token-public.key" REFRESH_TOKEN_PUBLIC_KEY_PATH: "access-refresh-token-keys/refresh-token-public.key"
TMDB_API_KEY: "467188b6746d2763198f8fdc0ae4bc9e" TMDB_API_KEY: "467188b6746d2763198f8fdc0ae4bc9e"
DB_URL: jdbc:mysql://localhost:3306/movies?useSSL=false DB_URL: jdbc:mysql://localhost:3306/movies?allowPublicKeyRetrieval=true&useSSL=false
DB_USERNAME: root DB_USERNAME: root
DB_PASSWORD: marcin DB_PASSWORD: marcin

View File

@ -1,8 +1,8 @@
spring: spring:
datasource: datasource:
url: jdbc:mysql://localhost:3306/movies?useSSL=false url: ${DB_URL}
username: root username: ${DB_USERNAME}
password: marcin password: ${DB_PASSWORD}
profiles: profiles:
active: prod active: prod

1
trending.xml Normal file

File diff suppressed because one or more lines are too long