module TwoCaptcha.Internal.Types.CapyCaptcha where

import Control.Lens (Lens', (&), (?~))
import Data.Text (Text)
import TwoCaptcha.Internal.Types.Captcha (Captcha, HasCaptchaLenses (method), HasCommonCaptchaLenses, HasPageURL, HasProxy, defaultCaptcha, mkParamLens)

-- | Parameters used to solve a capy puzzle captcha.
newtype CapyCaptcha = MkCapyCaptcha Captcha deriving (Show)

instance HasCommonCaptchaLenses CapyCaptcha

instance HasCaptchaLenses CapyCaptcha

instance HasPageURL CapyCaptcha

instance HasProxy CapyCaptcha

-- |
-- Parameters used to solve a capy puzzle captcha.
--
-- Required parameters:
--
-- * 'TwoCaptcha.Internal.Types.Captcha.apiKey'
-- * 'captchaKey'
-- * 'scriptDomain'
-- * 'TwoCaptcha.Internal.Types.Captcha.pageUrl'
--
-- Optional parameters:
--
-- * 'apiServer'
-- * 'TwoCaptcha.Internal.Types.Captcha.headerACAO'
-- * 'TwoCaptcha.Internal.Types.Captcha.pingback'
-- * 'TwoCaptcha.Internal.Types.Captcha.softId'
-- * 'TwoCaptcha.Internal.Types.Captcha.proxy'
-- * 'TwoCaptcha.Internal.Types.Captcha.proxyType'
capyCaptcha :: CapyCaptcha
capyCaptcha = MkCapyCaptcha (defaultCaptcha & method ?~ "capy")

-- | Value of __captchakey__ parameter you found on page.
captchaKey :: Lens' CapyCaptcha (Maybe Text)
captchaKey = mkParamLens "captchakey"

-- |
-- The domain part of the script URL found on page.
--
-- If not specified, defaults to: https://jp.api.capy.me/
scriptDomain :: Lens' CapyCaptcha (Maybe Text)
scriptDomain = mkParamLens "api_server"
