andrewducker: (overwhelming firepower)
andrewducker ([personal profile] andrewducker) wrote2011-11-24 08:07 am

Anyone here know much about Java?

I have user input for a URL field. I want them to be able to enter anything from "http://andrewducker.wordpress.com/xmlrpc.php" to "andrewducker.wordpress.com" and be able to end up at the same end point.

I've wasted a couple of hours messing around with the various constructors for URL and not got to anywhere satisfactory, should I just do string checking and construct it myself?

I should make it clear - I always want the /xmlrpc.php bit to be what's on the end of the URL, that's a Wordpress standard, so I don't need to do any complex discovery. I just need to append that if it's not there.

I was hoping that someone would have written a class that could append bits of URLs together, but the basic stuff in the built in URL class doesn't quite cut it.

[identity profile] skington.livejournal.com 2011-11-24 09:52 am (UTC)(link)
Sounds like a series of regular expressions is your best bet, then. In Perl, that would be e.g.

if ($url !~ m{^ https?:// }x) {
$url = 'http://' . $url;
}
if ($url !~ m{ /xmlrpc\.php $ }x) {
$url .= '/xmlrpc.php';
}

And then use your standard libraries to check whether that URL is valid or not. (Validation step might just be to call the resulting "url" and see if it works.)

[identity profile] pozorvlak.livejournal.com 2011-11-24 09:54 am (UTC)(link)
The https issue is easy to fix: add s? to tge regex after http. The other issue is handled already - the .* is greedy, and consumes as many characters as it can.

Of course, we're now up to two edge cases with no guarantee we've thought of them all, which is the usual weakness of regexp-based approaches.

[identity profile] pozorvlak.livejournal.com 2011-11-24 01:16 pm (UTC)(link)
Typically character-index based solutions have all of the brittleness and none of the readability of rexexp-based solutions, but in this case I think your algorithm makes sense.

[identity profile] pozorvlak.livejournal.com 2011-11-24 01:17 pm (UTC)(link)
*regexp