Merge branch 'master' into beta
Conflicts: yesod/scaffold/project.cabal.cg yesod/scaffold/tiny/project.cabal.cg
This commit is contained in:
commit
072df2f06a
1
.gitignore
vendored
1
.gitignore
vendored
@ -6,3 +6,4 @@ dist
|
||||
client_session_key.aes
|
||||
cabal-dev/
|
||||
yesod/foobar/
|
||||
yesod-platform/yesod-platform.cabal
|
||||
|
||||
@ -5,6 +5,8 @@ module Yesod.Auth.OAuth
|
||||
, oauthUrl
|
||||
, authTwitter
|
||||
, twitterUrl
|
||||
, authTumblr
|
||||
, tumblrUrl
|
||||
, module Web.Authenticate.OAuth
|
||||
) where
|
||||
|
||||
@ -101,5 +103,28 @@ authTwitter key secret = authOAuth
|
||||
twitterUrl :: AuthRoute
|
||||
twitterUrl = oauthUrl "twitter"
|
||||
|
||||
authTumblr :: YesodAuth m
|
||||
=> ByteString -- ^ Consumer Key
|
||||
-> ByteString -- ^ Consumer Secret
|
||||
-> AuthPlugin m
|
||||
authTumblr key secret = authOAuth
|
||||
(newOAuth { oauthServerName = "tumblr"
|
||||
, oauthRequestUri = "http://www.tumblr.com/oauth/request_token"
|
||||
, oauthAccessTokenUri = "http://www.tumblr.com/oauth/access_token"
|
||||
, oauthAuthorizeUri = "http://www.tumblr.com/oauth/authorize"
|
||||
, oauthSignatureMethod = HMACSHA1
|
||||
, oauthConsumerKey = key
|
||||
, oauthConsumerSecret = secret
|
||||
, oauthVersion = OAuth10a
|
||||
})
|
||||
extractCreds
|
||||
where
|
||||
extractCreds (Credential dic) = do
|
||||
let crId = decodeUtf8With lenientDecode $ fromJust $ lookup "name" dic
|
||||
return $ Creds "tumblr" crId $ map (bsToText *** bsToText ) dic
|
||||
|
||||
tumblrUrl :: AuthRoute
|
||||
tumblrUrl = oauthUrl "tumblr"
|
||||
|
||||
bsToText :: ByteString -> Text
|
||||
bsToText = decodeUtf8With lenientDecode
|
||||
|
||||
25
yesod-platform/LICENSE
Normal file
25
yesod-platform/LICENSE
Normal file
@ -0,0 +1,25 @@
|
||||
The following license covers this documentation, and the source code, except
|
||||
where otherwise indicated.
|
||||
|
||||
Copyright 2010, Michael Snoyman. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
||||
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
7
yesod-platform/Setup.lhs
Executable file
7
yesod-platform/Setup.lhs
Executable file
@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env runhaskell
|
||||
|
||||
> module Main where
|
||||
> import Distribution.Simple
|
||||
|
||||
> main :: IO ()
|
||||
> main = defaultMain
|
||||
7
yesod-platform/Yesod/Platform.hs
Normal file
7
yesod-platform/Yesod/Platform.hs
Normal file
@ -0,0 +1,7 @@
|
||||
-- | This module contains nothing import, it just re-exports @Yesod@. It is
|
||||
-- provided simply to make this a complete package.
|
||||
module Yesod.Platform
|
||||
( module Yesod
|
||||
) where
|
||||
|
||||
import Yesod
|
||||
10
yesod-platform/make-cabal.sh
Executable file
10
yesod-platform/make-cabal.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
#cabal update
|
||||
|
||||
if ! which cabal-nirvana-generate &>/dev/null
|
||||
then
|
||||
cabal install cabal-nirvana -fgenerate
|
||||
fi
|
||||
|
||||
cabal-nirvana-generate yesod | runghc to-cabal.hs > yesod-platform.cabal
|
||||
35
yesod-platform/to-cabal.hs
Normal file
35
yesod-platform/to-cabal.hs
Normal file
@ -0,0 +1,35 @@
|
||||
import Data.List (intercalate, isPrefixOf)
|
||||
import Control.Applicative ((<$>))
|
||||
|
||||
main = do
|
||||
pkgs <- map (intercalate " == ")
|
||||
. filter (\xs -> not $ ["parsec"] `isPrefixOf` xs)
|
||||
. map words
|
||||
. filter (not . null)
|
||||
. lines
|
||||
<$> getContents
|
||||
putStrLn "name: yesod-platform"
|
||||
putStrLn "version: FIXME"
|
||||
putStrLn "license: BSD3"
|
||||
putStrLn "license-file: LICENSE"
|
||||
putStrLn "author: Michael Snoyman <michael@snoyman.com>"
|
||||
putStrLn "maintainer: Michael Snoyman <michael@snoyman.com>"
|
||||
putStrLn "synopsis: Meta package for Yesod"
|
||||
putStrLn "description: Instead of allowing version ranges of dependencies, this package requires specific versions to avoid dependency hell"
|
||||
putStrLn "category: Web, Yesod"
|
||||
putStrLn "stability: Stable"
|
||||
putStrLn "cabal-version: >= 1.6"
|
||||
putStrLn "build-type: Simple"
|
||||
putStrLn "homepage: http://www.yesodweb.com/"
|
||||
putStrLn ""
|
||||
putStrLn "library"
|
||||
putStrLn " build-depends: base >= 4 && < 5"
|
||||
mapM_ go pkgs
|
||||
putStrLn ""
|
||||
putStrLn " exposed-modules: Yesod.Platform"
|
||||
putStrLn ""
|
||||
putStrLn "source-repository head"
|
||||
putStrLn " type: git"
|
||||
putStrLn " location: https://github.com/yesodweb/yesod"
|
||||
|
||||
go s = putStrLn $ concat [" , ", s]
|
||||
@ -36,7 +36,7 @@ main = do
|
||||
["touch"] -> touch
|
||||
#endif
|
||||
"devel":rest -> devel isDev rest
|
||||
["version"] -> putStrLn yesodVersion
|
||||
["version"] -> putStrLn $ "yesod-core version:" ++ yesodVersion
|
||||
"configure":rest -> rawSystem cmd ("configure":rest) >>= exitWith
|
||||
_ -> do
|
||||
putStrLn "Usage: yesod <command>"
|
||||
|
||||
@ -12,62 +12,61 @@
|
||||
#
|
||||
# * Create an empty package.json
|
||||
# echo '{ "name": "~project~", "version": "0.0.1", "dependencies": {} }' >> package.json
|
||||
#
|
||||
#
|
||||
# Postgresql Yesod setup:
|
||||
#
|
||||
# * add code to read the DATABASE_URL environment variable.
|
||||
#
|
||||
# import System.Environment
|
||||
# main = do
|
||||
# # parse env variable
|
||||
# durl <- getEnv "DATABASE_URL"
|
||||
# # pass settings to withConnectionPool instead of directly using loadConnStr
|
||||
# defaultMain (fromArgsExtra loadExtra) withYesodHeroku
|
||||
#
|
||||
# * add a dependency on the "heroku" package in your cabal file
|
||||
#
|
||||
# * add code in Application.hs to turn the url into connection parameters. The below works for Postgresql.
|
||||
#
|
||||
# #ifdef !DEVELOPMENT
|
||||
# import qualified Web.Heroku
|
||||
# #endif
|
||||
# * add code in Application.hs to use the heroku package and load the connection parameters.
|
||||
# The below works for Postgresql.
|
||||
#
|
||||
# #ifndef DEVELOPMENT
|
||||
# import qualified Web.Heroku
|
||||
# #endif
|
||||
#
|
||||
#
|
||||
# canonicalizeKey :: (Text, val) -> (Text, val)
|
||||
# canonicalizeKey ("dbname", val) = ("database", val)
|
||||
# canonicalizeKey pair = pair
|
||||
# getApplication :: AppConfig DefaultEnv Extra -> Logger -> IO Application
|
||||
# getApplication conf logger = do
|
||||
# manager <- newManager def
|
||||
# s <- staticSite
|
||||
# hconfig <- loadHerokuConfig
|
||||
# dbconf <- withYamlEnvironment "config/postgresql.yml" (appEnv conf)
|
||||
# (Database.Persist.Store.loadConfig . combineMappings hconfig) >>=
|
||||
# Database.Persist.Store.applyEnv
|
||||
# p <- Database.Persist.Store.createPoolConfig (dbconf :: Settings.PersistConfig)
|
||||
# Database.Persist.Store.runPool dbconf (runMigration migrateAll) p
|
||||
# let foundation = ~sitearg~ conf setLogger s p manager dbconf
|
||||
# app <- toWaiAppPlain foundation
|
||||
# return $ logWare app
|
||||
# where
|
||||
##ifdef DEVELOPMENT
|
||||
# logWare = logCallbackDev (logBS setLogger)
|
||||
# setLogger = logger
|
||||
##else
|
||||
# setLogger = toProduction logger -- by default the logger is set for development
|
||||
# logWare = logCallback (logBS setLogger)
|
||||
##endif
|
||||
#
|
||||
# toMapping :: [(key, val)] -> DO.Object key val
|
||||
# toMapping = DO.Mapping . map (\(key, val) -> (key, DO.Scalar val))
|
||||
# #ifndef DEVELOPMENT
|
||||
# canonicalizeKey :: (Text, val) -> (Text, val)
|
||||
# canonicalizeKey ("dbname", val) = ("database", val)
|
||||
# canonicalizeKey pair = pair
|
||||
#
|
||||
# combineMappings :: DO.Object key val -> DO.Object key val -> DO.Object key val
|
||||
# combineMappings (DO.Mapping m1) (DO.Mapping m2) = DO.Mapping $ m1 ++ m2
|
||||
# combineMappings _ _ = error "Data.Object is not a Mapping."
|
||||
# toMapping :: [(Text, Text)] -> AT.Value
|
||||
# toMapping xs = AT.Object $ M.fromList $ map (\(key, val) -> (key, AT.String val)) xs
|
||||
# #endif
|
||||
#
|
||||
# loadHerokuConfig :: DO.TextObject -> IO Settings.PersistConfig
|
||||
# loadHerokuConfig ymlenv = do
|
||||
# #if DEVELOPMENT
|
||||
# let urlMap = DO.Mapping []
|
||||
# #else
|
||||
# urlMap <- Web.Heroku.dbConnParams >>= return . toMapping . map canonicalizeKey
|
||||
# #endif
|
||||
# either error return $ Database.Persist.Base.loadConfig (combineMappings urlMap ymlenv)
|
||||
# combineMappings :: AT.Value -> AT.Value -> AT.Value
|
||||
# combineMappings (AT.Object m1) (AT.Object m2) = AT.Object $ m1 `M.union` m2
|
||||
# combineMappings _ _ = error "Data.Object is not a Mapping."
|
||||
#
|
||||
#
|
||||
# withYesodHeroku :: AppConfig DefaultEnv () -> Logger -> (Application -> IO ()) -> IO ()
|
||||
# withYesodHeroku conf logger f = do
|
||||
# s <- staticSite
|
||||
# dbconf <- withYamlEnvironment "config/postgresql.yml" (appEnv conf) loadHerokuConfig
|
||||
# Database.Persist.Base.withPool (dbconf :: Settings.PersistConfig) $ \p -> do
|
||||
# Database.Persist.Base.runPool dbconf (runMigration migrateAll) p
|
||||
# let h = YesodHeroku conf logger s p
|
||||
# defaultRunner (f . logWare) h
|
||||
# where
|
||||
# #ifdef DEVELOPMENT
|
||||
# logWare = logStdoutDev
|
||||
# #else
|
||||
# logWare = logStdout
|
||||
# #endif
|
||||
# loadHerokuConfig :: IO AT.Value
|
||||
# loadHerokuConfig = do
|
||||
# #ifdef DEVELOPMENT
|
||||
# return $ AT.Object M.empty
|
||||
# #else
|
||||
# Web.Heroku.dbConnParams >>= return . toMapping . map canonicalizeKey
|
||||
# #endif
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user