01-14-2014, 01:43 PM
01-14-2014, 02:15 PM
process-resync-as-of が返す値の内容を理解できていないのが悪いのかもしれませんが、
manifest.mcurl のヘッダ情報(HttpResponseHeaders)を取得するようにしてみました。
アプレット起動後に、マニフェストファイルを取得する、というのが美しくありませんが・・・。
もっと良い方法をご存知の方がいらっしゃいましたら
教えていただけるとありがたいです。
manifest.mcurl のヘッダ情報(HttpResponseHeaders)を取得するようにしてみました。
アプレット起動後に、マニフェストファイルを取得する、というのが美しくありませんが・・・。
Code:
||対象URLの最終更新日時を取得する
{define-proc public {get-url-last-modified-time
u:#Url,
||タイムゾーン
||GMT で取得された更新日時をローカル(日本)時間に変換する
zone:DateTimeZone = DateTimeZone.local,
||レスポンスヘッダーの「最終更新日時」のキー値
||※サーバによって異なる?
last-modified-key-name:String = "Last-Modified"
}:#DateTime
let dt:#DateTime = null
{type-switch {u.resolve}
case lf:LocalFile do
||ローカルから取得された場合(file://)
set dt = lf.when-last-modified
case hf:HttpFile do
||ウェブから取得された場合(http://)
let tis:#HttpByteInputStream = null
{try
set tis = {hf.http-read-open-byte}
def headers =tis.response-headers
{for k in {headers.keys-to-Iterator} do
{if k == last-modified-key-name then
set dt = {HttpHeaders.http-header-string-to-date-time
headers[k]
}
}
}
finally
{if-non-null tis then {tis.close} }
}
}
||タイムゾーンを設定
{if-non-null dt then
set dt.zone = zone
}
{return dt}
}
{CommandButton
label = "マニフェストファイルの最終更新日時",
{on Action do
||マニフェストの取得
def m = {get-current-manifest}
{if-non-null dt = {get-url-last-modified-time m.source-url} then
{popup-message dt}
}
}
}
もっと良い方法をご存知の方がいらっしゃいましたら
教えていただけるとありがたいです。