このページでは、エッジスクリプトで利用可能なユーティリティ関数について説明します。対象となるのは、エンコーディングとデコーディング、乱数生成、チェックサム、型変換、一意の識別子の生成です。
Base64 エンコーディングとデコーディング
エッジスクリプトは、標準 Base64 (base64_enc / base64_dec) と URL セーフ Base64 (base64_enc_safe / base64_dec_safe) の 2 種類の Base64 バリアントを提供します。一般的なエンコーディングには標準バリアントを使用し、エンコードされた文字列が URL や HTTP ヘッダーに含まれる場合は URL セーフバリアントを使用してください。
base64_enc
標準 Base64 エンコーディングを使用して文字列をエンコードします。
構文
base64_enc(s [, no_padding])パラメーター
| パラメーター | 説明 |
|---|---|
s | エンコードする文字列。 |
no_padding | パディング文字を省略するかどうかを指定します。末尾の = 文字を削除するには true に設定します。デフォルト値:false。 |
戻り値
Base64 でエンコードされた文字列を返します。
例
if $http_data {
decdata = base64_dec($http_data)
say(concat('base64_decdata=', decdata))
say(concat('base64_encdata=', base64_enc('hello, dsl')))
}リクエストヘッダー:data: aGVsbG8sIGRzbA==
出力:
base64_decdata=hello, dsl
base64_encdata=aGVsbG8sIGRzbA==base64_dec
Base64 でエンコードされた文字列をデコードします。
構文
base64_dec(s)パラメーター
| パラメーター | 説明 |
|---|---|
s | デコードする Base64 でエンコードされた文字列。 |
戻り値
デコードされた元の文字列を返します。
例
if $http_data {
decdata = base64_dec($http_data)
say(concat('base64_decdata=', decdata))
say(concat('base64_encdata=', base64_enc('hello, dsl')))
}リクエストヘッダー:data: aGVsbG8sIGRzbA==
出力:
base64_decdata=hello, dsl
base64_encdata=aGVsbG8sIGRzbA==base64_enc_safe
URL セーフ Base64 エンコーディングを使用して文字列をエンコードします。出力では、+ は - に、/ は _ に置き換えられ、パディング文字 = は削除されます。
構文
base64_enc_safe(str)パラメーター
| パラメーター | 説明 |
|---|---|
str | エンコードする文字列。 |
戻り値
URL セーフな Base64 でエンコードされた文字列を返します。
例
add_rsp_header('X-RESPOND-OUTPUT', concat('base64_enc_safe=', base64_enc_safe('hello, dsl')), true)レスポンスヘッダー:
X-RESPOND-OUTPUT: base64_enc_safe=aGVsbG8sIGRzbAbase64_dec_safe
URL セーフな Base64 でエンコードされた文字列をデコードします。デコードする前に、- は + に、_ は / に置き換えられます。文字列の長さが 4 の倍数になるように、必要に応じてパディング文字 (=) が追加されます。
構文
base64_dec_safe(str)パラメーター
| パラメーター | 説明 |
|---|---|
str | デコードする URL セーフな Base64 でエンコードされた文字列。 |
戻り値
デコードされた元の文字列を返します。
例
add_rsp_header('X-RESPOND-OUTPUT', concat('base64_dec_safe=', base64_dec_safe(base64_enc_safe('hello, dsl'))), true)レスポンスヘッダー:
X-RESPOND-OUTPUT: base64_dec_safe=hello, dslURL エンコーディングとデコーディング
url_escape
URL エンコーディング (パーセントエンコーディング) を使用して文字列をエンコードします。
構文
url_escape(s)パラメーター
| パラメーター | 説明 |
|---|---|
s | エンコードする文字列。 |
戻り値
URL エンコードされた文字列を返します。
例
raw = '/abc/123/ dd/file.m3u8'
esdata = url_escape(raw)
dsdata = url_unescape(esdata)
if eq(raw, dsdata) {
say(concat('raw=', raw))
say(concat('dsdata=', dsdata))
}出力:
raw=/abc/123/ dd/file.m3u8
esdata=%2Fabc%2F123%2F%20dd%2Ffile.m3u8
dsdata=/abc/123/ dd/file.m3u8url_unescape
URL エンコードされた文字列をデコードします。
構文
url_unescape(s)パラメーター
| パラメーター | 説明 |
|---|---|
s | デコードする URL エンコードされた文字列。 |
戻り値
デコードされた元の文字列を返します。
例
raw = '/abc/123/ dd/file.m3u8'
esdata = url_escape(raw)
dsdata = url_unescape(esdata)
if eq(raw, dsdata) {
say(concat('raw=', raw))
say(concat('dsdata=', dsdata))
}出力:
raw=/abc/123/ dd/file.m3u8
esdata=%2Fabc%2F123%2F%20dd%2Ffile.m3u8
dsdata=/abc/123/ dd/file.m3u8乱数生成
randomseed
乱数ジェネレータを初期化します。リクエストごとに異なる乱数シーケンスを保証するために、rand の前にこの関数を呼び出してください。
構文
randomseed()パラメーター
なし。
戻り値
なし。
例
randomseed()
r = rand(1, 100)rand
指定された範囲 (両端を含む) 内の乱数を返します。
構文
rand(n1, n2)パラメーター
| パラメーター | 説明 |
|---|---|
n1 | 下限。 |
n2 | 上限。 |
返される値は n1 <= result <= n2 を満たします。
戻り値
乱数を返します。
例
r = rand(1, 100)rand_hit
指定された確率に基づいて true または false を返します。これを使用して、パーセンテージベースのトラフィック分割や機能のロールアウトを実装します。
構文
rand_hit(ratio)パラメーター
| パラメーター | 説明 |
|---|---|
ratio | true を返す確率。有効値:0~100。値が 100 の場合は常に true を返し、値が 0 の場合は常に false を返します。 |
戻り値
true または false を返します。
例
rand_hit(80)rand_bytes
指定された長さのランダムな数字の文字列を生成します。
構文
rand_bytes(len)パラメーター
| パラメーター | 説明 |
|---|---|
len | 生成するランダムな数字の文字列の長さ。 |
戻り値
生成されたランダムな数字の文字列を返します。
例
rand_bytes(16)チェックサム
crc
文字列の巡回冗長検査 (CRC) 値を計算します。
構文
crc(s)パラメーター
| パラメーター | 説明 |
|---|---|
s | CRC 値を計算する文字列。 |
戻り値
入力文字列の CRC 値を返します。
例
crc('hello edgescript')型変換
tonumber
文字列を数値型に変換します。
構文
tonumber(s [, base])パラメーター
| パラメーター | 説明 |
|---|---|
s | 変換する文字列。 |
base | 数値変換の基数。有効値:10 (10 進数) および 16 (16 進数)。デフォルト値:10。 |
戻り値
数値を返します。
例
n = tonumber('100')
say(concat('tonumber()=', n))出力:
tonumber()=100一意の識別子
uuid
ランダムに生成された UUID 文字列を返します。
構文
uuid()パラメーター
なし。
戻り値
UUID 文字列を返します。例:16903a86-4173-4dea-842c-926c5860fe05。
例
say(uuid())出力:
16903a86-4173-4dea-842c-926c5860fe05