packages feed

webdriver-precore-0.2.0.0: test/HTTP/HttpActionsDeprecated.hs

module HTTP.HttpActionsDeprecated
  ( 
    mkDeprecatedActions,
  )
where

import HTTP.HttpRunnerDeprecated (HttpRunnerDeprecated (..))

import  WebDriverPreCore.HTTP.Protocol qualified as P
import WebDriverPreCore.HTTP.SpecDefinition qualified as W
import HTTP.Actions (HttpActions (..))
import WebDriverPreCore.Http qualified as Legacy

mkDeprecatedActions :: HttpRunnerDeprecated -> HttpActions
mkDeprecatedActions MkHttpRunnerDeprecated {run} =
  MkHttpActions
    { -- Root methods
      status = run W.status,
      newSession = run . W.newSession,
      -- Session methods
      deleteSession = run . W.deleteSession,
      getTimeouts = run . W.getTimeouts,
      setTimeouts = sessRun W.setTimeouts,
      navigateTo = sessRun W.navigateTo,
      getCurrentUrl = run . W.getCurrentUrl,
      back = run . W.back,
      forward = run . W.forward,
      refresh = run . W.refresh,
      getTitle = run . W.getTitle,
      getWindowHandle = run . W.getWindowHandle,
      newWindow = run . W.newWindow,
      closeWindow = run . W.closeWindow,
      switchToWindow = sessRun W.switchToWindow,
      switchToFrame = sessRun W.switchToFrame,
      getPageSource = run . W.getPageSource,
      executeScript = sessRun W.executeScript,
      executeScriptAsync = sessRun W.executeScriptAsync,
      addCookie = sessRun W.addCookie,
      getAllCookies = run . W.getAllCookies,
      getNamedCookie = sessRun W.getNamedCookie,
      deleteCookie = sessRun W.deleteCookie,
      deleteAllCookies = run . W.deleteAllCookies,
      performActions = sessRun W.performActions,
      releaseActions = run . W.releaseActions,
      dismissAlert = run . W.dismissAlert,
      acceptAlert = run . W.acceptAlert,
      getAlertText = run . W.getAlertText,
      sendAlertText = sessRun W.sendAlertText,
      takeScreenshot = run . W.takeScreenshot,
      printPage = run . W.printPage,
      -- Window methods
      getWindowHandles = run . W.getWindowHandles,
      getWindowRect = run . W.getWindowRect,
      setWindowRect = sessRun W.setWindowRect,
      maximizeWindow = run . W.maximizeWindow,
      minimizeWindow = run . W.minimizeWindow,
      fullScreenWindow = run . W.fullscreenWindow,
      -- Frame methods
      switchToParentFrame = run . W.switchToParentFrame,
      -- Element(s) methods
      getActiveElement = run . W.getActiveElement,
      findElement = sessRun W.findElement,
      findElements = sessRun W.findElements,
      -- Element instance methods
      findElementFromElement = sessRun2 W.findElementFromElement,
      findElementsFromElement = sessRun2 W.findElementsFromElement,
      isElementSelected = sessRun W.isElementSelected,
      getElementAttribute = sessRun2 W.getElementAttribute,
      getElementProperty = sessRun2 W.getElementProperty,
      getElementCssValue = sessRun2 W.getElementCssValue,
      getElementShadowRoot = sessRun W.getElementShadowRoot,
      getElementText = sessRun W.getElementText,
      getElementTagName = sessRun W.getElementTagName,
      getElementRect = sessRun W.getElementRect,
      isElementEnabled = sessRun W.isElementEnabled,
      getElementComputedRole = sessRun W.getElementComputedRole,
      getElementComputedLabel = sessRun W.getElementComputedLabel,
      elementClick = sessRun W.elementClick,
      elementClear = sessRun W.elementClear,
      elementSendKeys = sessRun2 W.elementSendKeys,
      takeElementScreenshot = sessRun W.takeElementScreenshot,
      -- Shadow DOM methods
      findElementFromShadowRoot = sessRun2 W.findElementFromShadowRoot,
      findElementsFromShadowRoot = sessRun2 W.findElementsFromShadowRoot,
      -- stubs for new methods that will not be implemented withthsi API
      runCommand = \_ -> error "runCommand not implemented in legacy actions",
      runCommand' = \_ -> error "runCommand not implemented in legacy actions"
    }
  where
    sessRun :: forall a r. (Show r) => (P.Session -> a -> Legacy.HttpSpec r) -> P.Session -> a -> IO r
    sessRun f s = run . f s

    sessRun2 :: forall a b r. (Show r) => (P.Session -> a -> b -> Legacy.HttpSpec r) -> P.Session -> a -> b -> IO r
    sessRun2 f s a = run . f s a