Git Product home page Git Product logo

video-aws's Introduction

Video Streaming Platform - Learning Purpose only! :)

Basic Requirements

Java 11+ for building the project source. To run the project, you will need to setup two system environment variables:

AWS_ACCESS_KEY_ID=;
AWS_SECRET_ACCESS_KEY=;

You can obtain access keys for bucket from me.

NOTE: Instead of a disk-based database, currently application temporarily persists in JVM for the sake of quick prototyping. However, there are alternative implementations which persist in MySQL are available too.

Demo URL

NOTE: To perform health check, click on the above link.

API Description

All the APIs are described below and the corresponding collection can be found in root directory for project.

Authentication

Sign-up

Endpoint: /auth/signup
Type: POST
Request Body: name, email, password
Content-Type: application/json

Verify Signup

Endpoint: /auth/verify
Type: GET
Params: token

Login

Endpoint: /auth/login
Type: POST
Content-Type: application/json
Request Body: email, password
Response: token
Verification Required: true

Upload

Endpoint: /video/upload
type: POST
Param: name, thumbnail
Content-Type: multipart/form-data
Body: file
Authentication Required: true

List files

Endpoint: /video/list
type: GET
Param: pageSize (Optional, default 10)
       page (Optional, default 1)
Response Body:
       message
       status
       data: [ (name, thumbnail) ]
Authentication Required: true

Stream video

Endpoint: /video/stream/{name}
Type: GET
Path Param: name
Response: byte[]
Response Content-Type: video/mp4

Search with name

Endpoint: /video/search
Type: GET
Param: name
Response Body: -- Same as List files API --

Checklist of tasks.

  • Authentication - Signup and Signin (without OTP Email Verification)
  • Video upload with title input
  • Video list with pagination
  • Video search (based on title)
  • Api documentation
  • Deployment
  • Email verification OTP flow for Signup

NOTE: Regarding email verification, currently application uses a naive token generation (current-timestamp). The idea behind design is to indicate that this can be easily swapped with a secure one. EDIT: The initial choice of using currentTimestamp is definitely not an ideal one even for prototyping (Two users may, with a very high probability get colliding tokens), changed it to Java util UUID (which is thread-safe) yet not the best choice as the expiration time is eternity.

video-aws's People

Contributors

jarnugirdhar avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.