예제 #1
0
        public IDtoOutObjects All(DtoInLogout dtoInLogout)
        {
            DtoOutError error = new DtoOutError();

            if (TokenTools.Authentication(dtoInLogout.Token, dtoInLogout.DeviceName))
            {
                List <User>       users  = _usersRepostiory.FindBy(x => x.IsDeleted == false).ToList();
                var               config = new MapperConfiguration(cfg => { cfg.CreateMap <User, DtoOutUser>(); });
                IMapper           mapper = config.CreateMapper();
                List <DtoOutUser> list   = new List <DtoOutUser>();
                foreach (User item in users)
                {
                    DtoOutUser dtoOutUser = new DtoOutUser();
                    mapper.Map(item, dtoOutUser);
                    list.Add(dtoOutUser);
                }

                DtoOutAllUsers dtoOutAllUsers = new DtoOutAllUsers();
                dtoOutAllUsers.dtoOutUsers = list;
                return(dtoOutAllUsers);
            }
            else
            {
                NotAuthenticatedException ex = new NotAuthenticatedException();
                error.Exception = ex;
                return(error);
            }
        }
예제 #2
0
        public IDtoOutObjects Delete(DtoInAddFriend dtoInFriend)
        {
            DtoOutError error = new DtoOutError();

            if (TokenTools.Authentication(dtoInFriend.Token, dtoInFriend.DeviceName))
            {
                User   user   = TokenTools.getUserFromToken(dtoInFriend.Token);
                Friend friend = _friendsRepository.FindBy(x => x.IdReciever == user.Id && x.IsDeleted == false && x.ObjectApplicant.Email == dtoInFriend.EmailReciever ||
                                                          x.ObjectReciever.Email == dtoInFriend.EmailReciever && x.IsDeleted == false && x.IdApplicant == user.Id).FirstOrDefault();
                if (friend == null)
                {
                    UserIsNotYourFriendException ex = new UserIsNotYourFriendException();
                    error.Exception = ex;
                    return(error);
                }
                friend.IsDeleted = true;
                _friendsRepository.Edit(friend);
                _friendsRepository.Save();
                var          config       = new MapperConfiguration(cfg => { cfg.CreateMap <Friend, DtoOutFriend>(); });
                IMapper      mapper       = config.CreateMapper();
                DtoOutFriend dtoOutFriend = new DtoOutFriend();
                mapper.Map(friend, dtoOutFriend);
                return(dtoOutFriend);
            }
            else
            {
                NotAuthenticatedException ex = new NotAuthenticatedException();
                error.Exception = ex;
                return(error);
            }
        }
예제 #3
0
        public IDtoOutObjects EditUser(DtoInEditUser dtoInEditUser)
        {
            DtoOutError error = new DtoOutError();

            if (TokenTools.Authentication(dtoInEditUser.Token, dtoInEditUser.DeviceName))
            {
                User user = TokenTools.getUserFromToken(dtoInEditUser.Token);
                user.BornDate = new DateTime(dtoInEditUser.Year, dtoInEditUser.Month, dtoInEditUser.Day);
                var     configIn = new MapperConfiguration(cfg => { cfg.CreateMap <DtoInEditUser, User>(); });
                IMapper mapperIn = configIn.CreateMapper();
                mapperIn.Map(dtoInEditUser, user);
                _usersRepostiory.Edit(user);
                _usersRepostiory.Save();
                var        config     = new MapperConfiguration(cfg => { cfg.CreateMap <User, DtoOutUser>(); });
                IMapper    mapper     = config.CreateMapper();
                DtoOutUser dtoOutUser = new DtoOutUser();
                mapper.Map(user, dtoOutUser);
                return(dtoOutUser);
            }
            else
            {
                NotAuthenticatedException ex = new NotAuthenticatedException();
                error.Exception = ex;
                return(error);
            }
        }
예제 #4
0
        public IDtoOutObjects GetAllMessages(DtoInLogout dtoInLogout)
        {
            DtoOutError error = new DtoOutError();

            if (TokenTools.Authentication(dtoInLogout.Token, dtoInLogout.DeviceName))
            {
                try
                {
                    List <DtoOutMessageDetails> list   = MessageTools.getMessageDetailsFromMessagesList(TokenTools.getUserFromToken(dtoInLogout.Token).Id);
                    DtoOutAllMessages           result = new DtoOutAllMessages();
                    result.dtoOutMessageDetails = list;
                    return(result);
                }
                catch (Exception ex)
                {
                    error.Exception = ex;
                    return(error);
                }
            }
            else
            {
                NotAuthenticatedException ex = new NotAuthenticatedException();
                error.Exception = ex;
                return(error);
            }
        }
