Skip to content

Instantly share code, notes, and snippets.

import java.util.Arrays;
class Solution {
public int[] products(int[] nums) {
int[] result = new int[nums.length];
if (nums.length > 1) {
result[0] = 1;
}
int productSoFar = nums[0];
const handle = (event, context) => {
// Handle the request and return a promise
}
exports.myHandler = withMiddlewares(handle, [
SentryMiddleware(),
DynamoDbInsertOrModifyEventsMiddleware()
])
const DynamoDbInsertOrModifyEventsMiddleware = () => (event, context, next) => {
const filteredRecords = event.Records.filter(isInsertOrModifyEvent)
const mutatedEvent = event
mutatedEvent.Records = filteredRecords
return next(mutatedEvent, context)
}
const SentryMiddleware = (event, context, next) => {
initializeSentry()
return next(event, context)
.catch(error => captureExceptionAndReturnPromise(error, {}).then(() => Promise.reject(error)))
}
@uday-rayala
uday-rayala / with-middlewares.js
Last active June 4, 2018 13:19
Middleware framework for AWS lambdas
const withMiddlewares = (handler, middlewares = []) => (event, context, callback) => {
const chainMiddlewares = ([firstMiddleware, ...restOfMiddlewares]) => {
if (firstMiddleware) {
return (e, c) => {
try {
return firstMiddleware(e, c, chainMiddlewares(restOfMiddlewares))
} catch (error) {
return Promise.reject(error)
}
}
@uday-rayala
uday-rayala / scientist.rb
Created March 9, 2017 15:27
Scientist::Experiment
module Scientist::Experiment
def self.new(name)
MyServiceExperiment.new(name: name)
end
end
@uday-rayala
uday-rayala / my_service_experiment.rb
Created March 9, 2017 15:27
MyServiceExperiment
class MyServiceExperiment
include Scientist::Experiment
def enabled?
true
end
def publish(result)
statsd_client = Rails.application.config.statsd_client
@uday-rayala
uday-rayala / lograge_http_response_appender.rb
Created March 9, 2017 15:26
LogrageHttpResponseAppender
module LogrageHttpResponseAppender
def append_info_to_payload(payload)
super
payload[:experiments] = RequestStore.store[:experiments] if RequestStore.store[:experiments]
end
end
class ApplicationController < ActionController::API
include LogrageHttpResponseAppender
end
@uday-rayala
uday-rayala / experimental_engine.rb
Created March 9, 2017 15:25
ExperimentalEngine
class ExperimentalEngine
include Scientist
def estimate(p1, p2, p3)
science "PriceEstimate" |e|
e.context p1: p1, p2: p2, p3: p3
e.use { LocalPricingEngine.new.estimate(p1, p2, p3) }
e.try { PricingServiceEngine.new.estimate(p1, p2, p3) }
end
end
end
@uday-rayala
uday-rayala / pricing_engine_factory.rb
Created March 9, 2017 15:24
PricingEngineFactory
class PricingEngineFactory
def self.engine
engine_class = Figaro.env.pricing_engine || LocalPricingEngine.name
engine_class.safe_constantize.new
end
end