Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ConfigurableResponseProcessor : IResponseProcessor
- {
- private Func<MediaRange, object, NancyContext, ProcessorMatch> canProcess = (media, model, context) => new ProcessorMatch();
- private Func<MediaRange, object, NancyContext, Response> process = (media, model, context) => 200;
- private IList<Tuple<string, MediaRange>> extensionMappings = new List<Tuple<string, MediaRange>>();
- public ConfigurableResponseProcessor()
- {
- }
- public ConfigurableResponseProcessor(Action<ConfigurableResponseProcessorConfigurator> action)
- {
- var configurator =
- new ConfigurableResponseProcessorConfigurator(this);
- action.Invoke(configurator);
- }
- public IEnumerable<Tuple<string, MediaRange>> ExtensionMappings
- {
- get { return this.extensionMappings; }
- }
- public ProcessorMatch CanProcess(MediaRange requestedMediaRange, dynamic model, NancyContext context)
- {
- return this.canProcess.Invoke(requestedMediaRange, model, context);
- }
- public Response Process(MediaRange requestedMediaRange, dynamic model, NancyContext context)
- {
- return this.process.Invoke(requestedMediaRange, model, context);
- }
- public class ConfigurableResponseProcessorConfigurator
- {
- private readonly ConfigurableResponseProcessor processor;
- public ConfigurableResponseProcessorConfigurator(ConfigurableResponseProcessor processor)
- {
- this.processor = processor;
- }
- public ConfigurableResponseProcessorConfigurator Extension(string extension, MediaRange range)
- {
- this.processor.extensionMappings.Add(new Tuple<string, MediaRange>(extension, range));
- return this;
- }
- public ConfigurableResponseProcessorConfigurator Extension(Tuple<string, MediaRange> mapping)
- {
- this.processor.extensionMappings.Add(mapping);
- return this;
- }
- public ConfigurableResponseProcessorConfigurator Extension(IEnumerable<Tuple<string, MediaRange>> mappings)
- {
- this.processor.extensionMappings = mappings.ToList();
- return this;
- }
- public ConfigurableResponseProcessorConfigurator CanProcess(Func<MediaRange, object, NancyContext, ProcessorMatch> action)
- {
- this.processor.canProcess = action;
- return this;
- }
- public ConfigurableResponseProcessorConfigurator Process(Func<MediaRange, object, NancyContext, Response> action)
- {
- this.processor.process = action;
- return this;
- }
- }
- }
Add Comment
Please, Sign In to add comment