예제 #5
0
        /**
         * 토큰열을 분석하여 접미형 단항 연산 구문 요소를 추출한다.
         *
         * @param	tokens
         * @param	lineNumber
         * @return
         */
        public static SuffixSyntax analyze(List <Token> tokens, int lineNumber)
        {
            int indexOfLpo = TokenTools.indexOfLpo(tokens);

            int depth = 0;

            foreach (int i in Enumerable.Range(0, tokens.Count))
            {
                if (tokens[i].type == Type.ShellOpen)
                {
                    depth++;
                }
                else if (tokens[i].type == Type.ShellClose)
                {
                    depth--;
                }
            }

            // 껍데기가 온전히 닫혀 있는지 검사한다.
            if (depth > 0)
            {
                Debug.reportError("Syntax error", "insert \")\" to complete Expression", lineNumber);
                return(null);
            }

            if (depth < 0)
            {
                Debug.reportError("Syntax error", "delete \"(\"", lineNumber);
                return(null);
            }

            return(new SuffixSyntax(tokens[indexOfLpo], tokens.GetRange(0, indexOfLpo)));
        }
예제 #6
0
        /**
         * 토큰열을 분석하여 배열 구문 요소를 추출한다.
         *
         * @param	tokens
         * @param	lineNumber
         * @return
         */
        public static ArraySyntax analyze(List <Token> tokens, int lineNumber)
        {
            List <List <Token> > elements = TokenTools.getArguments(tokens.GetRange(1, tokens.Count - 1 - 1));

            ArraySyntax syntax = new ArraySyntax(elements);

            return(syntax);
        }
예제 #7
0
        public static void GetValue(string baseUrl, string authTokenFilePath, AuthenticationHeaderValue ahv)
        {
            try
            {
                string     authToken = TokenTools.GetAuthToken(authTokenFilePath);
                HttpClient client    = new HttpClient();
                client.DefaultRequestHeaders.Authorization = ahv;
                client.BaseAddress = new Uri(baseUrl);
                client.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/vnd.github.v3+json"));
                client.DefaultRequestHeaders.Add("AuthToken", authToken);


                HttpResponseMessage response =
                    client.GetAsync("api/values/1").Result;
                string result     = response.Content.ReadAsStringAsync().Result;
                var    statusCode = response.StatusCode;
                if (statusCode == HttpStatusCode.OK)
                {
                    if (response.IsSuccessStatusCode)
                    {
                        // print results
                        Console.WriteLine($"city: {result}");
                    }
                    else
                    {
                        // error
                        Console.WriteLine($"status code:{statusCode}");
                    }
                }
                else
                {
                    Console.WriteLine($"The Web Service {statusCode}");
                    return;
                }
            }
            catch (ApplicationException ex)
            {
                Console.WriteLine("ApplicationException");
                Console.WriteLine(ex);
            }
            catch (UnsupportedMediaTypeException ex)
            {
                Console.WriteLine("UnsupportedMediaType");
                Console.WriteLine(ex);
            }
            catch (HttpRequestException ex)
            {
                Console.WriteLine("HttpRequestException");
                Console.WriteLine(ex);
            }
            catch (AggregateException ex)
            {
                Console.WriteLine("AggregateException");
                Console.WriteLine(ex);
            }
        }
예제 #8
0
 /**
  * 토큰열이 배열 구문 패턴과 일치하는지 확인한다.
  *
  * @param	tokens
  * @return
  */
 public static bool match(List <Token> tokens)
 {
     if (tokens[0].type == Type.ArrayOpen)
     {
         if (TokenTools.indexOfArrayClose(tokens) == tokens.Count - 1)
         {
             return(true);
         }
     }
     return(false);
 }
