packages feed

yu-tool-0.1.1.30: src/Yu/Tool/Ih.hs

{-
 Copyright (C) 2017-2018 Johann Lee <me@qinka.pro>

 This file is part of Yu.

 Yu is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 Yu is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with Yu.  If not, see <http://www.gnu.org/licenses/>.
-}

{-|
Module:       Yu.Tool.Ih
Description:  The identifier helper of yu.
Copyright:    (C) 2017-2018 Johann Lee <me@qinka.pro>
License:      GPL3
Maintainer:   me@qinka.pro
Stability:    experimental
Portability:  unknown

The identifier helper of yu.
-}


{-# LANGUAGE RecordWildCards #-}

module Yu.Tool.Ih
  ( ihHandler
  ) where

import           Control.Monad        (when)
import           System.IO
import           Yu.Auth.Core         hiding (generateHash)
import qualified Yu.Auth.Core         as A
import qualified Yu.Import.ByteString as B
import           Yu.Tool.Opt

-- | Identifier helper
ihHandler :: Yu -> IO ()
ihHandler Ih{..} = case ihToken of
  Just token -> do
    cmds <- getContents
    put ihDebug $ generateHash token
  _ ->  hPutStrLn stderr "token required"
  where generateHash  = pack $ case ihHash of
          Just "sha512"      -> A.generateHash SHA512
          Just "sha384"      -> A.generateHash SHA384
          Just "sha3-512"    -> A.generateHash SHA3_512
          Just "sha3-384"    -> A.generateHash SHA3_384
          Just "sha3-256"    -> A.generateHash SHA3_256
          Just "sha3-224"    -> A.generateHash SHA3_224
          Just "sha256"      -> A.generateHash SHA256
          Just "sha224"      -> A.generateHash SHA224
          Just "sha512t-256" -> A.generateHash SHA512t_256
          Just "sha512t-224" -> A.generateHash SHA512t_224
          _                  -> A.generateHash SHA1
        pack f = B.unpack . f . B.pack
        put i t = hPutStr   stdout t
             >> when i (hPutStrLn stderr t)