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 }); }) { }
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();
// 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;
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); }) { }
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; } }) { }
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); }) { }
public DescribeTags(IAlteredPipeline <DescribeTagsRequest, DescribeTagsResponse> describeTags) : base(describeTags // default cache of 5 mins for tags .WithAlteredCache(getKey: request => AlteredJson.SerializeObject(request.LoadBalancerNames))) { }