예제 #9
0
        /**
         * 토큰열을 분석하여 For 문 구문 요소를 추출한다.
         *
         * @param	tokens
         * @param	lineNumber
         * @return
         */
        public static ForSyntax analyze(List <Token> tokens, int lineNumber)
        {
            if (tokens.Count < 7)
            {
                Debug.reportError("Syntax error", "For syntax is not valid", lineNumber);
                return(null);
            }

            // 괄호로 시작하는지 확인한다
            if (tokens[1].type != Type.ShellOpen)
            {
                Debug.reportError("Syntax error", "For condition must start with \"(\"", lineNumber);
                return(null);
            }

            // 괄호로 끝나는지 확인한다.
            if (tokens[tokens.Count - 1].type != Type.ShellClose)
            {
                Debug.reportError("Syntax error", "insert \")\" to complete Expression", lineNumber);
                return(null);
            }

            if (tokens[2].type != Type.ID)
            {
                Debug.reportError("Syntax error", "Counter variable is not valid", lineNumber);
                return(null);
            }

            if (tokens[3].type != Type.In)
            {
                Debug.reportError("Syntax error", "Could not find token 'in'", lineNumber);
                return(null);
            }

            // 증감 범위를 자른다.
            List <Token> range = tokens.GetRange(4, tokens.Count - 1 - 4);

            // 범위지정 토큰의 위치를 찾는다.
            int indexOfRange = TokenTools.indexOf(range, Type.From);

            if (indexOfRange < 0)
            {
                Debug.reportError("Syntax error", "Could not find token '...'", lineNumber);
                return(null);
            }

            // 범위지정 토큰을 기준으로 분할한다.
            List <Token> start = range.GetRange(0, indexOfRange);
            List <Token> end   = range.GetRange(indexOfRange + 1, range.Count - (indexOfRange + 1));

            return(new ForSyntax(tokens[2], start, end));
        }
예제 #10
0
        public Message(DtoInMessage dtoInMessage)
        {
            this.Text       = dtoInMessage.Text;
            this.File       = dtoInMessage.File;
            this.SendTime   = System.DateTime.Now;
            this.ObjectUser = TokenTools.getUserFromToken(dtoInMessage.Token);
            ChatRoomsRepository chatRoomsRepository = new ChatRoomsRepository();

            this.ObjectChatRoom = chatRoomsRepository.FindBy(x => x.Id == dtoInMessage.ChatRoomId && x.IsDeleted == false).FirstOrDefault();
            if (ObjectChatRoom == null)
            {
                throw new ObjectIsNotValidException("chatroom");
            }
        }
예제 #11
0
        /**
         * 토큰열을 분석하여 속성 선택문 구문 요소를 추출한다.
         *
         * @param	tokens
         * @param	lineNumber
         * @return
         */
        public static AttributeSyntax analyze(List <Token> tokens, int lineNumber)
        {
            List <List <Token> > attributes = TokenTools.split(tokens, Type.Dot, true);

            foreach (int i in Enumerable.Range(0, attributes.Count))
            {
                if (attributes[i].Count < 1)
                {
                    Debug.reportError("Syntax error 333", "속성이 비었습니다.", lineNumber);
                    return(null);
                }
            }

            return(new AttributeSyntax(attributes));
        }
        public static string RefreshAuthToken(string baseUrl, AuthenticationHeaderValue ahv, string authTokenFilePath)
        {
            string curAuthToken = TokenTools.GetAuthToken(authTokenFilePath);

            var fs = new FileStream(authTokenFilePath, FileMode.Open);

            if (!fs.CanWrite)
            {
                throw new ApplicationException("The AuthToken file <" + authTokenFilePath + "> is not writable");
            }
            fs.Close();
            var client = new HttpClient();

            client.DefaultRequestHeaders.Authorization = ahv;
            client.BaseAddress = new Uri(baseUrl);
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.github.v3+json"));
            client.DefaultRequestHeaders.Add("AuthToken", curAuthToken);
            try
            {
                HttpResponseMessage response = client.PostAsync("services/NWMSApiKeyRefreshService", null).Result;
                string result            = response.Content.ReadAsStringAsync().Result;
                TokenRefreshResponse res = new TokenRefreshResponse();
                res = Newtonsoft.Json.JsonConvert.DeserializeObject <TokenRefreshResponse>(result);
                if (response.IsSuccessStatusCode)
                {
                    StreamWriter authFile = new StreamWriter(authTokenFilePath);
                    authFile.Write(res.token);
                    authFile.Close();
                    return(res.token);
                }
                else
                {
                    throw new ApplicationException("An error occured when refreshing AuthToken");
                }
            }
            catch (UnsupportedMediaTypeException ex)
            {
                Console.WriteLine("UnsupportedMediaType");
                Console.WriteLine(ex);
                throw new ApplicationException("An error occured when refreshing AuthToken");
            }
            catch (HttpRequestException ex)
            {
                Console.WriteLine("HttpRequestException");
                Console.WriteLine(ex);
                throw new ApplicationException("An error occured when refreshing AuthToken");
            }
        }
