Accept colon or octoshape as claimID modifier character #1208

Merged
kekkyojin merged 1 commit from claimid-modifier-char into master 2021-08-11 11:20:58 +02:00
2 changed files with 17 additions and 23 deletions

View file

@ -141,20 +141,6 @@ public class LbryUri {
boolean isChannel = includesChannel && Helper.isNullOrEmpty(possibleStreamName);
String channelName = includesChannel && streamOrChannelName.length() > 1 ? streamOrChannelName.substring(1) : null;
/*
* It would have thrown already on the RegEx parser if protocol value was incorrect
* or HTTPS host was unknown to us.
*
* [https://] hosts use ':' as ModSeparators while [lbry://] protocol expects '#'
*/
if (!components.get(1).isEmpty()) {
if (primaryModSeparator.equals(":"))
primaryModSeparator = "#";
if (secondaryModSeparator.equals(":"))
secondaryModSeparator = "#";
}
if (includesChannel) {
if (Helper.isNullOrEmpty(channelName)) {
throw new LbryUriException("No channel name after @.");
@ -329,9 +315,9 @@ public class LbryUri {
throw new LbryUriException(String.format("No modifier provided after separator %s", modSeparator));
}
if ("#".equals(modSeparator)) {
if ("#".equals(modSeparator) || ":".equals(modSeparator)) {
claimId = modValue;
} else if (":".equals(modSeparator)) {
} else if ("*".equals(modSeparator)) {
claimSequence = Helper.parseInt(modValue, -1);
} else if ("$".equals(modSeparator)) {
bidPosition = Helper.parseInt(modValue, -1);

View file

@ -10,6 +10,7 @@ import static org.junit.Assert.assertEquals;
public class LbryUriTest {
private LbryUri expected;
private LbryUri expectedOctoshape;
/*
* Create an LbryUri object and assign fields manually using class methods. This object will be
@ -18,14 +19,21 @@ public class LbryUriTest {
@Before
public void createExpected() {
expected = new LbryUri();
expectedOctoshape = new LbryUri();
expected.setChannelName("@lbry");
expected.setStreamName("lbryturns4");
expectedOctoshape.setChannelName("@lbry");
expectedOctoshape.setStreamName("lbryturns4");
try {
LbryUri.UriModifier primaryMod = LbryUri.UriModifier.parse("#", "3f");
LbryUri.UriModifier secondaryMod = LbryUri.UriModifier.parse("#", "6");
LbryUri.UriModifier primaryMod = LbryUri.UriModifier.parse(":", "3f");
LbryUri.UriModifier secondaryMod = LbryUri.UriModifier.parse(":", "6");
LbryUri.UriModifier primaryModOctoshape = LbryUri.UriModifier.parse("#", "3f");
LbryUri.UriModifier secondaryModOctoshape = LbryUri.UriModifier.parse("#", "6");
expected.setChannelClaimId(primaryMod.getClaimId());
expected.setStreamClaimId(secondaryMod.getClaimId());
expectedOctoshape.setChannelClaimId(primaryModOctoshape.getClaimId());
expectedOctoshape.setStreamClaimId(secondaryModOctoshape.getClaimId());
} catch (LbryUriException e) {
e.printStackTrace();
}
@ -71,7 +79,7 @@ public class LbryUriTest {
}
@Test
public void parseLbryProtocolWithChannel() {
public void parseLbryProtocolWithChannelOctoshape() {
LbryUri obtained = new LbryUri();
try {
@ -80,12 +88,12 @@ public class LbryUriTest {
e.printStackTrace();
}
assertEquals(expected, obtained);
assertEquals(expectedOctoshape, obtained);
}
@Test
public void parseLbryProtocolOnlyChannel() {
LbryUri expectedForChannel = sinthesizeExpected();
LbryUri expectedForChannel = sinthesizeExpectedChannelOctoshape();
LbryUri obtained = new LbryUri();
@ -100,7 +108,7 @@ public class LbryUriTest {
@Test
public void parseLbryTvProtocolOnlyChannel() {
LbryUri expectedForChannel = sinthesizeExpected();
LbryUri expectedForChannel = sinthesizeExpectedChannelOctoshape();
LbryUri obtained = new LbryUri();
@ -192,7 +200,7 @@ public class LbryUriTest {
}
@NotNull
private LbryUri sinthesizeExpected() {
private LbryUri sinthesizeExpectedChannelOctoshape() {
LbryUri expectedForChannel = new LbryUri();
expectedForChannel.setChannelName("@UCBerkeley");
expectedForChannel.setChannel(true);