このページでは、EdgeScript で利用できるユーティリティ関数 (エンコーディングとデコーディング、乱数生成、チェックサム、型変換、一意の識別子の生成) について説明します。
Base64 エンコーディングとデコーディング
EdgeScript では、標準 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])パラメーター
パラメーター | 説明 |
| エンコードする文字列を指定します。 |
| パディング文字を省略するかどうかを指定します。末尾の |
戻り値
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)パラメーター
パラメーター | 説明 |
| デコードする 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)パラメーター
パラメーター | 説明 |
| エンコードする文字列を指定します。 |
戻り値
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)パラメーター
パラメーター | 説明 |
| デコードする 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)パラメーター
パラメーター | 説明 |
| エンコードする文字列を指定します。 |
戻り値
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
dsdata=/abc/123/ dd/file.m3u8url_unescape
URL エンコードされた文字列をデコードします。
構文
url_unescape(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
dsdata=/abc/123/ dd/file.m3u8乱数生成
randomseed
乱数ジェネレーターを初期化します。リクエスト間で異なる乱数列になるように、rand の前にこの関数を呼び出してください。
構文
randomseed()パラメーター
なし。
戻り値
なし。
例
randomseed()
r = rand(1, 100)rand
指定した範囲内 (両端を含む) の乱数を返します。
構文
rand(n1, n2)パラメーター
パラメーター | 説明 |
| 下限を指定します。 |
| 上限を指定します。 |
戻り値は n1 <= result <= n2 を満たします。
戻り値
乱数を返します。
例
r = rand(1, 100)rand_hit
指定した確率に基づいて true または false を返します。これを使用して、割合ベースのトラフィック分割や機能のロールアウトを実装できます。
構文
rand_hit(ratio)パラメーター
パラメーター | 説明 |
|
|
戻り値
true または false を返します。
例
rand_hit(80)rand_bytes
指定した長さのランダムなバイト文字列を生成します。
構文
rand_bytes(len)パラメーター
パラメーター | 説明 |
| 生成するランダムなバイト文字列の長さを指定します。 |
戻り値
生成されたランダムなバイト文字列を返します。
例
rand_bytes(16)チェックサム
crc
文字列の巡回冗長検査 (CRC) 値を計算します。
構文
crc(s)パラメーター
パラメーター | 説明 |
| CRC 値を計算する文字列を指定します。 |
戻り値
入力文字列の CRC 値を返します。
例
crc('hello edgescript')型変換
tonumber
文字列を数値型に変換します。
構文
tonumber(s [, base])パラメーター
パラメーター | 説明 |
| 変換する文字列を指定します。 |
| 数値変換の基数を指定します。有効な値: |
戻り値
数値を返します。
例
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