예제 #13
0
        /**
         * 토큰열이 캐스팅 구문 패턴과 일치하는지 확인한다.
         *
         * @param	tokens
         * @return
         */
        public static bool match(List <Token> tokens)
        {
            int indexOfLPO = TokenTools.indexOfLpo(tokens);

            if (indexOfLPO < 0)
            {
                return(false);
            }

            if (tokens[indexOfLPO].type != Type.As)
            {
                return(false);
            }

            return(true);
        }
예제 #14
0
        /**
         * 토큰열을 분석하여 캐스팅 구문 요소를 추출한다.
         *
         * @param	tokens
         * @param	lineNumber
         * @return
         */
        public static CastingSyntax analyze(List <Token> tokens, int lineNumber)
        {
            int indexOfLpo = TokenTools.indexOfLpo(tokens);

            // 캐스팅 대상이 없다면
            if (tokens.Count <= indexOfLpo + 1)
            {
                Debug.reportError("Syntax error", "Cannot find casting target.", lineNumber);
                return(null);
            }

            List <Token> target      = tokens.GetRange(0, indexOfLpo);
            string       castingType = tokens[indexOfLpo + 1].value;

            return(new CastingSyntax(target, castingType));
        }
예제 #15
0
        /**
         * 토큰열이 이항 연산자 구문 패턴과 일치하는지 확인한다.
         *
         * @param	tokens
         * @return
         */
        public static bool match(List <Token> tokens)
        {
            int indexOfLPO = TokenTools.indexOfLpo(tokens);

            if (indexOfLPO < 0)
            {
                return(false);
            }

            if (!tokens[indexOfLPO].isPrefix() && !tokens[indexOfLPO].isSuffix())
            {
                return(true);
            }

            return(false);
        }
예제 #16
0
        /**
         * 토큰열이 속성 선택문 구문 패턴과 일치하는지 확인한다.
         *
         * @param	tokens
         * @return
         */
        public static bool match(List <Token> tokens)
        {
            int indexOfLpo = TokenTools.indexOfLpo(tokens);

            if (indexOfLpo < 0)
            {
                return(false);
            }

            // 도트가 가장 최하위 연산자이면, 즉 도트를 제외하고 다른 연산자가 없을 때
            if (tokens[indexOfLpo].type == Type.Dot)
            {
                return(true);
            }

            return(false);
        }
예제 #17
0
        public IDtoOutObjects CreateUser(DtoInUser dtoInUser)
        {
            string  deviceName = dtoInUser.DeviceName;
            User    user       = new User();
            var     configIn   = new MapperConfiguration(cfg => { cfg.CreateMap <DtoInUser, User>(); });
            IMapper mapperIn   = configIn.CreateMapper();

            mapperIn.Map(dtoInUser, user);
            user.BornDate = new DateTime(dtoInUser.Year, dtoInUser.Month, dtoInUser.Day);
            try
            {
                if (!UserExists(user))
                {
                    Credential c = new Credential(user.Email, Guid.NewGuid().ToString(), user);

                    Credential credential = credentialsRepository.Add(c);
                    credentialsRepository.Save();
                    User u = _usersRepostiory.FindBy(x => x.Id == user.Id && x.IsDeleted == false).FirstOrDefault();
                    #region createMapperUser
                    var     config = new MapperConfiguration(cfg => { cfg.CreateMap <User, DtoOutUser>(); });
                    IMapper mapper = config.CreateMapper();
                    #endregion
                    DtoOutUser dtoOutUser = new DtoOutUser();
                    mapper.Map(u, dtoOutUser);

                    dtoOutUser.TokenString = TokenTools.CreateToken(u, deviceName).TokenString;
                    return(dtoOutUser);
                }
                else
                {
                    DtoOutError error = new DtoOutError();
                    error.Exception = new DuplicateObjectInDatabaseException("User");
                    error.Message   = "This user is already created";
                    return(error);
                }
            }
            catch (Exception ex)
            {
                DtoOutError error = new DtoOutError();
                error.Exception = ex;
                error.Message   = ex.Message;
                return(error);
            }
        }
