stylish-haskell formatting.
[?]
Feb 22, 2017, 8:57 PM
JFOEOFGA4CQR2LW43IVQGDZSPVJAD4KDN2DZMZXGM2QDIUD7AVCACDependencies
- [2]
MJ6R42RCUtility methods for reading key & cert data. - [3]
SEWTRB6SImplement payment request creation functions. - [4]
3GBSDS5PFix out-of-date test code, add skeleton for payments spec. - [5]
BWN72T44Don't accept work timestamp from an external source. - [6]
2XQD6KKKAdd invitation logic and clean up DBProg error handling. - [7]
O227CEAVAdds storage of original event JSON for some DBOp constructors. - [8]
Z7KS5XHHVery WIP. Wow. - [9]
NEDDHXUKReformat via stylish-haskell - [10]
QADKFHARAdds CreatePayment handler implementation. - [11]
RN7EI6INUpdate database layer to use CreditTo - [12]
EKI57EJRAdd alternative implementation of auction winner determination. - [13]
EMVTF2IWWIP moving back to snap. - [14]
Z3MK2PJ5Add GET handler for retrieving auction data. - [15]
QMRKFEPGRefactor QDB to use a free monad algebra instead. - [16]
HMDM3B55Implement core of payments/billing infrastructure. - [17]
64C6AWH6Rename Ananke -> Quixotic, project reboot. - [18]
POX3UAMTEnabling logging of time to contributor/project accounts - [19]
DFOBMSAOInitial work on payments API - [20]
NLZ3JXLOFix formatting with stylish-haskell. - [21]
NAS4BFL4Trivial stylish-haskell reformat. - [22]
HALRDT2FAdded initial auction create route. - [23]
Y3LIJ5USAdd handler for CreatePaymentRequest - [24]
O5FVTOM6Undo JSON silliness, enable a couple more routes. - [25]
Q5X5RYQLstylish-haskell reformatting - [26]
IZEVQF62Work in progress replacing sqlite with postgres. - [27]
73NDXDEZBegin implementation of billing event persistence. - [28]
V2VDN77HEnable postgres configuration via environment variable for Heroku. - [*]
W35DDBFYFactor common JSON conversions up into client lib module.
Change contents
- replacement in lib/Aftok/Billables.hs at line 1
{-# LANGUAGE TemplateHaskell #-}{-# LANGUAGE DeriveFunctor #-}{-# LANGUAGE DeriveFoldable #-}{-# LANGUAGE DeriveFoldable #-}{-# LANGUAGE DeriveFunctor #-} - edit in lib/Aftok/Billables.hs at line 4
{-# LANGUAGE TemplateHaskell #-} - replacement in lib/Aftok/Billables.hs at line 10
import Control.Lens (makeLenses, makePrisms, preview, view, _Just)import Data.List (unfoldr)import Data.Thyme.Time as Timport Control.Lens (makeLenses, makePrisms, preview, view, _Just)import Data.List (unfoldr) - edit in lib/Aftok/Billables.hs at line 13
import Data.Thyme.Time as T - replacement in lib/Aftok/Billables.hs at line 16
import Aftok (UserId)import Aftok.Project (ProjectId)import Aftok.Types (Satoshi)import Aftok (UserId)import Aftok.Project (ProjectId)import Aftok.Types (Satoshi) - replacement in lib/Aftok/Billables.hs at line 61
{ _project :: p, _creator :: u, _name :: Text, _description :: Text, _recurrence :: Recurrence, _amount :: c, _gracePeriod :: Days{ _project :: p, _creator :: u, _name :: Text, _description :: Text, _recurrence :: Recurrence, _amount :: c, _gracePeriod :: Days - replacement in lib/Aftok/Billables.hs at line 78
{ _billable :: b{ _billable :: b - replacement in lib/Aftok/Billables.hs at line 80
, _endTime :: Maybe C.UTCTime, _endTime :: Maybe C.UTCTime - replacement in lib/Aftok/Billables.hs at line 87
nextRecurrence r = case r ofnextRecurrence r = case r of - replacement in lib/Aftok/Billables.hs at line 93
{-{- - replacement in lib/Aftok/Billables.hs at line 95
- should be billed, beginning with the first day of the- should be billed, beginning with the first day of the - replacement in lib/Aftok/Database/PostgreSQL.hs at line 12
import Data.ProtocolBuffers (encodeMessage, decodeMessage)import Data.ProtocolBuffers (decodeMessage,encodeMessage) - edit in lib/Aftok/Database/PostgreSQL.hs at line 32
createSubscriptionJSON, - replacement in lib/Aftok/Database/PostgreSQL.hs at line 34
paymentRequestJSON,createSubscriptionJSON)import Aftok.Payments.TypespaymentRequestJSON)import Aftok.Payments.Types - replacement in lib/Aftok/Database/PostgreSQL.hs at line 75
nominalDiffTimeParser f v =nominalDiffTimeParser f v = - replacement in lib/Aftok/Database/PostgreSQL.hs at line 157
prec "annually" = nullField *> pure B.Annuallyprec "monthly" = B.Monthly <$> fieldprec "annually" = nullField *> pure B.Annuallyprec "monthly" = B.Monthly <$> field - replacement in lib/Aftok/Database/PostgreSQL.hs at line 160
prec "weekly" = B.Weekly <$> fieldprec "onetime" = nullField *> pure B.OneTimeprec s = fail $ "Unrecognized recurrence type: " ++ show sprec "weekly" = B.Weekly <$> fieldprec "onetime" = nullField *> pure B.OneTimeprec s = fail $ "Unrecognized recurrence type: " ++ show s - replacement in lib/Aftok/Database/PostgreSQL.hs at line 166
subscriptionParser =subscriptionParser = - replacement in lib/Aftok/Database/PostgreSQL.hs at line 172
paymentRequestParser =paymentRequestParser = - replacement in lib/Aftok/Database/PostgreSQL.hs at line 179
paymentParser =paymentParser = - replacement in lib/Aftok/Database/PostgreSQL.hs at line 457
pgEval (FindSubscription sid) =pgEval (FindSubscription sid) = - replacement in lib/Aftok/Database/PostgreSQL.hs at line 464
pgEval (FindSubscriptions uid pid) =pgEval (FindSubscriptions uid pid) = - replacement in lib/Aftok/Database/PostgreSQL.hs at line 487
pgEval (FindPaymentRequest rid) =pgEval (FindPaymentRequest rid) = - replacement in lib/Aftok/Database/PostgreSQL.hs at line 493
pgEval (FindPaymentRequests sid) =pgEval (FindPaymentRequests sid) = - replacement in lib/Aftok/Database/PostgreSQL.hs at line 513
pgEval (FindPayments rid) =pgEval (FindPayments rid) = - edit in lib/Aftok/Database.hs at line 2
{-# LANGUAGE ExplicitForAll #-} - replacement in lib/Aftok/Database.hs at line 4
{-# LANGUAGE ExplicitForAll #-}{-# LANGUAGE GADTs #-} - edit in lib/Aftok/Database.hs at line 6
{-# LANGUAGE GADTs #-} - replacement in lib/Aftok/Database.hs at line 10
import Control.Lens (view, (^.))import Control.Monad.Trans.Maybe (MaybeT(..))import Control.Lens (view, (^.))import Control.Monad.Trans.Maybe (MaybeT (..)) - replacement in lib/Aftok/Database.hs at line 13
import Data.Thyme.Clock as Cimport Data.Thyme.Clock as C - replacement in lib/Aftok/Database.hs at line 16
import Aftok.Auction as Aimport Aftok.Billables as Bimport Aftok.Auction as Aimport Aftok.Billables as B - replacement in lib/Aftok/Database.hs at line 20
import Aftok.Project as Pimport Aftok.Project as P - replacement in lib/Aftok/Database.hs at line 198
traverse findBillable subtraverse findBillable sub - edit in lib/Aftok/Json.hs at line 23
import Data.Thyme.Calendar (showGregorian) - edit in lib/Aftok/Json.hs at line 25
import Data.Thyme.Calendar (showGregorian) - replacement in lib/Aftok/Payments/Types.hs at line 1
{-# LANGUAGE TemplateHaskell #-}{-# LANGUAGE DeriveFunctor #-}{-# LANGUAGE DeriveFoldable #-}{-# LANGUAGE DeriveFoldable #-}{-# LANGUAGE DeriveFunctor #-} - edit in lib/Aftok/Payments/Types.hs at line 4
{-# LANGUAGE TemplateHaskell #-} - replacement in lib/Aftok/Payments/Types.hs at line 10
import Control.Lens (makeLenses, makePrisms)import Control.Lens (makeLenses, makePrisms) - edit in lib/Aftok/Payments/Types.hs at line 12
import Data.Thyme.Time as T - edit in lib/Aftok/Payments/Types.hs at line 13
import Data.Thyme.Time as T - edit in lib/Aftok/Payments/Types.hs at line 16
import Network.Bippy.Types (expiryTime, getPaymentDetails, getExpires) - edit in lib/Aftok/Payments/Types.hs at line 17
import Network.Bippy.Types (expiryTime, getExpires, getPaymentDetails) - replacement in lib/Aftok/Payments/Types.hs at line 19
import Aftok.Billables (SubscriptionId)import Aftok.Billables (SubscriptionId) - replacement in lib/Aftok/Payments/Types.hs at line 50
isExpired now req =isExpired now req = - replacement in lib/Aftok/Payments/Types.hs at line 52
-- using error here is reasonable since it would indicate-- using error here is reasonable since it would indicate - replacement in lib/Aftok/Payments/Types.hs at line 55[3.7377]
- replacement in lib/Aftok/Payments.hs at line 1
{-# LANGUAGE TemplateHaskell #-}{-# LANGUAGE FlexibleContexts #-}{-# LANGUAGE FlexibleContexts #-}{-# LANGUAGE MultiParamTypeClasses #-}{-# LANGUAGE TemplateHaskell #-} - replacement in lib/Aftok/Payments.hs at line 5
module Aftok.Paymentsmodule Aftok.Payments - replacement in lib/Aftok/Payments.hs at line 12
import Control.Error.Util (maybeT)import Control.Lens (makeClassy, makeClassyPrisms, view, (%~), (^.), review)import Control.Error.Util (maybeT)import Control.Lens (makeClassy, makeClassyPrisms, review,view, (%~), (^.)) - replacement in lib/Aftok/Payments.hs at line 16
import Control.Monad.Except (MonadError, throwError)import qualified Crypto.PubKey.RSA.Types as RSA (Error(..), PrivateKey)import Crypto.Random.Types (MonadRandom)import Control.Monad.Except (MonadError, throwError)import qualified Crypto.PubKey.RSA.Types as RSA (Error (..), PrivateKey)import Crypto.Random.Types (MonadRandom) - replacement in lib/Aftok/Payments.hs at line 20[5.5840]→[5.11881:11965](∅→∅),[5.11965]→[3.7654:7696](∅→∅),[3.7696]→[5.2276:2318](∅→∅),[5.11965]→[5.2276:2318](∅→∅),[5.5840]→[5.2276:2318](∅→∅)
import Data.AffineSpace ((.+^))import Data.Map.Strict (assocs)import Data.Thyme.Time as Timport Data.Thyme.Clock as Cimport Data.AffineSpace ((.+^))import Data.Map.Strict (assocs)import Data.Thyme.Clock as Cimport Data.Thyme.Time as T - replacement in lib/Aftok/Payments.hs at line 25[5.5917]→[5.12017:12053](∅→∅),[5.12053]→[5.5917:5959](∅→∅),[5.5917]→[5.5917:5959](∅→∅),[5.5959]→[5.12054:12157](∅→∅)
import qualified Network.Bippy as Bimport qualified Network.Bippy.Proto as Pimport qualified Network.Bippy.Types as BTimport Network.Haskoin.Script (ScriptOutput(..))import qualified Network.Bippy as Bimport qualified Network.Bippy.Proto as Pimport qualified Network.Bippy.Types as BTimport Network.Haskoin.Script (ScriptOutput (..)) - replacement in lib/Aftok/Payments.hs at line 31
import Aftok (UserId, BtcAddr(..), userAddress, _BtcAddr)import Aftok.Databaseimport Aftok (BtcAddr (..), UserId, userAddress,_BtcAddr) - edit in lib/Aftok/Payments.hs at line 34
import Aftok.Database - replacement in lib/Aftok/Payments.hs at line 36
import Aftok.Project (ProjectId, depf)import qualified Aftok.TimeLog as TLimport Aftok.Types (satoshi)import Aftok.Project (ProjectId, depf)import qualified Aftok.TimeLog as TLimport Aftok.Types (satoshi) - replacement in lib/Aftok/Payments.hs at line 41
{ _network :: BT.Network{ _network :: BT.Network - replacement in lib/Aftok/Payments.hs at line 43
, _pkiData :: BT.PKIData, _pkiData :: BT.PKIData - replacement in lib/Aftok/Payments.hs at line 48
{ memoGen :: Subscription' Billable -> m (Maybe Text) -- ^ generator user memo, uriGen :: Subscription' Billable -> m (Maybe URI) -- ^ generator for payment response URL{ memoGen :: Subscription' Billable -> m (Maybe Text) -- ^ generator user memo, uriGen :: Subscription' Billable -> m (Maybe URI) -- ^ generator for payment response URL - replacement in lib/Aftok/Payments.hs at line 53
data PaymentRequestStatusdata PaymentRequestStatus - replacement in lib/Aftok/Payments.hs at line 62
- replacement in lib/Aftok/Payments.hs at line 68
)) - replacement in lib/Aftok/Payments.hs at line 76
join <$> traverse (createSubscriptionPaymentRequests ops now custId) subscriptionsjoin <$> traverse (createSubscriptionPaymentRequests ops now custId) subscriptions - replacement in lib/Aftok/Payments.hs at line 78
createSubscriptionPaymentRequests ::createSubscriptionPaymentRequests :: - replacement in lib/Aftok/Payments.hs at line 83
)=> BillingOps m)=> BillingOps m - replacement in lib/Aftok/Payments.hs at line 97
createPaymentRequest ::createPaymentRequest :: - replacement in lib/Aftok/Payments.hs at line 102
)=> BillingOps m)=> BillingOps m - replacement in lib/Aftok/Payments.hs at line 119
- replacement in lib/Aftok/Payments.hs at line 127
-> [(PaymentRequestId, PaymentRequest)] -- ^ the list of existing payment requests-> [(PaymentRequestId, PaymentRequest)] -- ^ the list of existing payment requests - replacement in lib/Aftok/Payments.hs at line 133
Expired r -> if view _utctDay now > addDays (view gracePeriod b) (view billingDate r)Expired r -> if view _utctDay now > addDays (view gracePeriod b) (view billingDate r) - replacement in lib/Aftok/Payments.hs at line 137
GT -> fmap (d :) $ findUnbilledDates now b px dsGT -> fmap (d :) $ findUnbilledDates now b px ds - replacement in lib/Aftok/Payments.hs at line 145
getRequestStatus :: (MonadDB m)getRequestStatus :: (MonadDB m) - replacement in lib/Aftok/Payments.hs at line 149
getRequestStatus now (reqid, req) =getRequestStatus now (reqid, req) = - replacement in lib/Aftok/Payments.hs at line 155
createPaymentDetails :: (MonadRandom m, MonadReader r m, HasBillingConfig r, MonadDB m)createPaymentDetails :: (MonadRandom m, MonadReader r m, HasBillingConfig r, MonadDB m) - replacement in lib/Aftok/Payments.hs at line 168
pure $ B.createPaymentDetails(cfg ^. network)outputs(T.fromThyme billingTime)pure $ B.createPaymentDetails(cfg ^. network)outputs(T.fromThyme billingTime) - replacement in lib/Aftok/Payments.hs at line 173
wherewhere - replacement in lib/Aftok/Payments.hs at line 179
project' <-project' <- - replacement in lib/Aftok/Payments.hs at line 188
createPayoutsOutputs t amt p =createPayoutsOutputs t amt p = - replacement in lib/Aftok/Payments.hs at line 196
createOutputs _ (TL.CreditToAddress (BtcAddr addr)) amt =createOutputs _ (TL.CreditToAddress (BtcAddr addr)) amt = - replacement in lib/Aftok/Util.hs at line 2
{-# LANGUAGE RankNTypes #-}{-# LANGUAGE RankNTypes #-} - replacement in lib/Aftok/Util.hs at line 11
newtype Program (f :: * -> *) (a :: *) = Programnewtype Program (f :: * -> *) (a :: *) = Program - replacement in server/Aftok/QConfig.hs at line 10
import Data.X509.File (readSignedObject, readKeyFile)import Data.X509.File (readKeyFile, readSignedObject) - replacement in server/Aftok/QConfig.hs at line 21
import qualified Aftok.Payments as APimport qualified Aftok.Payments as AP - replacement in server/Aftok/QConfig.hs at line 42
{ network :: BT.Network{ network :: BT.Network - replacement in server/Aftok/QConfig.hs at line 44
, certsFile :: System.IO.FilePath, certsFile :: System.IO.FilePath - replacement in server/Aftok/QConfig.hs at line 73
readBillingConfig cfg =readBillingConfig cfg = - replacement in server/Aftok/QConfig.hs at line 79
parseNetwork _ = BT.TestNetparseNetwork _ = BT.TestNet - replacement in server/Aftok/Snaplet/Auctions.hs at line 25
import Snap.Snaplet as Simport Snap.Snaplet as S - edit in server/Aftok/Snaplet/Payments.hs at line 23
- replacement in server/Aftok/Snaplet/Payments.hs at line 24
- edit in server/Aftok/Snaplet/Payments.hs at line 27[5.17958]
- replacement in test/Aftok/Generators.hs at line 7
import Network.Haskoin.Test (ArbitraryAddress(..))import Network.Haskoin.Test (ArbitraryAddress (..)) - replacement in test/Aftok/Generators.hs at line 9
import Aftok (BtcAddr(..))import Aftok.Types (Satoshi(..))import Aftok (BtcAddr (..))import Aftok.Types (Satoshi (..))