Skip to content
Extraits de code Groupes Projets
Valider b10d27c3 rédigé par oussama aftys's avatar oussama aftys
Parcourir les fichiers

added delete live feature

parent 31edba62
Branches
Étiquettes
1 requête de fusion!18added delete live feature
Pipeline #9865 réussi avec les étapes
in 56 secondes
## [0.0.5-RELEASE]
### Added
- added delete live feature.
## [0.0.4-RELEASE] ## [0.0.4-RELEASE]
### Added ### Added
- Added request authorization check. - Added request authorization check.
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
</parent> </parent>
<groupId>com.marketingconfort.mydressin</groupId> <groupId>com.marketingconfort.mydressin</groupId>
<artifactId>mydressin-stream-services</artifactId> <artifactId>mydressin-stream-services</artifactId>
<version>0.0.4-SNAPSHOT</version> <version>0.0.5-SNAPSHOT</version>
<name>mydressin-stream-services</name> <name>mydressin-stream-services</name>
<description>The Streaming Microservice</description> <description>The Streaming Microservice</description>
<properties> <properties>
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
<dependency> <dependency>
<groupId>com.marketingconfort</groupId> <groupId>com.marketingconfort</groupId>
<artifactId>mydressin-common</artifactId> <artifactId>mydressin-common</artifactId>
<version>1.0.163-RELEASE</version> <version>1.0.184-RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
...@@ -37,12 +37,12 @@ public class LiveStreamController { ...@@ -37,12 +37,12 @@ public class LiveStreamController {
@RequestParam(value = "status", defaultValue = "ALL") String statusStr, @RequestParam(value = "status", defaultValue = "ALL") String statusStr,
@RequestParam(value = "page", defaultValue = "0") int page, @RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(value = "size", defaultValue = "10") int size, @RequestParam(value = "size", defaultValue = "10") int size,
@RequestParam(value = "sortBy", defaultValue = "title") String sortBy, @RequestParam(value = "sortBy", defaultValue = "startDate") String sortBy,
@RequestParam(value = "sortDir", defaultValue = "ASC") String sortDir, @RequestParam(value = "sortDir", defaultValue = "DESC") String sortDir,
@RequestHeader String requestAuthorization) { @RequestHeader String requestAuthorization) {
LiveStatus status = LiveStatus.valueOf(statusStr); LiveStatus status = LiveStatus.valueOf(statusStr);
List<LiveStreamResponse> liveStreams = liveStreamService.getLiveStreamsWithPaginationAndSearch( List<LiveStreamResponse> liveStreams = liveStreamService.getLiveStreams(
search, status, page, size, sortBy, sortDir); search, status, page, size, sortBy, sortDir);
return ResponseEntity.ok(liveStreams); return ResponseEntity.ok(liveStreams);
...@@ -50,8 +50,13 @@ public class LiveStreamController { ...@@ -50,8 +50,13 @@ public class LiveStreamController {
@GetMapping("/client") @GetMapping("/client")
@PreAuthorize("@securityCustomExpressions.isClientTrusted(#requestAuthorization)") @PreAuthorize("@securityCustomExpressions.isClientTrusted(#requestAuthorization)")
public List<LiveStreamResponse> getAllStreamsForClient(@RequestHeader String requestAuthorization) { public List<LiveStreamResponse> getAllStreamsForClient(@RequestHeader String requestAuthorization,
return liveStreamService.getAllLiveStreamsForClient(); @RequestParam(value = "search", defaultValue = "") String search,
@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(value = "size", defaultValue = "20") int size,
@RequestParam(value = "sortBy", defaultValue = "startDate") String sortBy,
@RequestParam(value = "sortDir", defaultValue = "DESC") String sortDir) {
return liveStreamService.getAllLiveStreamsForClient(search,page, size,sortBy,sortDir);
} }
@GetMapping("/products") @GetMapping("/products")
......
...@@ -26,8 +26,8 @@ public interface LiveStreamRepository extends JpaRepository<LiveStream, Long> { ...@@ -26,8 +26,8 @@ public interface LiveStreamRepository extends JpaRepository<LiveStream, Long> {
Page<LiveStream> findByTitleContaining(@Param("searchTerm") String searchTerm, Pageable pageable); Page<LiveStream> findByTitleContaining(@Param("searchTerm") String searchTerm, Pageable pageable);
@Query("SELECT new com.marketingconfort.mydressin.mydressinstreamservices.models.dtos.LiveStreamResponse(l.id, l.title, l.chatName, l.startDate, l.description, l.image, l.status) FROM LiveStream l WHERE l.status <> com.marketingconfort.mydressin.mydressinstreamservices.models.enums.LiveStatus.REVIEW AND l.status <> com.marketingconfort.mydressin.mydressinstreamservices.models.enums.LiveStatus.ARCHIVED ORDER BY l.startDate DESC") @Query("SELECT new com.marketingconfort.mydressin.mydressinstreamservices.models.dtos.LiveStreamResponse(l.id, l.title, l.chatName, l.startDate, l.description, l.image, l.status) FROM LiveStream l WHERE LIKE %:searchTerm% l.status <> com.marketingconfort.mydressin.mydressinstreamservices.models.enums.LiveStatus.REVIEW AND l.status <> com.marketingconfort.mydressin.mydressinstreamservices.models.enums.LiveStatus.ARCHIVED ORDER BY l.startDate DESC")
List<LiveStreamResponse> findAllLiveStreamsForClient(); List<LiveStreamResponse> findAllLiveStreamsForClient(@Param("searchTerm") String searchTerm ,Pageable pageable);
@Query("SELECT l FROM LiveStream l JOIN l.keysWork kw WHERE kw.keyStream = :streamKey") @Query("SELECT l FROM LiveStream l JOIN l.keysWork kw WHERE kw.keyStream = :streamKey")
Optional<LiveStream> findByStreamKey(@Param("streamKey") String streamKey); Optional<LiveStream> findByStreamKey(@Param("streamKey") String streamKey);
......
...@@ -4,6 +4,9 @@ import java.io.IOException; ...@@ -4,6 +4,9 @@ import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
...@@ -14,8 +17,8 @@ import com.marketingconfort.mydressin.mydressinstreamservices.models.enums.LiveS ...@@ -14,8 +17,8 @@ import com.marketingconfort.mydressin.mydressinstreamservices.models.enums.LiveS
import com.marketingconfort.starter.core.exceptions.S3FunctionalException; import com.marketingconfort.starter.core.exceptions.S3FunctionalException;
public interface ILiveStreamService { public interface ILiveStreamService {
public List <LiveStreamResponse> getLiveStreamsWithPaginationAndSearch( String search, LiveStatus status ,int page, int size , String sortBy, String sortOrder); public List <LiveStreamResponse> getLiveStreams( String search, LiveStatus status ,int page, int size , String sortBy, String sortOrder);
public List<LiveStreamResponse> getAllLiveStreamsForClient(); public List<LiveStreamResponse> getAllLiveStreamsForClient(String search, int page, int size, String sortBy, String sortDir) ;
public LiveStreamDto getLiveStream(Long id); public LiveStreamDto getLiveStream(Long id);
public LiveStreamResponse createLiveStream(LiveStreamDto liveStreamDto, MultipartFile image) throws S3FunctionalException, IOException; public LiveStreamResponse createLiveStream(LiveStreamDto liveStreamDto, MultipartFile image) throws S3FunctionalException, IOException;
public void startLiveStream(Long id) throws JsonProcessingException ; public void startLiveStream(Long id) throws JsonProcessingException ;
......
...@@ -10,6 +10,12 @@ import java.util.List; ...@@ -10,6 +10,12 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.marketingconfort.mydressin.common.constant.urlServiceConstant.NameUri;
import com.marketingconfort.mydressin.common.constant.urlServiceConstant.NameUrl;
import com.marketingconfort.mydressin.common.constant.urlServiceConstant.Path.StockManagerServicePath;
import com.marketingconfort.starter.core.services.MCRestTemplateService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
...@@ -60,6 +66,9 @@ public class LiveStreamService implements ILiveStreamService { ...@@ -60,6 +66,9 @@ public class LiveStreamService implements ILiveStreamService {
private final RestTemplate restTemplate; private final RestTemplate restTemplate;
private final S3FileServiceImpl s3FileService; private final S3FileServiceImpl s3FileService;
private final AWSConfigProperties awsConfigProps; private final AWSConfigProperties awsConfigProps;
private final NameUrl nameUrl;
private final MCRestTemplateService mcRestTemplateService;
Logger logger = LoggerFactory.getLogger(LiveStreamService.class);
...@@ -162,19 +171,18 @@ public class LiveStreamService implements ILiveStreamService { ...@@ -162,19 +171,18 @@ public class LiveStreamService implements ILiveStreamService {
startDto, LiveStopDto.class); startDto, LiveStopDto.class);
if (response != null) { if (response != null) {
System.out.println("Response received: " + response.toString()); logger.info("Successfully started recording: " + response.toString());
liveStream.setStartedAt(ZonedDateTime.now(ZoneOffset.UTC).toLocalDateTime()); liveStream.setStartedAt(ZonedDateTime.now(ZoneOffset.UTC).toLocalDateTime());
liveStream.setStatus(LiveStatus.ONGOING); liveStream.setStatus(LiveStatus.ONGOING);
liveStream.setFfmpegPid(response.getPid()); liveStream.setFfmpegPid(response.getPid());
liveStreamRepository.save(liveStream); liveStreamRepository.save(liveStream);
} else { } else {
System.out.println("Failed to start recording: no response received."); logger.error("Response from start-recording was null.");
} }
} catch (ResourceAccessException e) { } catch (ResourceAccessException e) {
System.err.println("Resource access error: " + e.getMessage()); logger.error("ResourceAccessException: " + e.getMessage());
} catch (Exception e) { } catch (Exception e) {
System.err.println("An unexpected error occurred: " + e.getMessage()); logger.error("Exception: " + e.getMessage());
e.printStackTrace();
} }
} }
...@@ -197,8 +205,15 @@ public class LiveStreamService implements ILiveStreamService { ...@@ -197,8 +205,15 @@ public class LiveStreamService implements ILiveStreamService {
@Override @Override
public void deleteLive(Long id) { public void deleteLive(Long liveId) {
liveStreamRepository.deleteById(id); liveStreamRepository.deleteById(liveId);
String url = nameUrl.getStockManagementService() + NameUri.STOCK + StockManagerServicePath.HIDE_LIVE_PRODUCT+"?liveId="+liveId;
try{
mcRestTemplateService.postForObject(url, null, Void.class);
} catch (Exception e) {
logger.error("Exception: " + e.getMessage());
}
} }
...@@ -229,8 +244,9 @@ public class LiveStreamService implements ILiveStreamService { ...@@ -229,8 +244,9 @@ public class LiveStreamService implements ILiveStreamService {
@Override @Override
public List<LiveStreamResponse> getAllLiveStreamsForClient() { public List<LiveStreamResponse> getAllLiveStreamsForClient(String search, int page, int size, String sortBy, String sortDir) {
return liveStreamRepository.findAllLiveStreamsForClient(); Pageable pageable = PageRequest.of(page, size, Sort.Direction.fromString(sortDir), sortBy);
return liveStreamRepository.findAllLiveStreamsForClient(search, pageable);
} }
@Override @Override
...@@ -244,8 +260,7 @@ public class LiveStreamService implements ILiveStreamService { ...@@ -244,8 +260,7 @@ public class LiveStreamService implements ILiveStreamService {
@Override @Override
public LiveStream getOnGoingLiveStream() { public LiveStream getOnGoingLiveStream() {
return liveStreamRepository.getOngoingLiveStream() return liveStreamRepository.getOngoingLiveStream().orElse(null);
.orElseThrow(EntityNotFoundException::new);
} }
private KeysWork createKeysWork(LiveStream liveStream) { private KeysWork createKeysWork(LiveStream liveStream) {
...@@ -303,7 +318,7 @@ public class LiveStreamService implements ILiveStreamService { ...@@ -303,7 +318,7 @@ public class LiveStreamService implements ILiveStreamService {
@Override @Override
public List<LiveStreamResponse> getLiveStreamsWithPaginationAndSearch(String search, LiveStatus status, int page, int size, String sortBy, String sortDir) { public List<LiveStreamResponse> getLiveStreams(String search, LiveStatus status, int page, int size, String sortBy, String sortDir) {
Pageable pageable = PageRequest.of(page, size, Sort.Direction.fromString(sortDir), sortBy); Pageable pageable = PageRequest.of(page, size, Sort.Direction.fromString(sortDir), sortBy);
Page<LiveStream> liveStreamPage; Page<LiveStream> liveStreamPage;
......
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