Skip to content

Commit

Permalink
LbryUri parsing improvements. Remove duplicate code.
Browse files Browse the repository at this point in the history
  • Loading branch information
akinwale committed Nov 15, 2020
1 parent 896c566 commit d0f5504
Showing 1 changed file with 12 additions and 57 deletions.
69 changes: 12 additions & 57 deletions app/src/main/java/io/lbry/browser/utils/LbryUri.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

@Data
public class LbryUri {
public static final String LBRY_TV_BASE_URL = "https://lbry.tv";
public static final String LBRY_TV_BASE_URL = "https://lbry.tv/";
public static final String PROTO_DEFAULT = "lbry://";
public static final String REGEX_INVALID_URI = "[ =&#:$@%?;/\\\\\"<>%\\{\\}|^~\\[\\]`\u0000-\u0008\u000b-\u000c\u000e-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]";
public static final String REGEX_ADDRESS = "^(b)(?=[^0OIl]{32,33})[0-9A-Za-z]{32,33}$";
Expand Down Expand Up @@ -183,7 +183,7 @@ public static LbryUri parse(String url, boolean requireProto) throws LbryUriExce
return uri;
}

public String build(boolean includeProto, String protoDefault, boolean vanity) {
public String build(boolean includeProto, String protocol, boolean vanity) {
String formattedChannelName = null;
if (channelName != null) {
formattedChannelName = channelName.startsWith("@") ? channelName : String.format("@%s", channelName);
Expand All @@ -206,7 +206,7 @@ public String build(boolean includeProto, String protoDefault, boolean vanity) {

StringBuilder sb = new StringBuilder();
if (includeProto) {
sb.append(protoDefault);
sb.append(protocol);
}
sb.append(primaryClaimName);
if (vanity) {
Expand All @@ -224,79 +224,34 @@ public String build(boolean includeProto, String protoDefault, boolean vanity) {

if (!Helper.isNullOrEmpty(primaryClaimId)) {
sb.append('#').append(primaryClaimId);
}
if (primaryClaimSequence > 0) {
} else if (primaryClaimSequence > 0) {
sb.append(':').append(primaryClaimSequence);
}
if (primaryBidPosition > 0) {
} else if (primaryBidPosition > 0) {
sb.append('$').append(primaryBidPosition);
}

if (!Helper.isNullOrEmpty(secondaryClaimName)) {
sb.append('/').append(secondaryClaimName);
}

if (!Helper.isNullOrEmpty(secondaryClaimId)) {
sb.append('#').append(secondaryClaimId);
}
if (secondaryClaimSequence > 0) {
} else if (secondaryClaimSequence > 0) {
sb.append(':').append(secondaryClaimSequence);
}
if (secondaryBidPosition > 0) {
} else if (secondaryBidPosition > 0) {
sb.append('$').append(secondaryBidPosition);
}

return sb.toString();
}

public String toTvString() {
String formattedChannelName = null;
if (channelName != null) {
formattedChannelName = channelName.startsWith("@") ? channelName : String.format("@%s", channelName);
}
String primaryClaimName = claimName;
if (Helper.isNullOrEmpty(primaryClaimName)) {
primaryClaimName = contentName;
}
if (Helper.isNullOrEmpty(primaryClaimName)) {
primaryClaimName = formattedChannelName;
}
if (Helper.isNullOrEmpty(primaryClaimName)) {
primaryClaimName = streamName;
}

String primaryClaimId = claimId;
if (Helper.isNullOrEmpty(primaryClaimId)) {
primaryClaimId = !Helper.isNullOrEmpty(formattedChannelName) ? channelClaimId : streamClaimId;
}

StringBuilder sb = new StringBuilder();
sb.append(LBRY_TV_BASE_URL).append('/');
sb.append(primaryClaimName);

String secondaryClaimName = null;
if (Helper.isNullOrEmpty(claimName) && !Helper.isNullOrEmpty(contentName)) {
secondaryClaimName = contentName;
}
if (Helper.isNullOrEmpty(secondaryClaimName)) {
secondaryClaimName = !Helper.isNullOrEmpty(formattedChannelName) ? streamName : null;
}
String secondaryClaimId = !Helper.isNullOrEmpty(secondaryClaimName) ? streamClaimId : null;

if (!Helper.isNullOrEmpty(primaryClaimId)) {
sb.append(':').append(primaryClaimId);
}
if (!Helper.isNullOrEmpty(secondaryClaimName)) {
sb.append('/').append(secondaryClaimName);
}
if (!Helper.isNullOrEmpty(secondaryClaimId)) {
sb.append(':').append(secondaryClaimId);
}
return sb.toString();
}

public static String normalize(String url) throws LbryUriException {
return parse(url).toString();
}

public String toTvString() {
return build(true, LBRY_TV_BASE_URL, false);
}
public String toVanityString() {
return build(true, PROTO_DEFAULT, true);
}
Expand Down

0 comments on commit d0f5504

Please sign in to comment.