Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

README.md

url.h

Parse URLs much like Node's url module.

usage

#include <url.h>

example

#include <url.h>

int
main (void) {
  url_data_t *parsed = url_parse("http://user:pass@host.com:8080/p/a/t/h?query=string#hash");

  url_free(parsed);
}

The url_data_t * holds the parsed values and can be written to stdout with url_inspect(parsed);

url_inspect(parsed);

output

#url =>
    .href: "http://user:pass@subdomain.host.com:8080/p/a/t/h?query=string#hash"
    .protocol: "http"
    .host: "subdomain.host.com"
    .auth: "user:pass"
    .hostname: "subdomain.host.com:8080"
    .pathname: "/p/a/t/h"
    .search: "?query=string"
    .path: "/p/a/t/h?query=string#hash"
    .hash: "#hash"
    .query: "query=string"
    .port: "8080"

api

url_parse(url);

Parses a url into parts and returns a url_data_t * pointer`.

url_data_t *
url_parse (char *url);

example

url_data_t *parsed = url_parse("http://google.com");

url_get_protocol(url);

Returns the protocol part of a url.

char *
url_get_protocol (char *url);

example

char *protocol = url_get_protocol("https://github.com"); // https

url_get_auth(url);

Returns the auth part of a url.

char *
url_get_auth (char *url);

example

char *auth = url_get_auth("sftp://user:password@domain.com:5000/path/to/directory"); // user:password

url_get_hostname(url);

Returns the hostname part of a url.

char *
url_get_hostname (char *url);

example

char *hostname = url_get_hostname("http://john@website.host.com:3000/index.html"); // website.host.com:3000

url_get_host(url);

Returns the host part of a url.

char *
url_get_host (char *url);

example

char *host = url_get_host("https://cache.us.site.com:4444/pixel.gif"); // cache.us.site.com

url_get_pathname(url);

Returns the pathname part of a url.

char *
url_get_pathname (char *url);

example

char *pathname =  url_get_pathname("http://github.com/jwerle/url.h"); // /jwerle/url.h

url_get_path(url);

Returns the path part of a url.

char *
url_get_path (char *url);

example

char *path = url_get_path("https://socialnetwork.com/login?user=jwerle"); // /login?user=jwerle

url_get_search(url);

Returns the search part of a url.

char *
url_get_search (char *url);

example

char *search = url_get_search("https://www.google.com/search?q=hack"); // ?q=hack

url_get_query(url);

char *
url_get_query (char *url);

example

char *query = url_get_query("http://site.com/home?ref=stream&id=12345"); // ref=stream&id=12345

url_get_hash(url);

Returns the hash part of a url.

char *
url_get_hash (char *url);

example

char *hash = url_get_hash("http://single-page-app.com/#page=home&id=12345"); // #page=home&id=12345

url_get_port(url);

Returns the port part of a url.

char *
url_get_port (char *url);

example

char *port = url_get_port("https://site.com:9000"); // 9000

url_free(data);

Frees a url_data_t pointer.

void
url_free (url_data_t *data);

example

url_free(parsed);

url_is_protocol(str);

Checks if given input is a valid url protocol.

bool
url_is_protocol (char *str);

example

assert(url_is_protocol("https"));
assert(! url_is_protocol("foo"));

url_inspect(url);

Parses and prints all parts of a url.

void
url_inspect (char *url);

example

url_inspect("https://google.com/search?q=github");

output

#url =>
    .href: "https://google.com/search?q=github"
    .protocol: "https"
    .host: "google.com"
    .auth: ""
    .hostname: "google.com"
    .pathname: "/search"
    .search: "?q=github"
    .path: "/search?q=github"
    .hash: ""
    .query: "q=github"
    .port: ""

url_data_inspect(data);

Prints all parts of a parsed url from a url_data_t pointer.

void
url_data_inspect (url_data_t *data);

example

url_data_inspect(parsed);

output

#url =>
    .href: "http://user:pass@subdomain.host.com:8080/p/a/t/h?query=string#hash"
    .protocol: "http"
    .host: "subdomain.host.com"
    .auth: "user:pass"
    .hostname: "subdomain.host.com:8080"
    .pathname: "/p/a/t/h"
    .search: "?query=string"
    .path: "/p/a/t/h?query=string#hash"
    .hash: "#hash"
    .query: "query=string"
    .port: "8080"

url_is_ssh(protocol);

Checks if a given protocol is an ssh protocol like ssh or git

bool
url_is_ssh (char *str);

example

bool is_ssh = url_is_ssh(url_get_protocol(url));

licence

MIT

About

Parse URLs in C much like Node's url module.

Topics

Resources

Releases

No releases published

Packages

No packages published

Languages

You can’t perform that action at this time.