split RoomEntry.

This commit is contained in:
m1k1o
2021-03-07 22:37:51 +01:00
parent ff16e04d0f
commit 668e615b2f
3 changed files with 19 additions and 25 deletions
+4 -2
View File
@@ -27,14 +27,16 @@ func (manager *ApiManagerCtx) roomCreate(w http.ResponseWriter, r *http.Request)
return
}
response, err := manager.rooms.Create(request)
ID, err := manager.rooms.Create(request)
if err != nil {
http.Error(w, err.Error(), 500)
return
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(response)
json.NewEncoder(w).Encode(struct{
ID string `json:"id"`
}{ID})
}
func (manager *ApiManagerCtx) roomGet(w http.ResponseWriter, r *http.Request) {
+11 -17
View File
@@ -48,35 +48,35 @@ type RoomManagerCtx struct {
client *dockerClient.Client
}
func (manager *RoomManagerCtx) List() ([]types.RoomData, error) {
func (manager *RoomManagerCtx) List() ([]types.RoomEntry, error) {
containers, err := manager.listContainers()
if err != nil {
return nil, err
}
result := []types.RoomData{}
result := []types.RoomEntry{}
for _, container := range containers {
result = append(result, types.RoomData{
result = append(result, types.RoomEntry{
ID: container.ID,
})
}
return result, nil
}
func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (*types.RoomData, error) {
func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (string, error) {
// TODO: Check if path name exists.
pathName := settings.Name
if pathName == "" {
var err error
pathName, err = utils.NewUID(32)
if err != nil {
return nil, err
return "", err
}
}
epr, err := manager.allocatePorts(settings.MaxConnections)
if err != nil {
return nil, err
return "", err
}
portBindings := nat.PortMap{}
@@ -176,32 +176,26 @@ func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (*types.RoomD
)
if err != nil {
return nil, err
return "", err
}
// Run the actual container
err = manager.client.ContainerStart(context.Background(), cont.ID, dockerTypes.ContainerStartOptions{})
if err != nil {
return nil, err
return "", err
}
return &types.RoomData{
ID: cont.ID,
RoomSettings: settings,
}, nil
return cont.ID, nil
}
func (manager *RoomManagerCtx) Get(id string) (*types.RoomData, error) {
func (manager *RoomManagerCtx) Get(id string) (*types.RoomSettings, error) {
_, err := manager.inspectContainer(id)
if err != nil {
return nil, err
}
return &types.RoomData{
ID: id,
RoomSettings: types.RoomSettings{},
}, nil
return &types.RoomSettings{}, nil
}
func (manager *RoomManagerCtx) Update(id string, settings types.RoomSettings) error {
+4 -6
View File
@@ -66,16 +66,14 @@ func (settings *RoomSettings) Env(eprMin uint16, eprMax uint16, nat1to1 []string
return env
}
type RoomData struct {
type RoomEntry struct {
ID string `json:"id"`
RoomSettings
}
type RoomManager interface {
List() ([]RoomData, error)
Create(settings RoomSettings) (*RoomData, error)
Get(id string) (*RoomData, error)
List() ([]RoomEntry, error)
Create(settings RoomSettings) (string, error)
Get(id string) (*RoomSettings, error)
Update(id string, settings RoomSettings) error
Remove(id string) error
}