mirror of
https://github.com/gbevin/urlencoder.git
synced 2025-06-16 04:00:51 -07:00
Compare commits
7 commits
2ae47b770f
...
a5dfff64a0
Author | SHA1 | Date | |
---|---|---|---|
a5dfff64a0 | |||
c3fad893f1 | |||
c98db644bd | |||
076c95d132 | |||
76fc4b6815 | |||
4ed86c9a1d | |||
1ee9721d3c |
4 changed files with 80 additions and 56 deletions
|
@ -1,7 +1,7 @@
|
|||
[](https://opensource.org/licenses/Apache-2.0)
|
||||
[](https://s01.oss.sonatype.org/content/repositories/snapshots/com/uwyn/urlencoder/)
|
||||
[](https://github.com/gbevin/urlencoder/releases/latest)
|
||||
[](https://maven-badges.herokuapp.com/maven-central/com.uwyn/urlencoder)
|
||||
[](https://maven-badges.herokuapp.com/maven-central/com.uwyn/urlencoder)
|
||||
[](https://sonarcloud.io/dashboard?id=gbevin_urlencoder)
|
||||
[](https://github.com/gbevin/urlencoder/actions/workflows/gradle.yml)
|
||||
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
|
||||
import org.gradle.api.tasks.testing.logging.TestLogEvent
|
||||
|
||||
plugins {
|
||||
application
|
||||
`java-library`
|
||||
`maven-publish`
|
||||
signing
|
||||
|
@ -7,7 +11,10 @@ plugins {
|
|||
}
|
||||
|
||||
group = "com.uwyn"
|
||||
version = "1.0.1-SNAPSHOT"
|
||||
version = "1.1.0-SNAPSHOT"
|
||||
|
||||
val mavenName = "UrlEncoder"
|
||||
val javaMainClass = "$group.${rootProject.name}.$mavenName"
|
||||
|
||||
base {
|
||||
archivesName.set(rootProject.name)
|
||||
|
@ -16,21 +23,12 @@ base {
|
|||
java {
|
||||
withJavadocJar()
|
||||
withSourcesJar()
|
||||
toolchain {
|
||||
languageVersion.set(JavaLanguageVersion.of(11))
|
||||
}
|
||||
sourceCompatibility = JavaVersion.VERSION_11
|
||||
targetCompatibility = JavaVersion.VERSION_11
|
||||
}
|
||||
|
||||
tasks.jar {
|
||||
manifest {
|
||||
attributes["Main-Class"] = "com.uwyn.urlencoder.UrlEncoder"
|
||||
}
|
||||
}
|
||||
|
||||
tasks.jacocoTestReport {
|
||||
reports {
|
||||
xml.required.set(true)
|
||||
}
|
||||
application {
|
||||
mainClass.set(javaMainClass)
|
||||
}
|
||||
|
||||
sonarqube {
|
||||
|
@ -50,8 +48,26 @@ dependencies {
|
|||
testImplementation("org.junit.jupiter:junit-jupiter:5.9.0")
|
||||
}
|
||||
|
||||
tasks.named<Test>("test") {
|
||||
useJUnitPlatform()
|
||||
tasks {
|
||||
jar {
|
||||
manifest {
|
||||
attributes["Main-Class"] = javaMainClass
|
||||
}
|
||||
}
|
||||
|
||||
withType<Test> {
|
||||
useJUnitPlatform()
|
||||
testLogging {
|
||||
exceptionFormat = TestExceptionFormat.FULL
|
||||
events = setOf(TestLogEvent.PASSED, TestLogEvent.SKIPPED, TestLogEvent.FAILED)
|
||||
}
|
||||
}
|
||||
|
||||
jacocoTestReport {
|
||||
reports {
|
||||
xml.required.set(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
publishing {
|
||||
|
@ -60,7 +76,7 @@ publishing {
|
|||
artifactId = rootProject.name
|
||||
from(components["java"])
|
||||
pom {
|
||||
name.set("URLEncoder")
|
||||
name.set(mavenName)
|
||||
description.set("A simple library to encode/decode URL parameters")
|
||||
url.set("https://github.com/gbevin/urlencoder")
|
||||
licenses {
|
||||
|
@ -74,6 +90,7 @@ publishing {
|
|||
id.set("gbevin")
|
||||
name.set("Geert Bevin")
|
||||
email.set("gbevin@uwyn.com")
|
||||
url.set("https://github.com/gbevin")
|
||||
}
|
||||
developer {
|
||||
id.set("ethauvin")
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
package com.uwyn.urlencoder;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.BitSet;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* URL encoding and decoding.
|
||||
|
@ -229,46 +229,53 @@ public final class UrlEncoder {
|
|||
}
|
||||
}
|
||||
|
||||
static MainResult handleMain(String[] arguments) {
|
||||
var valid_arguments = true;
|
||||
if (arguments.length < 1 ||
|
||||
arguments.length > 2) {
|
||||
valid_arguments = false;
|
||||
} else if (!arguments[0].startsWith("-")) {
|
||||
if (arguments.length > 1) {
|
||||
valid_arguments = false;
|
||||
}
|
||||
} else {
|
||||
if (!arguments[0].equals("-e") &&
|
||||
!arguments[0].equals("-d")) {
|
||||
valid_arguments = false;
|
||||
static MainResult processMain(String[] arguments) {
|
||||
var valid_arguments = false;
|
||||
var perform_decode = false;
|
||||
var args = new ArrayList<>(List.of(arguments));
|
||||
if (!args.isEmpty() && args.get(0).startsWith("-")) {
|
||||
var option = args.remove(0);
|
||||
if (option.equals("-d")) {
|
||||
perform_decode = true;
|
||||
valid_arguments = true;
|
||||
} else if (option.equals("-e")) {
|
||||
valid_arguments = true;
|
||||
} else {
|
||||
args.clear();
|
||||
}
|
||||
}
|
||||
|
||||
var text = "";
|
||||
if (args.size() == 1) {
|
||||
text = args.remove(0);
|
||||
valid_arguments = true;
|
||||
}
|
||||
|
||||
if (!valid_arguments) {
|
||||
return new MainResult("Usage : java " + UrlEncoder.class.getName() + " [-ed] text" + System.lineSeparator() +
|
||||
return new MainResult("Usage : java -jar urlencoder-*.jar [-ed] text" + System.lineSeparator() +
|
||||
"Encode and decode URL parameters." + System.lineSeparator() +
|
||||
" -e encode (default)" + System.lineSeparator() +
|
||||
" -d decode", 1);
|
||||
}
|
||||
|
||||
if (1 == arguments.length) {
|
||||
return new MainResult(UrlEncoder.encode(arguments[0]), 0);
|
||||
} else if (arguments[0].equals("-e")) {
|
||||
return new MainResult(UrlEncoder.encode(arguments[1]), 0);
|
||||
if (perform_decode) {
|
||||
return new MainResult(UrlEncoder.decode(text), 0);
|
||||
} else {
|
||||
return new MainResult(UrlEncoder.encode(text), 0);
|
||||
}
|
||||
|
||||
return new MainResult(UrlEncoder.decode(arguments[1]), 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Main method to encode/decode URLs on the command line
|
||||
* @param arguments the command line arguments
|
||||
* @since 1.1
|
||||
*/
|
||||
public static void main(String[] arguments) {
|
||||
var result = handleMain(arguments);
|
||||
var result = processMain(arguments);
|
||||
if (result.status == 0) {
|
||||
System.out.println(result.output);
|
||||
System.exit(0);
|
||||
} else {
|
||||
System.err.println(result.output);
|
||||
System.exit(result.status);
|
||||
}
|
||||
System.exit(result.status);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,43 +47,43 @@ class UrlEncoderTest {
|
|||
|
||||
@Test
|
||||
void testMainNoArgs() {
|
||||
var result = UrlEncoder.handleMain(new String[0]);
|
||||
var result = UrlEncoder.processMain(new String[0]);
|
||||
assertEquals(1, result.status);
|
||||
assertTrue(result.output.contains(UrlEncoder.class.getName()));
|
||||
assertTrue(result.output.contains("Usage :"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMainTooManyArgs() {
|
||||
var result = UrlEncoder.handleMain(new String[] {"-x", "-g", "f"});
|
||||
var result = UrlEncoder.processMain(new String[] {"-x", "-g", "f"});
|
||||
assertEquals(1, result.status);
|
||||
assertTrue(result.output.contains(UrlEncoder.class.getName()));
|
||||
assertTrue(result.output.contains("Usage :"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMainWrongArgs1() {
|
||||
var result = UrlEncoder.handleMain(new String[] {"-p"});
|
||||
var result = UrlEncoder.processMain(new String[] {"-p"});
|
||||
assertEquals(1, result.status);
|
||||
assertTrue(result.output.contains(UrlEncoder.class.getName()));
|
||||
assertTrue(result.output.contains("Usage :"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMainWrongArgs2() {
|
||||
var result = UrlEncoder.handleMain(new String[] {"-x", "txt"});
|
||||
var result = UrlEncoder.processMain(new String[] {"-x", "txt"});
|
||||
assertEquals(1, result.status);
|
||||
assertTrue(result.output.contains(UrlEncoder.class.getName()));
|
||||
assertTrue(result.output.contains("Usage :"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMainWrongArgs3() {
|
||||
var result = UrlEncoder.handleMain(new String[] {"stuff", "txt"});
|
||||
var result = UrlEncoder.processMain(new String[] {"stuff", "txt"});
|
||||
assertEquals(1, result.status);
|
||||
assertTrue(result.output.contains(UrlEncoder.class.getName()));
|
||||
assertTrue(result.output.contains("Usage :"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDecodeMainOption() {
|
||||
validMap.forEach((expected, source) -> {
|
||||
var result = UrlEncoder.handleMain(new String[] {"-d", source});
|
||||
var result = UrlEncoder.processMain(new String[] {"-d", source});
|
||||
assertEquals(0, result.status);
|
||||
assertEquals(expected, result.output);
|
||||
});
|
||||
|
@ -92,7 +92,7 @@ class UrlEncoderTest {
|
|||
@Test
|
||||
void testEncodeMainDefault() {
|
||||
validMap.forEach((source, expected) -> {
|
||||
var result = UrlEncoder.handleMain(new String[] {source});
|
||||
var result = UrlEncoder.processMain(new String[] {source});
|
||||
assertEquals(0, result.status);
|
||||
assertEquals(expected, result.output);
|
||||
});
|
||||
|
@ -101,7 +101,7 @@ class UrlEncoderTest {
|
|||
@Test
|
||||
void testEncodeMainOption() {
|
||||
validMap.forEach((source, expected) -> {
|
||||
var result = UrlEncoder.handleMain(new String[] {"-e", source});
|
||||
var result = UrlEncoder.processMain(new String[] {"-e", source});
|
||||
assertEquals(0, result.status);
|
||||
assertEquals(expected, result.output);
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue