Skip to content

Commit 4289a48

Browse files
committed
Added: Internal function __WinHttpNormalizeActionURL() for readability.
1 parent 29e5d3d commit 4289a48

File tree

1 file changed

+29
-25
lines changed

1 file changed

+29
-25
lines changed

WinHttp.au3

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1191,8 +1191,7 @@ Func _WinHttpSimpleFormFill(ByRef $hInternet, $sActionPage = Default, $sFormId =
11911191
; Variables
11921192
Local $sForm, $sAttributes, $aInput
11931193
Local $iNumParams = Ceiling(($iNumArgs - 2) / 2) - 1
1194-
Local $sAddData
1195-
Local $aCrackURL, $sNewURL
1194+
Local $sAddData, $sNewURL
11961195
; Loop thru all forms on the page and find one that was specified
11971196
For $iFormOrdinal = 0 To UBound($aForm) - 1
11981197
If $fGetFormByIndex And $iFormOrdinal <> $iFormIndex Then ContinueLoop
@@ -1210,33 +1209,15 @@ Func _WinHttpSimpleFormFill(ByRef $hInternet, $sActionPage = Default, $sFormId =
12101209
$sAccept = __WinHttpAttribVal($sAttributes, "accept")
12111210
$sEnctype = __WinHttpAttribVal($sAttributes, "enctype")
12121211
$sMethod = __WinHttpAttribVal($sAttributes, "method")
1213-
If Not $sMethod Then $sMethod = "GET"
1214-
If $sMethod = "GET" Then $sEnctype = ""
1215-
$aCrackURL = _WinHttpCrackUrl($sAction)
1216-
If @error Then
1217-
If $sAction Then
1218-
If StringLeft($sAction, 1) <> "/" Then
1219-
Local $sCurrent
1220-
Local $aURL = StringRegExp($sActionPage, '(.*)/', 3)
1221-
If Not @error Then $sCurrent = $aURL[0]
1222-
If $sCurrent Then $sAction = $sCurrent & "/" & $sAction
1223-
EndIf
1224-
If StringLeft($sAction, 1) = "?" Then $sAction = $sActionPage & $sAction
1225-
EndIf
1226-
If Not $sAction Then $sAction = $sActionPage
1227-
$sAction = StringRegExpReplace($sAction, "\A(/*\.\./)*", "") ; /../
1228-
Else
1229-
$iScheme = $aCrackURL[1]
1230-
$sNewURL = $aCrackURL[0] & "://" & $aCrackURL[2] & ":" & $aCrackURL[3]
1231-
$sAction = $aCrackURL[6] & $aCrackURL[7]
1232-
EndIf
1233-
If $fVarForm And Not $sNewURL Then Return SetError(5, 0, "") ; "action" must have URL specified
12341212
; Requested form is found. Set $fSend flag to true
12351213
$fSend = True
1236-
Local $aSplit, $sBoundary, $sPassedId, $sPassedData, $iNumRepl, $fMultiPart = False, $sSubmit, $sRadio, $sCheckBox, $sButton
1237-
Local $sGrSep = Chr(29)
12381214
$aInput = StringRegExp($sForm, "(?si)<\h*(?:input|textarea|label|fieldset|legend|select|optgroup|option|button)\h*(.*?)/*\h*>", 3)
12391215
If @error Then Return SetError(2, 0, "") ; invalid form
1216+
; Workout correct URL, scheme, etc...
1217+
__WinHttpNormalizeActionURL($sActionPage, $sAction, $iScheme, $sNewURL, $sEnctype, $sMethod)
1218+
If $fVarForm And Not $sNewURL Then Return SetError(5, 0, "") ; "action" must have URL specified
1219+
Local $aSplit, $sBoundary, $sPassedId, $sPassedData, $iNumRepl, $fMultiPart = False, $sSubmit, $sRadio, $sCheckBox, $sButton
1220+
Local $sGrSep = Chr(29)
12401221
Local $aInputIds[4][UBound($aInput)]
12411222
Switch $sEnctype
12421223
Case "", "application/x-www-form-urlencoded", "text/plain"
@@ -2026,6 +2007,29 @@ Func __WinHttpHTMLDecode($vData)
20262007
Return StringReplace(StringReplace(StringReplace(StringReplace($vData, "&amp;", "&"), "&lt;", "<"), "&gt;", ">"), "&quot;", '"')
20272008
EndFunc
20282009

2010+
Func __WinHttpNormalizeActionURL($sActionPage, ByRef $sAction, ByRef $iScheme, ByRef $sNewURL, ByRef $sEnctype, ByRef $sMethod)
2011+
Local $aCrackURL = _WinHttpCrackUrl($sAction)
2012+
If @error Then
2013+
If $sAction Then
2014+
If StringLeft($sAction, 1) <> "/" Then
2015+
Local $sCurrent
2016+
Local $aURL = StringRegExp($sActionPage, '(.*)/', 3)
2017+
If Not @error Then $sCurrent = $aURL[0]
2018+
If $sCurrent Then $sAction = $sCurrent & "/" & $sAction
2019+
EndIf
2020+
If StringLeft($sAction, 1) = "?" Then $sAction = $sActionPage & $sAction
2021+
EndIf
2022+
If Not $sAction Then $sAction = $sActionPage
2023+
$sAction = StringRegExpReplace($sAction, "\A(/*\.\./)*", "") ; /../
2024+
Else
2025+
$iScheme = $aCrackURL[1]
2026+
$sNewURL = $aCrackURL[0] & "://" & $aCrackURL[2] & ":" & $aCrackURL[3]
2027+
$sAction = $aCrackURL[6] & $aCrackURL[7]
2028+
EndIf
2029+
If Not $sMethod Then $sMethod = "GET"
2030+
If $sMethod = "GET" Then $sEnctype = ""
2031+
EndFunc
2032+
20292033
Func __WinHttpFinalizeCtrls($sSubmit, $sRadio, $sCheckBox, $sButton, ByRef $sAddData, $sGrSep, $sBound = "")
20302034
If $sSubmit Then ; If no submit is specified
20312035
Local $aSubmit = StringSplit($sSubmit, $sGrSep, 3)

0 commit comments

Comments
 (0)