예제 #18
0
        public IDtoOutObjects GetById(DtoInGetById dtoInGetById)
        {
            DtoOutError error = new DtoOutError();

            if (TokenTools.Authentication(dtoInGetById.Token, dtoInGetById.DeviceName))
            {
                User       user       = _usersRepostiory.FindBy(x => x.Id == dtoInGetById.Id && x.IsDeleted == false).FirstOrDefault();
                var        config     = new MapperConfiguration(cfg => { cfg.CreateMap <User, DtoOutUser>(); });
                IMapper    mapper     = config.CreateMapper();
                DtoOutUser dtoOutUser = new DtoOutUser();
                mapper.Map(user, dtoOutUser);
                return(dtoOutUser);
            }
            else
            {
                NotAuthenticatedException ex = new NotAuthenticatedException();
                error.Exception = ex;
                return(error);
            }
        }
예제 #19
0
        /**
         * 토큰열을 분석하여 이항 연산자 구문 요소를 추출한다.
         *
         * @param	tokens
         * @param	lineNumber
         * @return
         */
        public static InfixSyntax analyze(List <Token> tokens, int lineNumber)
        {
            int indexOfLpo = TokenTools.indexOfLpo(tokens);

            int depth = 0;

            foreach (int i in Enumerable.Range(0, tokens.Count))
            {
                if (tokens[i].type == Type.ShellOpen)
                {
                    depth++;
                }
                else if (tokens[i].type == Type.ShellClose)
                {
                    depth--;
                }
            }

            // 껍데기가 온전히 닫혀 있는지 검사한다.
            if (depth > 0)
            {
                Debug.reportError("Syntax error", "insert \")\" to complete Expression", lineNumber);
                return(null);
            }

            if (depth < 0)
            {
                Debug.reportError("Syntax error", "delete \"(\"", lineNumber);
                return(null);
            }

            // 연산자 취득
            Token _operator = tokens[indexOfLpo];

            // 좌항과 우항
            List <Token> left = tokens.GetRange(0, indexOfLpo);

            List <Token> right = tokens.GetRange(indexOfLpo + 1, tokens.Count - (indexOfLpo + 1));

            return(new InfixSyntax(_operator, left, right));
        }
예제 #20
0
        public IDtoOutObjects AddFriend(DtoInAddFriend dtoInFriend)

        {
            DtoOutError error = new DtoOutError();

            if (TokenTools.Authentication(dtoInFriend.Token, dtoInFriend.DeviceName))
            {
                User userApplicant = TokenTools.getUserFromToken(dtoInFriend.Token);
                User userReciever  = _usersRepository.FindBy(x => x.Email == dtoInFriend.EmailReciever && x.IsDeleted == false).FirstOrDefault();
                if (userReciever == null)
                {
                    UserWithThisEmailDoesntExistException ex = new UserWithThisEmailDoesntExistException();
                    error.Exception = ex;
                    return(error);
                }
                if (FriendTools.areAlreadyFriends(userApplicant.Id, userReciever.Id))
                {
                    YouAreAlreadyFriendsExceptions ex = new YouAreAlreadyFriendsExceptions();
                    error.Exception = ex;
                    return(error);
                }
                Friend friend = new Friend();
                friend.ObjectApplicant = userApplicant;
                friend.ObjectReciever  = userReciever;
                _friendsRepository.Add(friend);
                _friendsRepository.Save();
                var config = new MapperConfiguration(cfg => { cfg.CreateMap <Friend, DtoOutFriend>(); });

                IMapper      mapper       = config.CreateMapper();
                DtoOutFriend dtoOutFriend = new DtoOutFriend();
                mapper.Map(friend, dtoOutFriend);
                return(dtoOutFriend);
            }
            else
            {
                NotAuthenticatedException ex = new NotAuthenticatedException();
                error.Exception = ex;
                return(error);
            }
        }
예제 #21
0
        public IDtoOutObjects Accept(DtoInAddFriend dtoInFriend)
        {
            DtoOutError error = new DtoOutError();

            if (TokenTools.Authentication(dtoInFriend.Token, dtoInFriend.DeviceName))
            {
                User   acceptant = TokenTools.getUserFromToken(dtoInFriend.Token);
                Friend friend    = _friendsRepository.FindBy(x => x.IdReciever == acceptant.Id && x.IsDeleted == false && x.ObjectApplicant.Email == dtoInFriend.EmailReciever).FirstOrDefault();
                if (friend == null)
                {
                    UserDoesNotAskedForFriendshipException ex = new UserDoesNotAskedForFriendshipException();
                    error.Exception = ex;
                    return(error);
                }
                if (friend.Accepted == true)
                {
                    YouAreAlreadyFriendsExceptions ex = new YouAreAlreadyFriendsExceptions();
                    error.Exception = ex;
                    return(error);
                }
                friend.Accepted = true;
                _friendsRepository.Edit(friend);
                _friendsRepository.Save();
                ChatRoomTools.Create(new List <User>()
                {
                    acceptant, _usersRepository.FindBy(x => x.Email == dtoInFriend.EmailReciever).FirstOrDefault()
                });
                var          config       = new MapperConfiguration(cfg => { cfg.CreateMap <Friend, DtoOutFriend>(); });
                IMapper      mapper       = config.CreateMapper();
                DtoOutFriend dtoOutFriend = new DtoOutFriend();
                mapper.Map(friend, dtoOutFriend);
                return(dtoOutFriend);
            }
            else
            {
                NotAuthenticatedException ex = new NotAuthenticatedException();
                error.Exception = ex;
                return(error);
            }
        }
