package com.azimo.tool.task.uploader;
import com.azimo.tool.firebase.collection.ReportedReviewsCollection;
import com.azimo.tool.publisher.collection.ReviewCollection;
import com.azimo.tool.publisher.model.AppReview;
import com.azimo.tool.slack.SlackServiceManager;
import com.azimo.tool.slack.model.SlackMessage;
import com.azimo.tool.slack.response.SlackPostMessageResponse;
import com.azimo.tool.task.interfaces.Uploader;
import com.azimo.tool.utils.converter.MessageConverter;
import com.azimo.tool.utils.converter.ReviewConverter;
/**
* Created by F1sherKK on 27/01/17.
*/
public class SlackUploader implements Uploader<ReviewCollection, ReportedReviewsCollection> {
private MessageConverter messageConverter;
private ReviewConverter reviewConverter;
private SlackServiceManager slackServiceManager;
public SlackUploader(MessageConverter messageConverter,
ReviewConverter reviewConverter,
SlackServiceManager slackServiceManager) {
this.messageConverter = messageConverter;
this.reviewConverter = reviewConverter;
this.slackServiceManager = slackServiceManager;
}
@Override
public ReportedReviewsCollection upload(ReviewCollection unreportedReviews) {
ReportedReviewsCollection reportedReviewsCollection = new ReportedReviewsCollection();
for (AppReview unreportedReview : unreportedReviews.sortAscendingByCreatedTime()) {
SlackMessage slackMessage = messageConverter.slackMessageFromAppReview(unreportedReview);
SlackPostMessageResponse response = slackServiceManager.sendMessage(slackMessage);
if (response.wasSuccess()) {
reportedReviewsCollection.add(reviewConverter.reportedReviewFromAppReview(unreportedReview));
}
}
return reportedReviewsCollection;
}
}