{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE BangPatterns #-} {-# LANGUAGE BinaryLiterals #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DefaultSignatures #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveLift #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE DerivingVia #-} {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE GeneralisedNewtypeDeriving #-} {-# LANGUAGE InstanceSigs #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiWayIf #-} {-# LANGUAGE NumericUnderscores #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PackageImports #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} module Data.Multibase.Types.Internal.External.Base64 where import qualified Data.ByteString.Base64 as M_BY import qualified Data.ByteString.Lazy.Base64 as M_BL import qualified Data.ByteString.Short.Base64 as M_BS import qualified Data.Text.Encoding.Base64 as M_TX import qualified Data.Text.Lazy.Encoding.Base64 as M_TL import qualified Data.Text.Short.Encoding.Base64 as M_TS import Data.Multibase.Types.Internal.Basic #if MIN_VERSION_base64(0,5,0) import Data.Base64.Types encodeBYBase64Pad :: ByteString -> Text encodeBYBase64Pad = extractBase64 . M_BY.encodeBase64 {-# INLINE encodeBYBase64Pad #-} encodeBLBase64Pad :: ByteStringLazy -> TextLazy encodeBLBase64Pad = extractBase64 . M_BL.encodeBase64 {-# INLINE encodeBLBase64Pad #-} encodeBSBase64Pad :: ByteStringShort -> TextShort encodeBSBase64Pad = extractBase64 . M_BS.encodeBase64 {-# INLINE encodeBSBase64Pad #-} encodeBYBase64Pad' :: ByteString -> ByteString encodeBYBase64Pad' = extractBase64 . M_BY.encodeBase64' {-# INLINE encodeBYBase64Pad' #-} encodeBLBase64Pad' :: ByteStringLazy -> ByteStringLazy encodeBLBase64Pad' = extractBase64 . M_BL.encodeBase64' {-# INLINE encodeBLBase64Pad' #-} encodeBSBase64Pad' :: ByteStringShort -> ByteStringShort encodeBSBase64Pad' = extractBase64 . M_BS.encodeBase64' {-# INLINE encodeBSBase64Pad' #-} encodeTXBase64Pad :: Text -> Text encodeTXBase64Pad = extractBase64 . M_TX.encodeBase64 {-# INLINE encodeTXBase64Pad #-} encodeTLBase64Pad :: TextLazy -> TextLazy encodeTLBase64Pad = extractBase64 . M_TL.encodeBase64 {-# INLINE encodeTLBase64Pad #-} encodeTSBase64Pad :: TextShort -> TextShort encodeTSBase64Pad = extractBase64 . M_TS.encodeBase64 {-# INLINE encodeTSBase64Pad #-} decodeBYBase64Pad :: ByteString -> Either Text ByteString decodeBYBase64Pad = M_BY.decodeBase64 . (assertBase64 :: ByteString -> Base64 'StdPadded ByteString) {-# INLINE decodeBYBase64Pad #-} decodeBLBase64Pad :: ByteStringLazy -> Either Text ByteStringLazy decodeBLBase64Pad = M_BL.decodeBase64 . (assertBase64 :: ByteStringLazy -> Base64 'StdPadded ByteStringLazy) {-# INLINE decodeBLBase64Pad #-} decodeBSBase64Pad :: ByteStringShort -> Either Text ByteStringShort decodeBSBase64Pad = M_BS.decodeBase64 . (assertBase64 :: ByteStringShort -> Base64 'StdPadded ByteStringShort) {-# INLINE decodeBSBase64Pad #-} #else encodeBYBase64Pad :: ByteString -> Text encodeBYBase64Pad = M_BY.encodeBase64 {-# INLINE encodeBYBase64Pad #-} encodeBLBase64Pad :: ByteStringLazy -> TextLazy encodeBLBase64Pad = M_BL.encodeBase64 {-# INLINE encodeBLBase64Pad #-} encodeBSBase64Pad :: ByteStringShort -> TextShort encodeBSBase64Pad = M_BS.encodeBase64 {-# INLINE encodeBSBase64Pad #-} encodeBYBase64Pad' :: ByteString -> ByteString encodeBYBase64Pad' = M_BY.encodeBase64' {-# INLINE encodeBYBase64Pad' #-} encodeBLBase64Pad' :: ByteStringLazy -> ByteStringLazy encodeBLBase64Pad' = M_BL.encodeBase64' {-# INLINE encodeBLBase64Pad' #-} encodeBSBase64Pad' :: ByteStringShort -> ByteStringShort encodeBSBase64Pad' = M_BS.encodeBase64' {-# INLINE encodeBSBase64Pad' #-} encodeTXBase64Pad :: Text -> Text encodeTXBase64Pad = M_TX.encodeBase64 {-# INLINE encodeTXBase64Pad #-} encodeTLBase64Pad :: TextLazy -> TextLazy encodeTLBase64Pad = M_TL.encodeBase64 {-# INLINE encodeTLBase64Pad #-} encodeTSBase64Pad :: TextShort -> TextShort encodeTSBase64Pad = M_TS.encodeBase64 {-# INLINE encodeTSBase64Pad #-} decodeBYBase64Pad :: ByteString -> Either Text ByteString decodeBYBase64Pad = M_BY.decodeBase64 {-# INLINE decodeBYBase64Pad #-} decodeBLBase64Pad :: ByteStringLazy -> Either Text ByteStringLazy decodeBLBase64Pad = M_BL.decodeBase64 {-# INLINE decodeBLBase64Pad #-} decodeBSBase64Pad :: ByteStringShort -> Either Text ByteStringShort decodeBSBase64Pad = M_BS.decodeBase64 {-# INLINE decodeBSBase64Pad #-} #endif isValidBYBase64Pad :: ByteString -> Bool isValidBYBase64Pad = M_BY.isValidBase64 {-# INLINE isValidBYBase64Pad #-} isValidBLBase64Pad :: ByteStringLazy -> Bool isValidBLBase64Pad = M_BL.isValidBase64 {-# INLINE isValidBLBase64Pad #-} isValidBSBase64Pad :: ByteStringShort -> Bool isValidBSBase64Pad = M_BS.isValidBase64 {-# INLINE isValidBSBase64Pad #-}