예제 #22
0
        public IDtoOutObjects Login(string loginName, string password, string deviceName)
        {
            Credential credential = _credentialRepository.FindBy(x => x.LoginName == loginName && x.IsDeleted == false && x.ObjectUser.IsDeleted == false).FirstOrDefault();

            if (credential != null && credential.Password == password)
            {
                Token       t           = TokenTools.CreateToken(credential.ObjectUser, deviceName);
                var         config      = new MapperConfiguration(cfg => { cfg.CreateMap <Token, DtoOutToken>(); });
                IMapper     mapper      = config.CreateMapper();
                DtoOutToken dtoOutToken = new DtoOutToken();
                mapper.Map(t, dtoOutToken);
                dtoOutToken.IdUser = TokenTools.getUserFromToken(dtoOutToken.TokenString).Id;
                return(dtoOutToken);
            }
            else
            {
                DtoOutError error = new DtoOutError();
                error.Exception = new CredentialAreNotValidException();
                error.Message   = "Credentials are not assign to account";
                return(error);
            }
        }
예제 #23
0
        public IDtoOutObjects ChangePassword(DtoInChangePassword dtoInChangePassword)
        {
            DtoOutError error = new DtoOutError();

            if (TokenTools.Authentication(dtoInChangePassword.Token, dtoInChangePassword.DeviceName))
            {
                User       user       = TokenTools.getUserFromToken(dtoInChangePassword.Token);
                Credential credential = _credentialsRepository.FindBy(x => x.IdUser == user.Id && x.IsDeleted == false && x.ObjectUser.IsDeleted == false).FirstOrDefault(); // toto zanmená že každý user může mít jen jedny credentials
                credential.Password = dtoInChangePassword.Password;
                _credentialsRepository.Edit(credential);
                _credentialsRepository.Save();
                DtoOutComplete dtoOutComplete = new DtoOutComplete();
                dtoOutComplete.Completed = true;
                return(dtoOutComplete);
            }
            else
            {
                NotAuthenticatedException ex = new NotAuthenticatedException();
                error.Exception = ex;
                return(error);
            }
        }
예제 #24
0
        public IDtoOutObjects Send(DtoInMessage dtoInMessage)
        {
            DtoOutError error = new DtoOutError();

            if (TokenTools.Authentication(dtoInMessage.Token, dtoInMessage.DeviceName))
            {
                Message message = null;
                try
                {
                    message = new Message(dtoInMessage);
                }
                catch (ObjectIsNotValidException ex)
                {
                    error.Exception = ex;
                    error.Message   = "this chatroom does not exists";
                    return(error);
                }
                if (ChatRoomTools.getListIdChatRoomFromUser(TokenTools.getUserFromToken(dtoInMessage.Token).Id).Contains(message.IdChatRoom))
                {
                    error.Exception = new MessageIsNotInYourListOfChatRooms();
                    error.Message   = "Message is not in your list of chatRooms";
                    return(error);
                }
                Message result = _messagesRepository.Add(message);
                _messagesRepository.Save();
                var           config        = new MapperConfiguration(cfg => { cfg.CreateMap <Message, DtoOutMessage>(); });
                IMapper       mapper        = config.CreateMapper();
                DtoOutMessage dtoOutMessage = new DtoOutMessage();
                mapper.Map(result, dtoOutMessage);
                return(dtoOutMessage);
            }
            else
            {
                NotAuthenticatedException ex = new NotAuthenticatedException();
                error.Exception = ex;
                return(error);
            }
        }
