public HttpResponseMessage Create(CPlaylistInfo playlistInfo)
        {
            HttpResponseMessage response;

            try
            {
                CPlaylist newPlaylist = new CPlaylist(playlistInfo);
                Int32     created     = _playlistContext.Create(newPlaylist);
                if (created < 1)
                {
                    response = Request.CreateResponse(HttpStatusCode.BadRequest, "Couldn't create playlist");
                }
                else
                {
                    response = Request.CreateResponse(HttpStatusCode.OK, $"Created playlist {playlistInfo.Name}!");
                }

                return(response);
            }
            catch (ContextException e)
            {
                HttpContext.Current.Response.StatusCode = (Int32)HttpStatusCode.BadRequest;
                throw new ContextException(e.Message, e);
            }
        }
Beispiel #2
0
        public HttpResponseMessage Register(CUserInfo userInfo)
        {
            HttpResponseMessage response;

            if (userInfo == null)
            {
                response = Request.CreateResponse(HttpStatusCode.BadRequest, "User has no data to register!");
                return(response);
            }

            try
            {
                // check if such user already exists in context
                CUser checkCUser = _userContext.GetByName(userInfo.Name);

                if (checkCUser.Name != null)
                {
                    response = Request.CreateResponse(HttpStatusCode.BadRequest, "Such user already exists!");
                    return(response);
                }


                // check if such email is already taken by someone else
                CUser checkEmail = _userContext.GetByName(userInfo.Email);
                if (checkEmail.Email != null)
                {
                    response = Request.CreateResponse(HttpStatusCode.BadRequest, "Such email is already taken!");
                    return(response);
                }

                // in CUser CTOR new Guid and passwordHash is generated from given password
                CUser newUser = new CUser(Guid.NewGuid(), userInfo.Name, userInfo.Password, userInfo.Email);

                // Insert new user in DB
                Int32 rowsInserted = _userContext.Create(newUser);

                // Create 'default' playlist for user files
                CPlaylist defaultPlaylist = new CPlaylist(Guid.NewGuid(), "default", newUser.Guid, false);
                _playlistContext.Create(defaultPlaylist);

                // Create new folder for user files
                DirectoryInfo directoryInfo = new DirectoryInfo(System.Web.Hosting.HostingEnvironment.MapPath($@"~/App_Data"));
                if (!Directory.Exists(directoryInfo.ToString() + "\\UserFiles"))
                {
                    Directory.CreateDirectory(directoryInfo.ToString() + "\\UserFiles");
                }
                // create directory for user files
                string fullPath = System.Web.Hosting.HostingEnvironment.MapPath($@"~/App_Data/UserFiles/{newUser.Name}");
                Directory.CreateDirectory(fullPath);

                // create directory for thumbnails of the videos
                string thumbnailsPath = System.Web.Hosting.HostingEnvironment.MapPath($@"~/App_Data/UserFiles/{newUser.Name}/Thumbnails");
                Directory.CreateDirectory(thumbnailsPath);

                userInfo = newUser.ToCUserInfo();
                response = Request.CreateResponse(HttpStatusCode.OK, userInfo);

                return(response);
            }
            catch (Exception e)
            {
                //todo: log
                HttpContext.Current.Response.StatusCode = (Int32)HttpStatusCode.BadRequest;
                throw new ContextException(e.Message, e);
            }
        }