1个不稳定版本

0.1.0 2023年11月27日

#1743 in Web编程

BSD-2-Clause

35KB
675

trustrl

URL操作工具。


这是对trurl的修改。我喜欢这个想法,一个用于操作URL的小工具,所以我用Rust重写了它。虽然我最初打算在CLI API方面进行一对一匹配,但我在过程中做了一些修改。虽然这两个工具的功能几乎相同,但它们的API略有不同。

编译

下载 Rust 并运行

cargo build --release

输出二进制文件在 ./target/release/trustrl

工具使用

此工具接受单个URL或包含URL列表的文件的路径。对于每个URL,它将

  1. 应用一系列转换。这可能包括更改方案或主机、添加新的查询字符串元素、更改端口等。
  2. 渲染URL。这使用了两种格式
    1. 类似于 端口号是 {port} 的模板字符串,它正好按预期工作。
    2. 将URL转换为包含URL每个组件的JSON对象。

例如,使用模板字符串进行渲染

$ ./trustrl http://example.com/foo?a=b -t 'the path is {path}, the port is {port}'
the path is /foo, the port is 80

以及将相同的URL作为JSON对象渲染

./trustrl http://example.com/foo?a=b -j | jq
{
  "url": "http://example.com/foo?a=b",
  "scheme": "http",
  "host": "example.com",
  "port": 80,
  "path": "/foo",
  "query": "a=b",
  "params": [
    {
      "key": "a",
      "value": "b"
    }
  ]
}

转换

转换允许在每个URL中更改 某些内容。例如

$ ./trustrl example.com/foo --scheme https --port 1337 --append-path bar
https://example.com:1337/foo/bar

查看帮助以获取转换的完整列表。

模板键

模板字符串中支持的键有

  • url
  • scheme
  • host
  • port
  • user
  • password
  • path
  • query
  • query:parameter_name
  • fragment

帮助

/trustrl -h
Usage: trustrl [OPTIONS] <URL|--urls-path <URLS_PATH>>

Arguments:
  [URL]  The URL to be used

Options:
      --urls-path <URLS_PATH>
          A path to a list of URLs to process
  -t, --template <TEMPLATE>
          The template to be used to render the URL [default: {url}]
  -j, --to-json
          Output URLs in JSON format
  -s, --scheme <SCHEME>
          Set the URL's scheme
  -H, --host <HOST>
          Set the URL's host
  -P, --port <PORT>
          Set the URL's port
  -p, --path <PATH>
          Set the URL's path
  -u, --user <USER>
          Set the URL's user
  -S, --password <PASSWORD>
          Set the URL's password
  -f, --fragment <FRAGMENT>
          Set the URL's fragment
  -r, --redirect <REDIRECT>
          Redirect the URL to a new path
  -a, --append-path <APPEND_PATH>
          Append a new segment at the end of the path
  -q, --append-query-string <APPEND_QUERY_STRING>
          Append a new query string pair, using format `<key>[=<value>]`
  -c, --clear-query-string
          Clear the query string
      --allow-query-string <ALLOW_QUERY_STRING>
          Keep the query string keys that match this regex
      --deny-query-string <DENY_QUERY_STRING>
          Remove the query string keys that match this regex
      --sort-query-string
          Sort query string
  -h, --help
          Print help

依赖关系

~5–7MB
~151K SLoC