Coverage Summary for Class: IpUtils (co.rsk.util)

Class Class, % Method, % Line, %
IpUtils 0% (0/1) 0% (0/5) 0% (0/22)


1 package co.rsk.util; 2  3 import org.apache.commons.lang3.StringUtils; 4 import org.slf4j.Logger; 5 import org.slf4j.LoggerFactory; 6  7 import java.net.InetSocketAddress; 8 import java.util.ArrayList; 9 import java.util.List; 10 import java.util.regex.Matcher; 11 import java.util.regex.Pattern; 12  13 /** 14  * Created by mario on 13/07/17. 15  */ 16 public class IpUtils { 17  private static final Logger logger = LoggerFactory.getLogger(IpUtils.class); 18  19  private static final String IPV6_INPUT_FORMAT = "^\\[(.*)\\]:([0-9]{1,})"; 20  private static final String IPV4_INPUT_FORMAT = "^([^:]*):([0-9]{1,})"; 21  private static final Pattern ipv6Pattern = Pattern.compile(IPV6_INPUT_FORMAT); 22  private static final Pattern ipv4Pattern = Pattern.compile(IPV4_INPUT_FORMAT); 23  24  25  public static InetSocketAddress parseAddress(String address) { 26  if(StringUtils.isBlank(address)) { 27  return null; 28  } 29  30  Matcher matcher = ipv6Pattern.matcher(address); 31  if(matcher.matches()) { 32  return parseMatch(matcher); 33  } 34  35  matcher = ipv4Pattern.matcher(address); 36  if (matcher.matches() && matcher.groupCount() == 2) { 37  return parseMatch(matcher); 38  } 39  40  logger.debug("Invalid address: {}. For ipv6 use de convention [address]:port. For ipv4 address:port", address); 41  return null; 42  } 43  44  public static List<InetSocketAddress> parseAddresses(List<String> addresses) { 45  List<InetSocketAddress> result = new ArrayList<>(); 46  for(String a : addresses) { 47  InetSocketAddress res = parseAddress(a); 48  if (res != null) { 49  result.add(res); 50  } 51  } 52  return result; 53  } 54  55  private static InetSocketAddress parseMatch(Matcher matcher) { 56  return new InetSocketAddress(matcher.group(1), Integer.valueOf(matcher.group(2))); 57  } 58 }