Skip to content

Instantly share code, notes, and snippets.

@feoktant
Created June 20, 2017 15:20
Show Gist options
  • Save feoktant/e2092364c6b7c360cdbf26856ff196e1 to your computer and use it in GitHub Desktop.
Save feoktant/e2092364c6b7c360cdbf26856ff196e1 to your computer and use it in GitHub Desktop.
package com.timetrade.wciservice.controller;
import com.timetrade.wciservice.config.ConfigurationResolver;
import com.timetrade.wciservice.config.properties.LicenseeAdminConfigData;
import com.timetrade.wciservice.domain.VerifyConfigurationResponse;
import com.timetrade.wciservice.domain.VideoProviderEntity;
import com.timetrade.wciservice.exceptions.WCIException;
import com.timetrade.wciservice.provider.ProvidersResolver;
import com.timetrade.wciservice.provider.WebConferenceProvider;
import com.timetrade.wciservice.service.ConfigurationServiceClient;
import lombok.AllArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import static org.springframework.http.HttpStatus.OK;
@RestController
@AllArgsConstructor
@RequestMapping(
produces = MediaType.APPLICATION_JSON_UTF8_VALUE
)
public class AdminUIController {
private ConfigurationServiceClient serviceClient;
private ConfigurationResolver configurationResolver;
private ProvidersResolver providersResolver;
@GetMapping(value = "/{licenseeExternalId}/providers")
public ResponseEntity<List> getProviders() {
return new ResponseEntity<>(Arrays.asList(VideoProviderEntity.values()), OK);
}
@GetMapping(value = "/{licenseeExternalId}/configuration")
public ResponseEntity<LicenseeAdminConfigData> getConfiguration(@PathVariable("licenseeExternalId") String licenseeExternalId) {
return new ResponseEntity<>(configurationResolver.getLicenseeAdminConfigData(licenseeExternalId), HttpStatus.OK);
}
@PutMapping(value = "/{licenseeExternalId}/configuration",
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<LicenseeAdminConfigData> createConfiguration(@PathVariable("licenseeExternalId") String licenseeExternalId,
@RequestBody LicenseeAdminConfigData data) {
return new ResponseEntity<>(data, serviceClient.putConfigurationToServiceConfigStore(data, licenseeExternalId));
}
@PostMapping(value = "/{licenseeExternalId}/verify-connection",
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<VerifyConfigurationResponse> validateConfiguration(@PathVariable("licenseeExternalId") String licenseeExternalId,
@RequestBody LicenseeAdminConfigData data) {
final WebConferenceProvider provider = providersResolver.resolveFromConfiguration(licenseeExternalId);
final Optional<String> validationResult = provider.validateConfiguration(data);
final VerifyConfigurationResponse res = validationResult
.map(o -> new VerifyConfigurationResponse(false, o))
.orElse(new VerifyConfigurationResponse(true, "Configuration works!"));
return new ResponseEntity<>(res, HttpStatus.OK);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment