Thread Rating:
  • 205 Vote(s) - 2.82 Average
  • 1
  • 2
  • 3
  • 4
  • 5
実行されているアプレットが最新かどうかを判断するには
01-14-2014, 01:43 PM, (This post was last modified: 01-14-2014, 02:16 PM by umemura.)
#1
実行されているアプレットが最新かどうかを判断するには
Curlアプレットを実行した際に、そのアプレットが最新のソースと同期が取れているかどうかを確認したいのですが、
どのような方法があるのでしょうか。
Reply
01-14-2014, 02:15 PM,
#2
RE: 実行されているアプレットが最新かどうかを判断するには?
process-resync-as-of が返す値の内容を理解できていないのが悪いのかもしれませんが、
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}
        }
    }
}

もっと良い方法をご存知の方がいらっしゃいましたら
教えていただけるとありがたいです。
Reply

Forum Jump:


Users browsing this thread:
1 Guest(s)