コード例 #1
0
        public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestMessage req, TraceWriter log)
        {
            try
            {
                log.Info("C# HTTP trigger function processed a request.");

                var data = await RequestDecoder.Decode <SessionCreatePostModel>(req);

                try
                {
                    var jwt = Jwt.Decode(data.password);
                    if (jwt.subject != data.username)
                    {
                        throw new Exception("Username/JWT-subject mismatch");
                    }
                }
                catch
                {
                    throw new HttpResponseException(req.CreateErrorResponse(HttpStatusCode.Forbidden, "Forbidden"));
                }

                var response = new SessionResponseModel
                {
                    id       = Guid.NewGuid().ToString("N"),
                    username = data.username
                };
                return(req.CreateResponse(HttpStatusCode.OK, response));
            }
            catch (HttpResponseException error)
            {
                return(error.Response);
            }
        }
コード例 #2
0
        public void TestDecodeRequest()
        {
            object result      = null;
            var    mockDecoder = new Mock <IDecoder <IByteBuffer> >();

            mockDecoder.Setup(i => i.DecodeRequest(It.IsAny <IByteBuffer>()))
            .Returns <IByteBuffer>(i =>
            {
                i.ReadBytes(1);
                i.MarkReaderIndex();
                return(new Request());
            });
            var context = new Mock <IChannelHandlerContext>();

            context.Setup(i => i.FireChannelRead(It.IsAny <object>()))
            .Callback <object>(i => result = i);
            var reqDecoder = new RequestDecoder(mockDecoder.Object);

            reqDecoder.ChannelRead(context.Object, Unpooled.WrappedBuffer(new byte[] { 3 }));
            Assert.NotNull(result);
            Assert.IsType <Request>(result);
        }
コード例 #3
0
        public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestMessage req, TraceWriter log)
        {
            try
            {
                log.Info("C# HTTP trigger function processed a request.");

                var data = await RequestDecoder.Decode <TokenCreatePostModel>(req);

                var response = new TokenResponseModel
                {
                    id       = data.email,
                    name     = GetName(data.email),
                    iconURL  = Gravatar.GetImageUrl(data.email),
                    password = new Jwt(data.email).Encode()
                };
                return(req.CreateResponse(HttpStatusCode.OK, response));
            }
            catch (HttpResponseException error)
            {
                return(error.Response);
            }
        }