@@ -0,0 +1,2056 @@
+package nl.ekholabs.nlp.controller;%0A%0Aimport java.io.IOException;%0A%0Aimport nl.ekholabs.nlp.client.ElsieDeeAudioRipFeignClient;%0Aimport nl.ekholabs.nlp.client.ElsieDeetectFeignClient;%0Aimport nl.ekholabs.nlp.model.Language;%0Aimport nl.ekholabs.nlp.model.TextResponse;%0Aimport nl.ekholabs.nlp.service.SpeechToTextService;%0Aimport org.springframework.beans.factory.annotation.Autowired;%0Aimport org.springframework.http.ResponseEntity;%0Aimport org.springframework.web.bind.annotation.PostMapping;%0Aimport org.springframework.web.bind.annotation.RequestParam;%0Aimport org.springframework.web.bind.annotation.RestController;%0Aimport org.springframework.web.multipart.MultipartFile;%0A%0Aimport static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;%0Aimport static org.springframework.http.MediaType.MULTIPART_FORM_DATA_VALUE;%0A%0A@RestController%0Apublic class ChainReactionController %7B%0A%0A  private final ElsieDeeAudioRipFeignClient elsieDeeAudioRipFeignClient;%0A  private final SpeechToTextService speechToTextService;%0A  private final ElsieDeetectFeignClient elsieDeetect;%0A%0A  @Autowired%0A  public ChainReactionController(final ElsieDeeAudioRipFeignClient elsieDeeAudioRipFeignClient,%0A                                 final SpeechToTextService speechToTextService, final ElsieDeetectFeignClient elsieDeetect) %7B%0A    this.elsieDeeAudioRipFeignClient = elsieDeeAudioRipFeignClient;%0A    this.speechToTextService = speechToTextService;%0A    this.elsieDeetect = elsieDeetect;%0A  %7D%0A%0A  @PostMapping(path = %22/executeChain%22, produces = APPLICATION_JSON_VALUE, consumes = MULTIPART_FORM_DATA_VALUE)%0A  public TextResponse executeChain(final @RequestParam(value = %22video%22) MultipartFile videoFile) throws IOException %7B%0A%0A    //TODO replace with chain of responsibility design pattern.%0A    final ResponseEntity%3Cbyte%5B%5D%3E audioEntity = elsieDeeAudioRipFeignClient.process(videoFile);%0A    final String outputText = speechToTextService.processSpeech(audioEntity.getBody());%0A    final Language language = elsieDeetect.identify(outputText);%0A%0A    return new TextResponse(language, outputText);%0A  %7D%0A%7D%0A

Add executeChain endpoint, which will be used to extract the audio, do speech-to-text and return text text output. Once Elasticsearch is in place, it will also search for keywaord.