// Path: linkshortener-api/src/main/java/be/drissamri/service/LinkService.java
// public interface LinkService {
//   List<LinkEntity> find(int offset, int limit);
// 
//   LinkEntity create(String url);
// 
//   String findUrlByHash(String hash);
// 
//   void deleteByHash(String hash);
// }


import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
import java.net.URI;
import be.drissamri.service.LinkService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2014 Driss Amri
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */
package be.drissamri.rest;



@Component
@Path("/")
public class RedirectController {
  private LinkService service;

  @Autowired
  public RedirectController(LinkService srvc) {
    this.service = srvc;
  }

  @GET
  @Path("/{hash}")
  public Response redirect(@PathParam("hash") String hash) {
    Response response;

    final String url = service.findUrlByHash(hash);
    if (!StringUtils.isEmpty(url)) {
      URI uri = URI.create(url);
// Path: linkshortener-api/src/main/java/be/drissamri/service/LinkService.java
// public interface LinkService {
//   List<LinkEntity> find(int offset, int limit);
// 
//   LinkEntity create(String url);
// 
//   String findUrlByHash(String hash);
// 
//   void deleteByHash(String hash);
// }


// Path: linkshortener-api/src/main/java/be/drissamri/rest/RedirectController.java
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
import java.net.URI;
import be.drissamri.service.LinkService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import javax.ws.rs.GET;
import javax.ws.rs.Path;

/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2014 Driss Amri
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */
package be.drissamri.rest;



@Component
@Path("/")
public class RedirectController {
  private LinkService service;

  @Autowired
  public RedirectController(LinkService srvc) {
    this.service = srvc;
  }

  @GET
  @Path("/{hash}")
  public Response redirect(@PathParam("hash") String hash) {
    Response response;

    final String url = service.findUrlByHash(hash);
    if (!StringUtils.isEmpty(url)) {
      URI uri = URI.create(url);
      response = Response