본문 바로가기

Spring Boot

[Springboot + Vimeo] vimeo 파일 다운로드 구현

반응형

1. 먼저 Vimeo 계정을 만들고 Vimeo Developer 웹 사이트에서 Vimeo API 액세스 토큰을 가져옵니다.

2. Spring Boot 프로젝트에서 다음 종속성을 pom.xml 파일에 추가합니다.

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
  <groupId>org.glassfish.jersey.core</groupId>
  <artifactId>jersey-client</artifactId>
  <version>2.26</version>
</dependency>

 

3. 비디오 다운로드를 처리할 컨트롤러 클래스를 만듭니다. 이 클래스에서 Jersey의 Client API를 사용하여 Vimeo에서 비디오 파일을 다운로드하는 방법을 정의합니다.

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class VideoController {
  
  @GetMapping("/download/{videoId}")
  public void downloadVideo(@PathVariable String videoId) {
    try {
      // Create a Vimeo client
      Client client = ClientBuilder.newClient();
      
      // Endpoint for downloading videos from Vimeo
      String downloadEndpoint = "https://api.vimeo.com/videos/" + videoId;
      
      // Request headers
      String accessToken = "your_access_token";
      
      // Make a GET request to the download endpoint
      Response response = client
        .target(downloadEndpoint)
        .request()
        .header("Authorization", "Bearer " + accessToken)
        .accept(MediaType.APPLICATION_OCTET_STREAM_TYPE)
        .get();
      
      // Check the response status
      if (response.getStatus() == 200) {
        // Write the video file to disk
        File file = new File(videoId + ".mp4");
        OutputStream outputStream = new FileOutputStream(file);
        outputStream.write(response.readEntity(byte[].class));
        outputStream.close();
        
        System.out.println("File downloaded successfully.");
      } else {
        System.out.println("File download failed.");
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

 

반응형