// Path: linkshortener-web/src/main/java/be/drissamri/model/Link.java
// public class Link {
//   private String url;
//   private String hash;
//   private String shortUrl;
// 
//   public Link(String shortUrl, String url, String hash) {
//     this.shortUrl = shortUrl;
//     this.url = url;
//     this.hash = hash;
//   }
// 
//   public Link() {
// 
//   }
// 
//   public String getUrl() {
//     return url;
//   }
// 
//   public void setUrl(String url) {
//     this.url = url;
//   }
// 
//   public String getShortUrl() {
//     return shortUrl;
//   }
// 
//   public void setShortUrl(String shortUrl) {
//     this.shortUrl = shortUrl;
//   }
// 
//   public String getHash() {
//     return hash;
//   }
// 
//   public void setHash(String hash) {
//     this.hash = hash;
//   }
// 
//   @Override
//   public int hashCode() {
//     return Objects.hashCode(url);
//   }
// 
//   @Override
//   public boolean equals(Object obj) {
//     if (this == obj) {
//       return true;
//     }
//     if (obj == null || getClass() != obj.getClass()) {
//       return false;
//     }
//     final Link other = (Link) obj;
//     return Objects.equals(this.url, other.url) && Objects.equals(this.shortUrl, other.shortUrl);
//   }
// }


import be.drissamri.model.Link;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.HttpStatusCodeException;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
package be.drissamri.service;


@Service
public class LinkServiceImpl implements LinkService {
  private static final Logger LOGGER = LoggerFactory.getLogger(LinkServiceImpl.class);
  private static final String URL_PARAMETER = "url";
  private String endpoint;
  private RestTemplate client;

  @Autowired
  public LinkServiceImpl(RestTemplate clnt, @Value("${linkshortener.api.base.url}") String apiUrl) {
    this.client = clnt;
    this.endpoint = apiUrl;

    LOGGER.debug("Linkshortener API URL: {}", apiUrl);
  }

  @Override
// Path: linkshortener-web/src/main/java/be/drissamri/model/Link.java
// public class Link {
//   private String url;
//   private String hash;
//   private String shortUrl;
// 
//   public Link(String shortUrl, String url, String hash) {
//     this.shortUrl = shortUrl;
//     this.url = url;
//     this.hash = hash;
//   }
// 
//   public Link() {
// 
//   }
// 
//   public String getUrl() {
//     return url;
//   }
// 
//   public void setUrl(String url) {
//     this.url = url;
//   }
// 
//   public String getShortUrl() {
//     return shortUrl;
//   }
// 
//   public void setShortUrl(String shortUrl) {
//     this.shortUrl = shortUrl;
//   }
// 
//   public String getHash() {
//     return hash;
//   }
// 
//   public void setHash(String hash) {
//     this.hash = hash;
//   }
// 
//   @Override
//   public int hashCode() {
//     return Objects.hashCode(url);
//   }
// 
//   @Override
//   public boolean equals(Object obj) {
//     if (this == obj) {
//       return true;
//     }
//     if (obj == null || getClass() != obj.getClass()) {
//       return false;
//     }
//     final Link other = (Link) obj;
//     return Objects.equals(this.url, other.url) && Objects.equals(this.shortUrl, other.shortUrl);
//   }
// }


// Path: linkshortener-web/src/main/java/be/drissamri/service/LinkServiceImpl.java
import be.drissamri.model.Link;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.HttpStatusCodeException;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;

package be.drissamri.service;


@Service
public class LinkServiceImpl implements LinkService {
  private static final Logger LOGGER = LoggerFactory.getLogger(LinkServiceImpl.class);
  private static final String URL_PARAMETER = "url";
  private String endpoint;
  private RestTemplate client;

  @Autowired
  public LinkServiceImpl(RestTemplate clnt, @Value("${linkshortener.api.base.url}") String apiUrl) {
    this.client = clnt;
    this.endpoint = apiUrl;

    LOGGER.debug("Linkshortener API URL: {}", apiUrl);
  }

  @Override
  public Link createLink(String url) {