Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package ca.qhrtech.services.implementations; import ca.qhrtech.entities.Game; import ca.qhrtech.entities.StrawPoll; import ca.qhrtech.entities.BGLTable; import ca.qhrtech.services.interfaces.PollService; import java.util.List; import java.util.stream.Collectors; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; /** * * @author bryan */ @Service("pollService") public class StrawPollServiceImpl implements PollService { private static final String STRAW_POLL_URL = "http://www.strawpoll.me/api/v2/polls"; private static final String STRAW_POLL_VISIT_URL = "http://www.strawpoll.me/"; @Override public String generatePollUrl(long pollId) { return STRAW_POLL_VISIT_URL + pollId; } @Override public long generatePollId(List<Game> games, BGLTable table) { StrawPoll poll = generateRequestBodyPoll(games, generatePollName(table)); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity<StrawPoll> request = new HttpEntity<>(poll, headers); HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); RestTemplate template = new RestTemplate(factory); ResponseEntity<StrawPoll> generatedPoll; generatedPoll = template.postForEntity(STRAW_POLL_URL, request, StrawPoll.class); return generatedPoll.getBody().getId(); } private String generatePollName(BGLTable table) { StringBuilder builder = new StringBuilder(); builder.append(table.getCreator().getUsername()).append(" "); builder.append("wants to know what you want to play at "); builder.append(table.getStartDate()); return builder.toString(); } private StrawPoll generateRequestBodyPoll(List<Game> games, String title) { StrawPoll poll = new StrawPoll(); poll.setCaptcha(false); poll.setMulti(false); poll.setTitle(title); poll.setOptions(games.stream().map(g -> g.getName()).collect(Collectors.toList())); return poll; } }