Exemple #1
0
 public SimpleMvc(IAlteredPipeline <TRequest, TResponse> pipeline) : base(async(request) =>
 {
     var innerRequest  = JsonConvert.DeserializeObject <TRequest>(request.Body, AlteredJson.DefaultJsonSerializerSettings);
     var innerResponse = await pipeline.Execute(innerRequest);
     var body          = AlteredJson.SerializeObject(innerResponse);
     return(new AlteredApiResponse
     {
         StatusCode = 200,
         Body = body
     });
 })
 { }
Exemple #2
0
 public static string ToEsMultiJson(this IEnumerable <JObject> esLogs, string indexName) =>
 (from log in esLogs
  let meta = new
 {
     index = new
     {
         _index = indexName,
         _type = indexName
     }
 }
  select new object[] { meta, log })
 .SelectMany(m => m)
 .Aggregate(new StringBuilder(), (sb, o) => sb
            .AppendLine(AlteredJson.SerializeObject(o)))
 .ToString();
Exemple #3
0
        // this little entry point allows us to call any of the lambdas contained in this build,
        // or to run the ASP.NET MVC Web Host

        // dotnet run -p src/Altered.Logs Altered.Logs.Api.Lambda Execute
        // dotnet run -p src/Altered.Logs Altered.Logs.Mvc Host
        public static int Main(string[] args) =>
        (from name in (args.Skip(0).Take(1).Concat(new[] { DefaultName }).Take(1)).ToObservable()
         let envHost = args.Skip(1).Take(1).FirstOrDefault() ?? Environment.GetEnvironmentVariable("TF_VAR_env_host") ?? DefaultHost
                       let type = typeof(Program).Assembly.GetType(name, true, true)
                                  let method = type.GetMethod(envHost, BindingFlags.Static | BindingFlags.Public)
                                               //let x = method.CreateDelegate(method.
                                               from requestJson in args.Length != 0 ? JToken.ReadFromAsync(new JsonTextReader(Console.In)) : Task.FromResult(DefaultParams)
                                               //let _ = AlteredConsole.WriteLine($"{requestJson}")
                                               from requestParameter in method.GetParameters().Skip(0).Take(1)
                                               //let __ = AlteredConsole.WriteLine($"{requestParameter}")
                                               let request = requestJson.ToObject(requestParameter.ParameterType)
                                                             from response in method.Invoke(null, new[] { request }) as Task <StringResponse>
                                                             let responseJson = AlteredJson.SerializeObject(response)
                                                                                select AlteredConsole.WriteLine(responseJson))
        .ToTask().Result;
Exemple #4
0
        public MySampleApiCallClient(string uri /*, ISwaggerGenClient client OR HttpClient client etc */) : base(async request =>
        {
            var httpResponse = await uri.AppendPathSegment("template")
                               .WithOAuthBearerToken(request.BearerToken)
                               .PostStringAsync(AlteredJson.SerializeObject(request.MyDataIn));

            var json      = await httpResponse.Content.ReadAsStringAsync();
            var myDataOut = JObject.Parse(json);

            var response = new MySampleApiCallResponse
            {
                StatusCode = httpResponse.StatusCode,
                MyDataOut  = myDataOut
            };
            return(response);
        })
        { }
Exemple #5
0
        public Lambda(IAlteredPipeline <AlteredApiRequest, AlteredApiResponse> pipeline) : base(async(request) =>
        {
            var body = request.IsBase64Encoded ?
                       Convert.ToBase64String(Encoding.UTF8.GetBytes(request.Body)) :
                       request.Body;
            var mvcRequest = new AlteredApiRequest
            {
                Path                  = request.Path,
                HttpMethod            = request.HttpMethod,
                Headers               = request.Headers.ToDictionary(kvp => kvp.Key, kvp => new StringValues(kvp.Value)),
                QueryStringParameters = request.QueryStringParameters.ToDictionary(kvp => kvp.Key, kvp => new StringValues(kvp.Value)),
                Body                  = body
            };

            try
            {
                var mvcResponse = await pipeline.Execute(mvcRequest);
                var response    = new ApplicationLoadBalancerResponse
                {
                    StatusCode = mvcResponse.StatusCode,
                    Headers    = mvcResponse.Headers.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.ToString()),
                    Body       = mvcResponse.Body
                };
                return(response);
            }
            catch (Exception e)
            {
                // lambda will write error + request if thrown to
                Console.Error.WriteLine(AlteredJson.SerializeObject(new
                {
                    e.Message,
                    e.Source,
                    StackTrace = new StackTrace(e).ToString(),
                    e.Data
                }));
                Console.Out.WriteLine(AlteredJson.SerializeObject(mvcRequest));
                throw e;
            }
        })
        { }
Exemple #6
0
        public MySampleApiCallApi(IMySampleApiCall mySampleApiCall) : base(async(request) =>
        {
            var response = new AlteredApiResponse();

            var myDataIn = JObject.Parse(request.Body);

            var mySampleApiCallRequest = new MySampleApiCallRequest
            {
                RequestId = request.RequestId,
                //BearerToken =
                MyDataIn = myDataIn
            };
            var mySampleApiCallResponse = await mySampleApiCall.Execute(mySampleApiCallRequest);

            response.StatusCode = mySampleApiCallResponse.StatusCode;
            response.Headers[HeaderNames.ContentType] = "application/json";
            response.Body = AlteredJson.SerializeObject(mySampleApiCallResponse.MyDataOut);

            return(response);
        })
        {
        }
Exemple #7
0
 public DescribeTags(IAlteredPipeline <DescribeTagsRequest, DescribeTagsResponse> describeTags) : base(describeTags
                                                                                                       // default cache of 5 mins for tags
                                                                                                       .WithAlteredCache(getKey: request => AlteredJson.SerializeObject(request.LoadBalancerNames)))
 {
 }