예제 #25
0
        public IDtoOutObjects Seen(DtoInSeenMessage dtoInSeenMessage)
        {
            DtoOutError error = new DtoOutError();

            if (TokenTools.Authentication(dtoInSeenMessage.Token, dtoInSeenMessage.DeviceName))
            {
                SeenMessage seenMessage = new SeenMessage();
                seenMessage.SeenTime = System.DateTime.Now;
                Message message = _messagesRepository.FindBy(x => x.Id == dtoInSeenMessage.IdMessage && x.IsDeleted == false).FirstOrDefault();
                if (message == null)
                {
                    error.Exception = new MessageWithThisIdDoesNotExistsException();
                    error.Message   = "Message with this id {" + dtoInSeenMessage.IdMessage + "} does not exists";
                    return(error);
                }
                if (!ChatRoomTools.getListIdChatRoomFromUser(TokenTools.getUserFromToken(dtoInSeenMessage.Token).Id).Contains(message.IdChatRoom))
                {
                    error.Exception = new MessageIsNotInYourListOfChatRooms();
                    error.Message   = "Message is not in your list of chatRooms";
                    return(error);
                }
                seenMessage.IdMessage = dtoInSeenMessage.IdMessage;
                seenMessage.IdUser    = TokenTools.getUserFromToken(dtoInSeenMessage.Token).Id;
                SeenMessage result = _seenMessagesRepository.Add(seenMessage);

                var               config            = new MapperConfiguration(cfg => { cfg.CreateMap <SeenMessage, DtoOutSeenMessage>(); });
                IMapper           mapper            = config.CreateMapper();
                DtoOutSeenMessage dtoOutSeenMessage = new DtoOutSeenMessage();
                mapper.Map(result, dtoOutSeenMessage);
                return(dtoOutSeenMessage);
            }
            else
            {
                NotAuthenticatedException ex = new NotAuthenticatedException();
                error.Exception = ex;
                return(error);
            }
        }
예제 #26
0
        public IDtoOutObjects DeleteUser(DtoInLogout dtoInLogout)
        {
            DtoOutError error = new DtoOutError();

            if (TokenTools.Authentication(dtoInLogout.Token, dtoInLogout.DeviceName))
            {
                User user = TokenTools.getUserFromToken(dtoInLogout.Token);
                user.IsDeleted = true;
                _usersRepostiory.Edit(user);
                _usersRepostiory.Save();
                var        config     = new MapperConfiguration(cfg => { cfg.CreateMap <User, DtoOutUser>(); });
                IMapper    mapper     = config.CreateMapper();
                DtoOutUser dtoOutUser = new DtoOutUser();
                mapper.Map(user, dtoOutUser);
                return(dtoOutUser);
            }
            else
            {
                NotAuthenticatedException ex = new NotAuthenticatedException();
                error.Exception = ex;
                return(error);
            }
        }
예제 #27
0
        public IDtoOutObjects Logout(DtoInLogout dtoInLogout)
        {
            DtoOutError error = new DtoOutError();

            if (TokenTools.Authentication(dtoInLogout.Token, dtoInLogout.DeviceName))
            {
                Token token = TokenTools.getTokenObjectFromString(dtoInLogout.Token);
                token.IsDeleted = true;
                tokensRepository.Edit(token);
                tokensRepository.Save();
                var         config      = new MapperConfiguration(cfg => { cfg.CreateMap <Token, DtoOutToken>(); });
                IMapper     mapper      = config.CreateMapper();
                DtoOutToken dtoOutToken = new DtoOutToken();
                mapper.Map(token, dtoOutToken);
                return(dtoOutToken);
            }
            else
            {
                NotAuthenticatedException ex = new NotAuthenticatedException();
                error.Exception = ex;
                return(error);
            }
        }
예제 #28
0
        /**
         * 토큰열이 함수 호출 구문 패턴과 일치하는지 확인한다.
         *
         * @param	tokens
         * @return
         */
        public static bool match(List <Token> tokens)
        {
            int indexOfLpo = TokenTools.indexOfLpo(tokens);

            // 어떠한 유효 연산자라도 있을 경우 함수 호출이 아님
            if (indexOfLpo >= 0)
            {
                return(false);
            }

            // 최소 길이 조건 확인
            if (tokens.Count < 3)
            {
                return(false);
            }

            // 첫 토큰이 ID이고 두 번째 토큰이 ShellOpen이면 조건 만족
            if (tokens[0].type != Type.ID || tokens[1].type != Type.ShellOpen)
            {
                return(false);
            }

            return(true);
        }
