示例#1
0
        public string Generate(int id)
        {
            var user = _users.GetWithKeys(id);

            if (user is null)
            {
                throw new ApiException(HttpStatusCode.NotFound, "User not found.");
            }

            var rand = new Random();
            var hash = new string(Enumerable.Repeat(_alphabet, _size)
                                  .Select(s => s[rand.Next(s.Length)])
                                  .ToArray());

            var controlToken = new ControlToken
            {
                Token              = hash,
                SolicitationDate   = DateTime.Now,
                AuthenticationDate = null,
                Client             = user.Name,
            };

            _uow.Begin();
            controlToken = _uow.ControlToken.Insert(controlToken);
            _uow.Commit();

            return(hash);
        }
示例#2
0
            public static bool Create(out ControlToken token, string source, ref int index)
            {
                char operate;
                int parameter = 0;

                token = null;

                Match m = ControlToken.tokenizer.Match(source, index);

                if (!m.Success ||
                    m.Groups[2].Success && !int.TryParse(m.Groups[2].Value, out parameter))
                    return false;

                operate = m.Groups[1].Value[0];

                token = new ControlToken(operate, parameter);
                index += m.Length - 1;

                return true;
            }
示例#3
0
        private bool Parse(string text)
        {
            ControlToken ctoken;
            for (int i = 0, j = text.Length; i < j; i++)
            {
                if (text[i] == '\\')
                {
                    if (!ControlToken.Create(out ctoken, text, ref i))
                        return false;

                    this.tokenQueue.Enqueue(ctoken);
                }
                else
                {
                    this.tokenQueue.Enqueue(text[i]);
                }
            }

            return true;
        }
示例#4
0
        public void Lexer_Tokenize_SimpleQuery_ReturnsExpectedTokens()
        {
            var qualifiedQuery = @"mutation {
                                  createHero(  name: ""John"", age: 23  ) {
                                    name
                                    # Queries can have comments!
                                    friends {
                                      name
                                    }
                                  }
                                }";

            var source   = new SourceText(qualifiedQuery.AsMemory());
            var tokenSet = Lexer.Tokenize(source);

            // first two tokens should be control parens
            HelperAsserts.AssertTokenChain(
                tokenSet,
                new NameToken("mutation".AsMemory(), SourceLocation.None),
                ControlToken.FromType(TokenType.CurlyBraceLeft, SourceLocation.None),
                new NameToken("createHero".AsMemory(), SourceLocation.None),
                ControlToken.FromType(TokenType.ParenLeft, SourceLocation.None),
                new NameToken("name".AsMemory(), SourceLocation.None),
                ControlToken.FromType(TokenType.Colon, SourceLocation.None),
                new StringToken("\"John\"".AsMemory(), SourceLocation.None),
                ControlToken.FromType(TokenType.Comma, SourceLocation.None),
                new NameToken("age".AsMemory(), SourceLocation.None),
                ControlToken.FromType(TokenType.Colon, SourceLocation.None),
                NumberToken.FromSourceText("23".AsMemory(), SourceLocation.None),
                ControlToken.FromType(TokenType.ParenRight, SourceLocation.None),
                ControlToken.FromType(TokenType.CurlyBraceLeft, SourceLocation.None),
                new NameToken("name".AsMemory(), SourceLocation.None),
                new CommentToken("# Queries can have comments!".AsMemory(), SourceLocation.None),
                new NameToken("friends".AsMemory(), SourceLocation.None),
                ControlToken.FromType(TokenType.CurlyBraceLeft, SourceLocation.None),
                new NameToken("name".AsMemory(), SourceLocation.None),
                ControlToken.FromType(TokenType.CurlyBraceRight, SourceLocation.None),
                ControlToken.FromType(TokenType.CurlyBraceRight, SourceLocation.None),
                ControlToken.FromType(TokenType.CurlyBraceRight, SourceLocation.None),
                EndOfFileToken.Instance);
        }
示例#5
0
        private void Control(ControlToken token, ref int i)
        {
            switch (token.Operate)
            {
                case '\\':
                    this.updated = true;
                    SizeF charSize = this.renderer.DrawChars("\\", this.charPosition);
                    charSize.Height = 0.0f;
                    this.charPosition = PointF.Add(this.charPosition, charSize);
                    break;

                case 'c':
                    if (this.renderer.Options.Brushes.Length <= token.Parameter)
                        Trace.TraceWarning("Out of brush index: {0}", token.Parameter);
                    else
                        this.renderer.BrushIndex = token.Parameter;

                    break;

                default:
                    break;
            }
        }
示例#6
0
            public static bool Create(out ControlToken token, string source, ref int index)
            {
                char operate;
                int parameter = 0;

                token = null;

                Match m = ControlToken.tokenizer.Match(source, index);

                if (!m.Success ||
                    m.Groups[2].Success && !int.TryParse(m.Groups[2].Value, out parameter))
                    return false;

                operate = m.Groups[1].Value[0];

                token = new ControlToken(operate, parameter);
                index += m.Length - 1;

                return true;
            }
示例#7
0
        private void Control(ControlToken token, ref int i)
        {
            switch (token.Operate)
            {
                case '\\':
                    this.updated = true;
                    SizeF charSize = this.renderer.DrawChars("\\", this.charPosition);
                    charSize.Height = 0.0f;
                    this.charPosition = PointF.Add(this.charPosition, charSize);
                    break;

                case 'c':
                    if (this.renderer.Options.Brushes.Length <= token.Parameter)
                        Trace.TraceWarning("Out of brush index: {0}", token.Parameter);
                    else
                        this.renderer.BrushIndex = token.Parameter;

                    break;

                default:
                    break;
            }
        }
示例#8
0
 public ControlToken LoadNavigation(ControlToken enterprise, Expression <Func <Enterprise, object> > expression)
 {
     throw new NotImplementedException();
 }
示例#9
0
 public ControlToken Remove(ControlToken entity)
 {
     return(_baseRepository.Remove(entity));
 }
示例#10
0
 public ControlToken LoadNavigation(ControlToken enterprise, Expression <Func <ControlToken, object> > expression)
 {
     return(_baseRepository.LoadNavigation(enterprise, expression));
 }
示例#11
0
 public ControlToken LoadCollection(ControlToken enterprise, string collectionPropName)
 {
     return(_baseRepository.LoadCollection(enterprise, collectionPropName));
 }
示例#12
0
 public ControlToken Insert(ControlToken entity)
 {
     return(_baseRepository.Insert(entity));
 }
示例#13
0
 protected ASTComputationBase(ControlToken ctok)
 {
     controlToken = ctok;
 }