OOP designs

Design Video Streaming App

~2 mins read

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
class UID:
    ... 

class UIDGenerator:
    def generate()->UID:
        ... 

class File:
    name: str
    uid: UID
    path: Path 

class MultiPart:
    parts: list[File]

class Audio(MultiPart):
    ... 

class Video(MultiPart):
    ...

class Collection:
    def add(file:MultiPart):
        ...

    def get(uid:UID)->MultiPart:
        ... 

class Streamer:
    def stream(uid:UID)->MultiPart?:
        ... 

class User: 
    uid: UID
    username: str 
    auth_method: AuthMethod 
    favorites: Collection

class Auth:
    def signin(username, password)-> User?:
        ...

    def signup(username, password)-> User?:
        ...


class VideoApp: 
    auth: Auth 
    library: Collection 
    streamer: Streamer 

🎰