[NSURLSession] URLのContent-Type MIMETypeの取得
AppleScript サンプルコード
行番号 | ソース |
---|---|
001 | #!/usr/bin/env osascript |
002 | ----+----1----+----2----+-----3----+----4----+----5----+----6----+----7 |
003 | # |
004 | # com.cocolog-nifty.quicktimer.icefloe |
005 | ----+----1----+----2----+-----3----+----4----+----5----+----6----+----7 |
006 | use AppleScript version "2.8" |
007 | use framework "Foundation" |
008 | use framework "AppKit" |
009 | use framework "UniformTypeIdentifiers" |
010 | use scripting additions |
011 | property refMe : a reference to current application |
012 | |
013 | |
014 | ################################ |
015 | #ダウンロードURL |
016 | set ocidURLComponents to refMe's NSURLComponents's alloc()'s init() |
017 | ocidURLComponents's setScheme:("https") |
018 | ###ホストを追加 |
019 | ocidURLComponents's setHost:("go.microsoft.com") |
020 | ###パスを追加 |
021 | ocidURLComponents's setPath:("/fwlink/") |
022 | ##クエリー部 |
023 | set ocidQueryItems to refMe's NSMutableArray's alloc()'s initWithCapacity:(0) |
024 | ocidQueryItems's addObject:(refMe's NSURLQueryItem's alloc()'s initWithName:("linkid") value:("2093504")) |
025 | ##クエリーをセットする |
026 | ocidURLComponents's setQueryItems:(ocidQueryItems) |
027 | ##URLに戻して テキストにしておく |
028 | set ocidOpenURL to ocidURLComponents's |URL|() |
029 | set strURL to ocidOpenURL's absoluteString() as text |
030 | log strURL |
031 | ##URLに戻して テキストにしておく |
032 | set ocidURL to ocidURLComponents's |URL|() |
033 | |
034 | ################################ |
035 | # |
036 | #リクエスト |
037 | set appRequest to refMe's NSMutableURLRequest's requestWithURL:(ocidURL) |
038 | #初期設定 |
039 | set ocidConf to (refMe's NSURLSessionConfiguration's defaultSessionConfiguration) |
040 | #キュー |
041 | set appQueue to (refMe's NSOperationQueue's mainQueue) |
042 | #セッション |
043 | set appSession to refMe's NSURLSession's sessionWithConfiguration:(ocidConf) delegate:("self") delegateQueue:(appQueue) |
044 | #タスク |
045 | set appTask to appSession's dataTaskWithRequest:(appRequest) |
046 | #set appTask to appSession's dataTaskWithURL:(ocidURL) completionHandler:(missing value) |
047 | #タスク 開始 |
048 | appTask's resume() |
049 | #最大5秒のループ |
050 | repeat 5 times |
051 | #タスクのステータス取得 |
052 | set ocidStatue to appTask's state() |
053 | log ocidStatue as text |
054 | #実行中なら |
055 | if ocidStatue = (refMe's NSURLSessionTaskStateRunning as integer) then |
056 | #レスポンスの内容を取得して |
057 | set ocidResponse to appTask's response() |
058 | #まだ取得できない状態なら |
059 | if ocidResponse = (missing value) then |
060 | #1秒待つ |
061 | delay 1 |
062 | else |
063 | try |
064 | #クラスを確認(なければここでエラーになる) |
065 | log (ocidResponse's isKindOfClass:(refMe's NSHTTPURLResponse's |class|)) |
066 | #リダイレクトされたURLを取得して |
067 | set ocidRedirectURL to ocidResponse's |URL| |
068 | exit repeat |
069 | on error |
070 | delay 1 |
071 | end try |
072 | end if |
073 | end if |
074 | end repeat |
075 | #タスクをキャンセル終了する |
076 | appTask's cancel() |
077 | #戻り値 |
078 | log ocidRedirectURL's absoluteString() as text |
079 | #レスポンスが取得できたら |
080 | set ocidHeaderDict to ocidResponse's allHeaderFields() |
081 | #AllKeys |
082 | set ocidAllKeysArray to ocidHeaderDict's allKeys() |
083 | #ヘッダーの内容を順番に表示 |
084 | repeat with itemKey in ocidAllKeysArray |
085 | log (itemKey as text) & ": " & ((ocidHeaderDict's valueForKey:(itemKey)) as text) & "\r" as text |
086 | end repeat |
087 | #ヘッダーから取得したコンテンツタイプ |
088 | log (ocidHeaderDict's valueForKey:("Content-Type")) as text |
089 | #MIMEから取得したコンテンツタイプ |
090 | log ocidResponse's MIMEType() as text |
091 | |
AppleScriptで生成しました |
| 固定リンク