Add http server
diff --git a/core/kg/server/grpc_server.go b/core/kg/server/grpc_server.go
index c36c7d2..bc3b05f 100644
--- a/core/kg/server/grpc_server.go
+++ b/core/kg/server/grpc_server.go
@@ -1,29 +1,32 @@
 package server
 
 import (
+	"fmt"
 	"net"
 	"os"
 
 	"github.com/giolekva/pcloud/core/kg/log"
+	"github.com/giolekva/pcloud/core/kg/model"
 	"github.com/giolekva/pcloud/core/kg/store"
 	"google.golang.org/grpc"
 )
 
-const listenerPort = ":9081"
-
 // GRPCServerImpl grpc server implementation
 type GRPCServerImpl struct {
-	Log   *log.Logger
-	srv   *grpc.Server
-	store store.Store
+	Log    *log.Logger
+	srv    *grpc.Server
+	config *model.Config
+	store  store.Store
 }
 
 var _ Server = &GRPCServerImpl{}
 
 // NewGRPCServer creates new GRPC Server
-func NewGRPCServer(logger *log.Logger) Server {
+func NewGRPCServer(logger *log.Logger, config *model.Config, store store.Store) Server {
 	a := &GRPCServerImpl{
-		Log: logger,
+		Log:    logger,
+		config: config,
+		store:  store,
 	}
 
 	pwd, _ := os.Getwd()
@@ -31,14 +34,14 @@
 	return a
 }
 
-// Start method starts an app
+// Start method starts a grpc server
 func (a *GRPCServerImpl) Start() error {
 	a.Log.Info("Starting GRPC Server...")
 
 	// settings := model.NewConfig().SqlSettings
 	// a.store = sqlstore.New(settings)
 
-	lis, err := net.Listen("tcp", listenerPort)
+	lis, err := net.Listen("tcp", fmt.Sprintf(":%d", a.config.GRPCSettings.Port))
 	if err != nil {
 		a.Log.Error("failed to listen: %v", log.Err(err))
 		return err
@@ -46,17 +49,18 @@
 
 	a.srv = grpc.NewServer()
 
-	a.Log.Info("GRPC Server is listening on", log.String("port", listenerPort))
+	a.Log.Info("GRPC Server is listening on", log.Int("port", a.config.GRPCSettings.Port))
 	if err := a.srv.Serve(lis); err != nil {
-		a.Log.Error("failed to serve: %v", log.Err(err))
+		a.Log.Error("failed to serve rpc: %v", log.Err(err))
 		return err
 	}
 	return nil
 }
 
-// Shutdown method shuts server down
+// Shutdown method shuts grpc server down
 func (a *GRPCServerImpl) Shutdown() error {
 	a.Log.Info("Stopping GRPC Server...")
 	a.srv.GracefulStop()
+	a.Log.Info("GRPC Server stopped")
 	return nil
 }
diff --git a/core/kg/server/http_server.go b/core/kg/server/http_server.go
new file mode 100644
index 0000000..e4a7688
--- /dev/null
+++ b/core/kg/server/http_server.go
@@ -0,0 +1,79 @@
+package server
+
+import (
+	"context"
+	"errors"
+	"fmt"
+	"net/http"
+	"os"
+	"time"
+
+	"github.com/giolekva/pcloud/core/kg/log"
+	"github.com/giolekva/pcloud/core/kg/model"
+	"github.com/giolekva/pcloud/core/kg/store"
+	"github.com/gorilla/mux"
+)
+
+// HTTPServerImpl http server implementation
+type HTTPServerImpl struct {
+	Log    *log.Logger
+	srv    *http.Server
+	root   *mux.Router
+	config *model.Config
+	store  store.Store
+}
+
+var _ Server = &HTTPServerImpl{}
+
+// NewHTTPServer creates new HTTP Server
+func NewHTTPServer(logger *log.Logger, config *model.Config, store store.Store) Server {
+	a := &HTTPServerImpl{
+		Log:    logger,
+		root:   mux.NewRouter(),
+		config: config,
+		store:  store,
+	}
+
+	pwd, _ := os.Getwd()
+	a.Log.Info("HTTP server current working", log.String("directory", pwd))
+	return a
+}
+
+// Start method starts a http server
+func (a *HTTPServerImpl) Start() error {
+	a.Log.Info("Starting HTTP Server...")
+
+	a.srv = &http.Server{
+		Addr:         fmt.Sprintf("%s:%d", a.config.HTTPSettings.Host, a.config.HTTPSettings.Port),
+		Handler:      a.root,
+		ReadTimeout:  time.Duration(a.config.HTTPSettings.ReadTimeout) * time.Second,
+		WriteTimeout: time.Duration(a.config.HTTPSettings.WriteTimeout) * time.Second,
+		IdleTimeout:  time.Duration(a.config.HTTPSettings.IdleTimeout) * time.Second,
+	}
+
+	a.Log.Info("HTTP Server is listening on", log.Int("port", a.config.HTTPSettings.Port))
+	if err := a.srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
+		a.Log.Error("failed to listen and serve: %v", log.Err(err))
+		return err
+	}
+	return nil
+}
+
+// Shutdown method shuts http server down
+func (a *HTTPServerImpl) Shutdown() error {
+	a.Log.Info("Stopping HTTP Server...")
+	if a.srv == nil {
+		return errors.New("no http server present")
+	}
+
+	ctx, cancel := context.WithTimeout(context.Background(), time.Second)
+	defer cancel()
+	if err := a.srv.Shutdown(ctx); err != nil {
+		a.Log.Error("Unable to shutdown server", log.Err(err))
+	}
+
+	// a.srv.Close()
+	// a.srv = nil
+	a.Log.Info("HTTP Server stopped")
+	return nil
+}