예제 #29
0
        /**
         * 토큰열을 분석하여 함수 호출 구문 요소를 추출한다.
         *
         * @param	tokens
         * @param	lineNumber
         * @return
         */
        public static FunctionCallSyntax analyze(List <Token> tokens, int lineNumber)
        {
            // 함수가 완전히 닫혔는지 확인
            if (TokenTools.indexOfShellClose(tokens, 2) != tokens.Count - 1)
            {
                Debug.reportError("Syntax error", "함수가 종결되지 않았습니다.", lineNumber);
                return(null);
            }

            // 함수 매개 변수를 가져온다.
            List <List <Token> > arguments        = TokenTools.split(tokens.GetRange(2, tokens.Count - 1 - 2), Type.Comma, true);
            List <List <Token> > trimmedArguments = new List <List <Token> >();

            foreach (int i in Enumerable.Range(0, arguments.Count))
            {
                if (arguments[i].Count > 0)
                {
                    trimmedArguments.Add(arguments[i]);
                }
            }


            return(new FunctionCallSyntax(tokens[0], trimmedArguments));
        }
예제 #30
0
        public static void Public_NWM_SReceiptPermanent(string baseUrl, AuthenticationHeaderValue ahv,
                                                        string authTokenFilePath, InputParams inputParams)
        {
            try
            {
                string     authToken = TokenTools.GetAuthToken(authTokenFilePath);
                HttpClient client    = new HttpClient();
                client.DefaultRequestHeaders.Authorization = ahv;
                client.BaseAddress = new Uri(baseUrl);
                client.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/vnd.github.v3+json"));
                client.DefaultRequestHeaders.Add("AuthToken", authToken);


                HttpResponseMessage response =
                    client.PostAsJsonAsync("services/PublicNWMSReceiptPermanent", inputParams).Result;
                string result     = response.Content.ReadAsStringAsync().Result;
                var    statusCode = response.StatusCode;
                if (statusCode == HttpStatusCode.OK)
                {
                    OutputParams output        = JsonConvert.DeserializeObject <OutputParams>(result);
                    string       error_code    = output.error_code;
                    string       error_message = output.error_message;
                    output = response.Content.ReadAsAsync <OutputParams>().Result;

                    if (response.IsSuccessStatusCode)
                    {
                        // print results
                        Console.WriteLine($"city: {output.city}");
                        Console.WriteLine($"province: {output.province}");
                        Console.WriteLine($"township: {output.township}");
                        Console.WriteLine($"contractor_name: {output.contractor_name}");
                        Console.WriteLine($"contractor_national_id: {output.contractor_national_id}");
                        Console.WriteLine($"create_date: {output.create_date}");
                        Console.WriteLine($"creator: {output.creator}");
                        Console.WriteLine($"warehouse_id: {output.warehouse_id}");
                        Console.WriteLine($"id: {output.id}");
                        Console.WriteLine($"owner_name: {output.owner_name}");
                        Console.WriteLine($"postal_code: {output.postal_code}");
                        Console.WriteLine($"receipt items:");
                        output.receipt_items.ForEach(delegate(ReceiptItemResponse rcp_item_resp)
                        {
                            Console.WriteLine($"\tid: {rcp_item_resp.id}");
                            Console.WriteLine($"\tgood_id: {rcp_item_resp.good_id}");
                            Console.WriteLine($"\tgood_desc: {rcp_item_resp.good_desc}");
                            Console.WriteLine("");
                        });
                    }
                    else
                    {
                        // error
                        Console.WriteLine($"status code:{statusCode}");

                        Console.WriteLine($"error_code: {output.error_code}");
                        Console.WriteLine($"error_message: {output.error_message}");
                        Console.WriteLine($"failed_condition: {output.failed_condition}");
                        Console.WriteLine($"failed_item: {output.failed_item}");
                        Console.WriteLine($"error_detail: {output.error_detail}");
                    }
                }
                else
                {
                    Console.WriteLine($"The Web Service {statusCode}");
                    return;
                }
            }
            catch (ApplicationException ex)
            {
                Console.WriteLine("ApplicationException");
                Console.WriteLine(ex);
            }
            catch (UnsupportedMediaTypeException ex)
            {
                Console.WriteLine("UnsupportedMediaType");
                Console.WriteLine(ex);
            }
            catch (HttpRequestException ex)
            {
                Console.WriteLine("HttpRequestException");
                Console.WriteLine(ex);
            }
            catch (AggregateException ex)
            {
                Console.WriteLine("AggregateException");
                Console.WriteLine(ex);
            }
        }