Skip to content
Snippets Groups Projects
app.go 1.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • André Sterba's avatar
    André Sterba committed
    package server
    
    import (
    	"context"
    	"time"
    
    	apb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/app"
    	"code.fbi.h-da.de/danet/gosdn/controller/app"
    )
    
    // App represents a AppServiceServer.
    type App struct {
    	apb.UnimplementedAppServiceServer
    	appService app.IService
    }
    
    // NewAppServer creates a new AppServiceServer.
    func NewAppServer(appService app.IService) *App {
    	return &App{
    		appService: appService,
    	}
    }
    
    // Register checks if the app already exists and if not creates a new one.
    func (a *App) Register(ctx context.Context, request *apb.AppRegisterRequest) (*apb.AppRegisterResponse, error) {
    	app, err := a.appService.Register(request.Appname, request.Token)
    	if err != nil {
    		return &apb.AppRegisterResponse{
    			Timestamp: time.Now().UnixNano(),
    			Status:    apb.Status_STATUS_ERROR,
    		}, err
    	}
    
    	return &apb.AppRegisterResponse{
    		Timestamp:       time.Now().UnixNano(),
    		Status:          apb.Status_STATUS_OK,
    		Queueconnection: app.GetCredentials(),
    	}, nil
    }
    
    // Deregister deregisters an app.
    func (a *App) Deregister(ctx context.Context, request *apb.AppDeregisterRequest) (*apb.AppDeregisterResponse, error) {
    	err := a.appService.Deregister(request.Appname)
    	if err != nil {
    		return &apb.AppDeregisterResponse{
    			Timestamp: time.Now().UnixNano(),
    			Status:    apb.Status_STATUS_ERROR,
    		}, err
    	}
    
    	return &apb.AppDeregisterResponse{
    		Timestamp: time.Now().UnixNano(),
    		Status:    apb.Status_STATUS_OK,
    	}, nil
    }