Skip to content
Extraits de code Groupes Projets
Valider d819dc40 rédigé par Mohamed Lemine BAILLAHI's avatar Mohamed Lemine BAILLAHI
Parcourir les fichiers

Merge branch 'feature/MS-91' into 'develop'

optimized the push product and hide product features

Closes MS-91

See merge request !22
parents 39ab255b 5f06111a
Branches
1 requête de fusion!22optimized the push product and hide product features
Pipeline #14011 en échec avec les étapes
in 41 secondes
## [0.0.8-RELEASE]
### Added
- optimize the push product and hide product features
## [0.0.7-RELEASE]
### Added
- added export messages feature
......
......@@ -21,7 +21,6 @@ public class LiveServerConfig {
@PostConstruct
public void init() {
this.rtmp = "rtmp://rtmp.mydressin-server.com:1935/live";
System.out.println("LiveServerConfig rtmp: " + rtmp);
System.out.println("LiveServerConfig hls: " + hls);
System.out.println("LiveServerConfig stat: " + stat);
......
......@@ -12,8 +12,12 @@ import com.marketingconfort.mydressin.mydressinstreamservices.models.dtos.LivePr
import com.marketingconfort.mydressin.mydressinstreamservices.models.dtos.TimeStampProductDto;
import com.marketingconfort.mydressin.mydressinstreamservices.models.enums.MessageType;
import com.marketingconfort.mydressin.mydressinstreamservices.services.ILiveProductService;
import com.marketingconfort.starter.core.exceptions.FunctionalException;
import com.marketingconfort.starter.core.exceptions.TechnicalException;
import lombok.AllArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.http.HttpStatus;
@AllArgsConstructor
@RestController
......@@ -39,11 +43,15 @@ public class LiveProductController {
@PostMapping("/add")
@PreAuthorize("@securityCustomExpressions.isClientTrusted(#requestAuthorization)")
public LiveProductResponse addProductToLiveStream(
public ResponseEntity<LiveProductResponse> addProductToLiveStream(
@RequestBody LiveProductDto liveProductDto,
@RequestParam Long liveId,
@RequestHeader String requestAuthorization) {
return timeStampProductService.addProductToLiveStream(liveProductDto, liveId);
try {
return ResponseEntity.ok(timeStampProductService.addProductToLiveStream(liveProductDto, liveId));
} catch (FunctionalException | TechnicalException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}
}
@DeleteMapping("/delete")
......@@ -57,35 +65,55 @@ public class LiveProductController {
@PostMapping("/present")
@PreAuthorize("@securityCustomExpressions.isClientTrusted(#requestAuthorization)")
public void presentProduct(
public ResponseEntity<LiveProductDto> presentProduct(
@RequestParam Long liveId, @RequestParam Long liveProductId,
@RequestParam Long startTime, @RequestHeader String requestAuthorization) {
LiveProductDto liveProductDto = timeStampProductService.presentProduct(liveProductId, startTime);
simpleMessagingTemplate.convertAndSend("/topic/messages/" + liveId, liveProductDto);
try {
LiveProductDto liveProductDto = timeStampProductService.presentProduct(liveProductId, startTime);
simpleMessagingTemplate.convertAndSend("/topic/messages/" + liveId, liveProductDto);
return ResponseEntity.ok(liveProductDto);
} catch (FunctionalException | TechnicalException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}
}
@PostMapping("/push")
@PreAuthorize("@securityCustomExpressions.isClientTrusted(#requestAuthorization)")
public TimeStampProductDto pushProduct(
public ResponseEntity<TimeStampProductDto> pushProduct(
@RequestParam Long liveProductId, @RequestParam Long startTime,
@RequestHeader String requestAuthorization) {
return timeStampProductService.pushProduct(liveProductId, startTime);
try {
TimeStampProductDto timeStampProductDto = timeStampProductService.pushProduct(liveProductId, startTime);
return ResponseEntity.ok(timeStampProductDto);
} catch (FunctionalException | TechnicalException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}
}
@PostMapping("/hide")
@PreAuthorize("@securityCustomExpressions.isClientTrusted(#requestAuthorization)")
public TimeStampProductDto hideProduct(
public ResponseEntity<TimeStampProductDto> hideProduct(
@RequestParam Long liveProductId, @RequestParam Long endTime,
@RequestHeader String requestAuthorization) {
return timeStampProductService.hideProduct(liveProductId, endTime);
try {
TimeStampProductDto timeStampProductDto = timeStampProductService.hideProduct(liveProductId, endTime);
return ResponseEntity.ok(timeStampProductDto);
} catch (FunctionalException | TechnicalException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}
}
@PostMapping("/add-time-stamp")
@PreAuthorize("@securityCustomExpressions.isClientTrusted(#requestAuthorization)")
public TimeStampProductDto addTimeStampProduct(
public ResponseEntity<TimeStampProductDto> addTimeStampProduct(
@RequestParam Long liveProductId, @RequestParam Long startTime,
@RequestParam Long endTime, @RequestHeader String requestAuthorization) {
return timeStampProductService.addTimeStampProduct(liveProductId, startTime, endTime);
try {
TimeStampProductDto timeStampProductDto = timeStampProductService.addTimeStampProduct(liveProductId, startTime, endTime);
return ResponseEntity.ok(timeStampProductDto);
} catch (FunctionalException | TechnicalException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}
}
@DeleteMapping("/delete-time-stamp")
......@@ -96,10 +124,15 @@ public class LiveProductController {
@PutMapping("/update-time-stamp")
@PreAuthorize("@securityCustomExpressions.isClientTrusted(#requestAuthorization)")
public TimeStampProductDto updateTimeStampProduct(
public ResponseEntity<TimeStampProductDto> updateTimeStampProduct(
@RequestParam Long id, @RequestParam Long startTime,
@RequestParam Long endTime, @RequestHeader String requestAuthorization) {
return timeStampProductService.updateTimeStampProduct(id, startTime, endTime);
try {
TimeStampProductDto timeStampProductDto = timeStampProductService.updateTimeStampProduct(id, startTime, endTime);
return ResponseEntity.ok(timeStampProductDto);
} catch (FunctionalException | TechnicalException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}
}
}
......@@ -4,11 +4,13 @@ import com.marketingconfort.mydressin.mydressinstreamservices.models.dtos.LivePr
import com.marketingconfort.mydressin.mydressinstreamservices.models.dtos.LiveProductResponse;
import com.marketingconfort.mydressin.mydressinstreamservices.models.entities.TimeStampProduct;
import com.marketingconfort.mydressin.mydressinstreamservices.models.dtos.TimeStampProductDto;
import com.marketingconfort.starter.core.exceptions.FunctionalException;
import com.marketingconfort.starter.core.exceptions.TechnicalException;
import java.util.List;
public interface ILiveProductService {
LiveProductResponse addProductToLiveStream(LiveProductDto liveProductDto, Long streamId);
LiveProductResponse addProductToLiveStream(LiveProductDto liveProductDto, Long streamId) throws FunctionalException, TechnicalException;
void removeLiveProduct(Long id);
......@@ -18,15 +20,15 @@ public interface ILiveProductService {
void deleteTimeStampProduct(long id);
LiveProductDto presentProduct(long liveProductId, long startTime);
LiveProductDto presentProduct(long liveProductId, long startTime) throws FunctionalException, TechnicalException;
TimeStampProductDto addTimeStampProduct(long liveProductId, long startTime, long endTime);
TimeStampProductDto addTimeStampProduct(long liveProductId, long startTime, long endTime) throws FunctionalException, TechnicalException;
TimeStampProductDto updateTimeStampProduct(long id, long startTime, long endTime);
TimeStampProductDto updateTimeStampProduct(long id, long startTime, long endTime) throws FunctionalException, TechnicalException;
List<TimeStampProduct> getTimeStampsProduct(long id);
TimeStampProductDto pushProduct(long liveProductId, long startTime);
TimeStampProductDto pushProduct(long liveProductId, long startTime) throws FunctionalException, TechnicalException;
TimeStampProductDto hideProduct(long liveProductId, long endTime);
TimeStampProductDto hideProduct(long liveProductId, long endTime) throws FunctionalException, TechnicalException;
}
......@@ -21,8 +21,15 @@ import com.marketingconfort.mydressin.mydressinstreamservices.models.repositorie
import com.marketingconfort.mydressin.mydressinstreamservices.services.ILiveProductService;
import com.marketingconfort.starter.core.services.MCRestTemplateService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.marketingconfort.starter.core.exceptions.FunctionalException;
import com.marketingconfort.starter.core.exceptions.TechnicalException;
import lombok.AllArgsConstructor;
@Service
@AllArgsConstructor
public class LiveProductService implements ILiveProductService {
......@@ -32,16 +39,24 @@ public class LiveProductService implements ILiveProductService {
final private LiveStreamRepository liveStreamRepository;
private final MCRestTemplateService mcRestTemplateService;
private final NameUrl nameUrl;
private final Logger logger = LoggerFactory.getLogger(LiveProductService.class);
@Override
public LiveProductResponse addProductToLiveStream(LiveProductDto liveProductDto, Long streamId) {
public LiveProductResponse addProductToLiveStream(LiveProductDto liveProductDto, Long streamId) throws FunctionalException, TechnicalException {
logger.info("Adding product to live stream with streamId: {}", streamId);
LiveStream liveStream = liveStreamRepository.findById(streamId)
.orElseThrow(() -> new RuntimeException("Live stream not found"));
.orElseThrow(() -> {
logger.error("Live stream not found with id: {}", streamId);
return new FunctionalException("Live stream not found");
});
LiveProduct liveProduct = liveProductDto.toEntity();
liveProduct.setLiveStream(liveStream);
liveProduct = liveProductRepository.save(liveProduct);
logger.info("Product added successfully to live stream. ProductId: {}, StreamId: {}", liveProduct.getId(), streamId);
return LiveProductResponse.builder()
.id(liveProduct.getId())
.title(liveProduct.getTitle())
......@@ -56,37 +71,55 @@ public class LiveProductService implements ILiveProductService {
@Override
public void removeLiveProduct(Long id) {
liveProductRepository.deleteById(id);
logger.info("Live product removed successfully. Id: {}", id);
}
@Override
public List<LiveProductResponse> getAllLiveProductsByStreamId(Long id) {
return liveProductRepository.findLiveProductsByStreamId(id);
List<LiveProductResponse> products = liveProductRepository.findLiveProductsByStreamId(id);
logger.info("Found {} live products for stream id: {}", products.size(), id);
return products;
}
@Override
public List<LiveProductResponse> getEnabledLiveProducts(Long id) {
return liveProductRepository.findEnabledLiveProducts(id);
List<LiveProductResponse> enabledProducts = liveProductRepository.findEnabledLiveProducts(id);
logger.info("Found {} enabled live products for stream id: {}", enabledProducts.size(), id);
return enabledProducts;
}
@Override
public void deleteTimeStampProduct(long id) {
timeStampProductRepository.deleteById(id);
logger.info("Timestamp product deleted successfully. Id: {}", id);
}
@Override
public LiveProductDto presentProduct(long liveProductId, long startTime) {
LiveProduct liveProduct = liveProductRepository.findById(liveProductId).orElseThrow(
() -> new RuntimeException("LiveProduct not found")
);
public LiveProductDto presentProduct(long liveProductId, long startTime) throws FunctionalException, TechnicalException {
logger.info("Presenting product with id: {}, at startTime: {}", liveProductId, startTime);
LiveProduct liveProduct = liveProductRepository.findById(liveProductId).orElseThrow(() -> {
logger.error("LiveProduct not found with id: {}", liveProductId);
return new FunctionalException("LiveProduct not found");
});
liveProduct.setStatus(ProductStatus.IN_PRESENTATION);
liveProduct.setPresented(true);
liveProduct = liveProductRepository.save(liveProduct);
long liveId=liveProduct.getLiveStream().getId();
logger.debug("LiveProduct status updated to IN_PRESENTATION. Id: {}", liveProductId);
long liveId = liveProduct.getLiveStream().getId();
TimeStampProduct timeStampProduct = timeStampProductRepository.save(new TimeStampProduct(startTime, liveProduct));
String url = nameUrl.getStockManagementService() + NameUri.STOCK + StockManagerServicePath.PRESENT_PRODUCT+"?liveId="+liveId+"&id="+liveProduct.getProductId()+"&presentedAt="+startTime ;
logger.debug("TimeStampProduct created with id: {}", timeStampProduct.getId());
String url = nameUrl.getStockManagementService() + NameUri.STOCK + StockManagerServicePath.PRESENT_PRODUCT +
"?liveId=" + liveId + "&id=" + liveProduct.getProductId() + "&presentedAt=" + startTime;
try {
logger.info("Calling stock management service: {}", url);
mcRestTemplateService.postForObject(url, null, Void.class);
return LiveProductDto.builder()
LiveProductDto result = LiveProductDto.builder()
.id(liveProductId)
.type(MessageType.ADDPRODUCT)
.productId(liveProduct.getProductId())
......@@ -103,108 +136,162 @@ public class LiveProductService implements ILiveProductService {
.build())
)
.build();
logger.info("Product presented successfully. Id: {}", liveProductId);
return result;
} catch (Exception e) {
throw new RuntimeException("Failed to present product");
logger.error("Failed to present product with id: {}. Error: {}", liveProductId, e.getMessage(), e);
throw new TechnicalException("Failed to present product: " + e.getMessage());
}
}
@Override
public TimeStampProductDto addTimeStampProduct
(long liveProductId, long startTime, long endTime
) {
LiveProduct liveProduct = liveProductRepository.findById(liveProductId).orElseThrow(
() -> new RuntimeException("LiveProduct not found")
);
liveProduct.setPresented(true);
liveProduct.setStatus(ProductStatus.PRESENTED);
liveProduct = liveProductRepository.save(liveProduct);
TimeStampProduct timeStampProduct = timeStampProductRepository.save(TimeStampProduct.builder()
.liveProduct(liveProduct)
.startTime(startTime)
.endTime(endTime)
.build());
return TimeStampProductDto.builder()
.id(timeStampProduct.getId())
.type(MessageType.ADDTIMESTAMP)
.startTime(timeStampProduct.getStartTime())
.endTime(timeStampProduct.getEndTime())
.liveProductId(liveProductId)
.build();
}
public TimeStampProductDto addTimeStampProduct(long liveProductId, long startTime, long endTime) throws FunctionalException, TechnicalException {
logger.info("Adding timestamp product. LiveProductId: {}, startTime: {}, endTime: {}", liveProductId, startTime, endTime);
LiveProduct liveProduct = liveProductRepository.findById(liveProductId).orElseThrow(() -> {
logger.error("LiveProduct not found with id: {}", liveProductId);
return new FunctionalException("LiveProduct not found");
});
liveProduct.setPresented(true);
liveProduct.setStatus(ProductStatus.PRESENTED);
liveProduct = liveProductRepository.save(liveProduct);
logger.debug("LiveProduct status updated to PRESENTED. Id: {}", liveProductId);
@Override
public TimeStampProductDto updateTimeStampProduct
(long id, long startTime, long endTime
) {
TimeStampProduct timeStampProduct = timeStampProductRepository.findById(id).orElseThrow(
() -> new RuntimeException("TimeStampProduct not found")
);
timeStampProduct.setStartTime(startTime);
timeStampProduct.setEndTime(endTime);
timeStampProduct = timeStampProductRepository.save(timeStampProduct);
return TimeStampProductDto.builder()
.type(MessageType.UPDATETIMESTAMP)
.id(timeStampProduct.getId())
.startTime(timeStampProduct.getStartTime())
.endTime(timeStampProduct.getEndTime())
.liveProductId(timeStampProduct.getLiveProduct().getId())
.build();
TimeStampProduct timeStampProduct = timeStampProductRepository.save(TimeStampProduct.builder()
.liveProduct(liveProduct)
.startTime(startTime)
.endTime(endTime)
.build());
logger.debug("TimeStampProduct created with id: {}", timeStampProduct.getId());
String url = nameUrl.getStockManagementService() + NameUri.STOCK + StockManagerServicePath.PRESENT_PRODUCT +
"?liveId=" + liveProduct.getLiveStream().getId() + "&id=" + liveProduct.getProductId() + "&presentedAt=" + startTime;
try {
logger.info("Calling stock management service: {}", url);
mcRestTemplateService.postForObject(url, null, Void.class);
} catch (Exception e) {
logger.error("Failed to call stock management service. LiveProductId: {}, Error: {}", liveProductId, e.getMessage(), e);
// Note: This exception is caught and logged but not rethrown
}
TimeStampProductDto result = TimeStampProductDto.builder()
.id(timeStampProduct.getId())
.type(MessageType.ADDTIMESTAMP)
.startTime(timeStampProduct.getStartTime())
.endTime(timeStampProduct.getEndTime())
.liveProductId(liveProductId)
.build();
logger.info("Timestamp product added successfully. Id: {}", timeStampProduct.getId());
return result;
}
@Override
public List<TimeStampProduct> getTimeStampsProduct
(long id
) {
return timeStampProductRepository.getTimeStampProductByLiveProductId(id);
}
@Override
public TimeStampProductDto updateTimeStampProduct(long id, long startTime, long endTime) throws FunctionalException, TechnicalException {
logger.info("Updating timestamp product. Id: {}, startTime: {}, endTime: {}", id, startTime, endTime);
TimeStampProduct timeStampProduct = timeStampProductRepository.findById(id).orElseThrow(() -> {
logger.error("TimeStampProduct not found with id: {}", id);
return new FunctionalException("TimeStampProduct not found");
});
timeStampProduct.setStartTime(startTime);
timeStampProduct.setEndTime(endTime);
timeStampProduct = timeStampProductRepository.save(timeStampProduct);
TimeStampProductDto result = TimeStampProductDto.builder()
.type(MessageType.UPDATETIMESTAMP)
.id(timeStampProduct.getId())
.startTime(timeStampProduct.getStartTime())
.endTime(timeStampProduct.getEndTime())
.liveProductId(timeStampProduct.getLiveProduct().getId())
.build();
logger.info("Timestamp product updated successfully. Id: {}", id);
return result;
}
@Override
public TimeStampProductDto pushProduct
(long liveProductId, long startTime
) {
LiveProduct liveProduct = liveProductRepository.findById(liveProductId).orElseThrow(
() -> new RuntimeException("LiveProduct not found")
);
liveProduct.setStatus(ProductStatus.IN_PRESENTATION);
liveProduct = liveProductRepository.save(liveProduct);
TimeStampProduct timeStampProduct = timeStampProductRepository.save(TimeStampProduct.builder()
.liveProduct(liveProduct)
.startTime(startTime)
.build());
return TimeStampProductDto.builder()
.type(MessageType.PUSHPRODUCT)
.id(timeStampProduct.getId())
.startTime(timeStampProduct.getStartTime())
.endTime(null)
.liveProductId(liveProductId)
.build();
}
@Override
public List<TimeStampProduct> getTimeStampsProduct(long id) {
logger.info("Fetching timestamp products for live product id: {}", id);
List<TimeStampProduct> timestamps = timeStampProductRepository.getTimeStampProductByLiveProductId(id);
logger.info("Found {} timestamp products for live product id: {}", timestamps.size(), id);
return timestamps;
}
@Override
public TimeStampProductDto hideProduct
(long liveProductId, long endTime
) {
LiveProduct liveProduct = liveProductRepository.findById(liveProductId).orElseThrow(
() -> new RuntimeException("LiveProduct not found")
);
liveProduct.setStatus(ProductStatus.PRESENTED);
liveProductRepository.save(liveProduct);
TimeStampProduct lastTimeStamp = timeStampProductRepository.getLastTimeStampProductByLiveProductId(liveProductId).orElseThrow(
() -> new RuntimeException("TimeStampProduct not found")
);
lastTimeStamp.setEndTime(endTime);
lastTimeStamp = timeStampProductRepository.save(lastTimeStamp);
return TimeStampProductDto.builder()
.type(MessageType.HIDEPRODUCT)
.id(lastTimeStamp.getId())
.startTime(lastTimeStamp.getStartTime())
.endTime(lastTimeStamp.getEndTime())
.liveProductId(liveProductId)
.build();
@Override
public TimeStampProductDto pushProduct(long liveProductId, long startTime) throws FunctionalException, TechnicalException {
logger.info("Pushing product. LiveProductId: {}, startTime: {}", liveProductId, startTime);
LiveProduct liveProduct = liveProductRepository.findById(liveProductId).orElseThrow(() -> {
logger.error("LiveProduct not found with id: {}", liveProductId);
return new FunctionalException("LiveProduct not found");
});
liveProduct.setStatus(ProductStatus.IN_PRESENTATION);
liveProduct = liveProductRepository.save(liveProduct);
logger.debug("LiveProduct status updated to IN_PRESENTATION. Id: {}", liveProductId);
long liveId = liveProduct.getLiveStream().getId();
String url = nameUrl.getStockManagementService() + NameUri.STOCK + StockManagerServicePath.PRESENT_PRODUCT +
"?liveId=" + liveId + "&id=" + liveProduct.getProductId() + "&presentedAt=" + startTime;
try {
logger.info("Calling stock management service: {}", url);
mcRestTemplateService.postForObject(url, null, Void.class);
} catch (Exception e) {
logger.error("Failed to call stock management service. LiveProductId: {}, Error: {}", liveProductId, e.getMessage(), e);
}
TimeStampProduct timeStampProduct = timeStampProductRepository.save(TimeStampProduct.builder()
.liveProduct(liveProduct)
.startTime(startTime)
.build());
TimeStampProductDto result = TimeStampProductDto.builder()
.type(MessageType.PUSHPRODUCT)
.id(timeStampProduct.getId())
.startTime(timeStampProduct.getStartTime())
.endTime(null)
.liveProductId(liveProductId)
.build();
logger.info("Product pushed successfully. LiveProductId: {}, TimeStampId: {}", liveProductId, timeStampProduct.getId());
return result;
}
@Override
public TimeStampProductDto hideProduct(long liveProductId, long endTime) throws FunctionalException, TechnicalException {
logger.info("Hiding product. LiveProductId: {}, endTime: {}", liveProductId, endTime);
LiveProduct liveProduct = liveProductRepository.findById(liveProductId).orElseThrow(() -> {
logger.error("LiveProduct not found with id: {}", liveProductId);
return new FunctionalException("LiveProduct not found");
});
liveProduct.setStatus(ProductStatus.PRESENTED);
liveProductRepository.save(liveProduct);
logger.debug("LiveProduct status updated to PRESENTED. Id: {}", liveProductId);
TimeStampProduct lastTimeStamp = timeStampProductRepository.getLastTimeStampProductByLiveProductId(liveProductId).orElseThrow(() -> {
logger.error("TimeStampProduct not found for liveProductId: {}", liveProductId);
return new FunctionalException("TimeStampProduct not found");
});
lastTimeStamp.setEndTime(endTime);
lastTimeStamp = timeStampProductRepository.save(lastTimeStamp);
TimeStampProductDto result = TimeStampProductDto.builder()
.type(MessageType.HIDEPRODUCT)
.id(lastTimeStamp.getId())
.startTime(lastTimeStamp.getStartTime())
.endTime(lastTimeStamp.getEndTime())
.liveProductId(liveProductId)
.build();
logger.info("Product hidden successfully. LiveProductId: {}, TimeStampId: {}", liveProductId, lastTimeStamp.getId());
return result;
}
}
live-server:
hls: https://hls.mydressin-server.com/hls
rtmp: rtmp://rtmp.mydressin-server.com/live
stat: https://hls.mydressin-server.com/stat
status: https://status.mydressin-server.com
cdn: https://bucket-rtmp.s3.eu-north-1.amazonaws.com/
hls: https://ant-media-ovh.mydressin-server.com
rtmp: rtmp://ant-media-ovh.mydressin-server.com/live
stat: https://ant-media-ovh.mydressin-server.com/stat
status: https://status-ovh.mydressin-server.com
cdn: https://mydressin-live-records.s3.eu-west-3.amazonaws.com/
spring:
datasource:
......
live-server:
hls: https://hls.mydressin-server.com/hls
rtmp: rtmp://rtmp.mydressin-server.com/live
stat: https://hls.mydressin-server.com/stat
status: https://status.mydressin-server.com
cdn: https://bucket-rtmp.s3.eu-north-1.amazonaws.com/
hls: https://ant-media-ovh.mydressin-server.com
rtmp: rtmp://ant-media-ovh.mydressin-server.com/live
stat: https://ant-media-ovh.mydressin-server.com/stat
status: https://status-ovh.mydressin-server.com
cdn: https://mydressin-live-records.s3.eu-west-3.amazonaws.com/
spring:
datasource:
......
......@@ -8,7 +8,7 @@ spring:
application:
name: mydressin-stream-service
profiles:
active: ${PROFILE:rec}
active: ${PROFILE:local}
servlet:
multipart:
max-file-size: 90000MB
......
0% ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter