/
session.go
72 lines (54 loc) · 1.31 KB
/
session.go
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package drive
import (
"context"
"github.com/henrybear327/go-proton-api"
)
type InitHandler func(ctx context.Context) error
type Session struct {
application *Application
user *User
links *Links
events *EventLoop
fs *FileSystem
}
func NewSession(application *Application) *Session {
self := &Session{application: application}
self.user = &User{client: self.Client(), tokens: self.Tokens()}
self.links = &Links{client: self.Client(), user: self.User()}
self.events = &EventLoop{client: self.Client(), links: self.Links()}
self.fs = &FileSystem{client: self.Client(), user: self.User(), links: self.Links(), events: self.Events()}
return self
}
func (self *Session) Client() *proton.Client {
return self.application.Client()
}
func (self *Session) Tokens() *Tokens {
return self.application.Tokens()
}
func (self *Session) User() *User {
return self.user
}
func (self *Session) Links() *Links {
return self.links
}
func (self *Session) Events() *EventLoop {
return self.events
}
func (self *Session) FileSystem() *FileSystem {
return self.fs
}
func (self *Session) Init(ctx context.Context) error {
err := self.user.Init(ctx)
if err != nil {
return err
}
err = self.links.Init(ctx)
if err != nil {
return err
}
err = self.events.Init(ctx)
if err != nil {
return err
}
return nil
}