Skip to content
This repository has been archived by the owner on Jan 17, 2020. It is now read-only.

Update Pathy and URI #100

Merged
merged 36 commits into from
Mar 20, 2018
Merged
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
d9c48f5
compiles
safareli Feb 16, 2018
0ff247f
add final empty segment for dir pathes
safareli Feb 16, 2018
794fe13
fix warnings in tests
safareli Feb 16, 2018
f8d02e0
compiles again
safareli Feb 26, 2018
aacdd92
test passes
safareli Feb 27, 2018
53ac539
fix warnings
safareli Feb 27, 2018
14cf8a2
Remove pathy types from Quasar.Types
safareli Feb 27, 2018
7401eed
`Incorrect` to `Could not parse`
safareli Feb 27, 2018
36422e1
fix Scheme typo
safareli Feb 27, 2018
3e43b55
use BasicCodec
safareli Feb 27, 2018
74a99fa
remove spacing
safareli Feb 27, 2018
fc7e01d
small refactorsRemoved some reexports from quasar.uri
safareli Feb 27, 2018
8a9d618
add MongoURI type
safareli Feb 27, 2018
189ffbb
Merge branch 'master' into update
safareli Feb 27, 2018
fa53800
fix build
safareli Feb 27, 2018
b22bf01
update uri
safareli Feb 28, 2018
2cf844c
Update for Data.URI -> URI namespace change
garyb Feb 28, 2018
9b96b1f
Unicode
garyb Feb 28, 2018
d82a4e7
Merge remote-tracking branch 'slamdata/master' into update
garyb Feb 28, 2018
6015a72
Fix Gen for more NES usage in URI
garyb Mar 1, 2018
74f0d80
add QURI
safareli Mar 1, 2018
8231e38
add QRelativePart
safareli Mar 2, 2018
6bae08a
Update for path-abempty change
garyb Mar 2, 2018
c3ff0cd
update printQPath type
safareli Mar 9, 2018
0e41b0c
printGroupPath ∷ GroupPath → NonEmptyString
safareli Mar 9, 2018
07a8fa4
fix build
safareli Mar 13, 2018
818acbc
remove `/` from current and parent dir segments
safareli Mar 13, 2018
ffd9668
add QURIHost' a non empty version of QURIHost
safareli Mar 14, 2018
29ce6f8
add QURIHost' and use it instead of QURIHost
safareli Mar 14, 2018
9aeba5a
`Maybe NonEmptyString` to `String`
safareli Mar 14, 2018
cb44e1c
export {parse,print}* functions used in *options
safareli Mar 14, 2018
9f8196c
fix test; review changes
safareli Mar 15, 2018
5c99c8d
use genThese from Data.These.Gen
safareli Mar 15, 2018
d2e8b93
rename printGroupPath to runGroupPath add printGroupPath and printUserId
safareli Mar 19, 2018
7e41ab2
Merge branch 'master' into update
safareli Mar 19, 2018
2033964
upse published version deps
safareli Mar 20, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,13 @@
"purescript-nonempty": "^4.1.1",
"purescript-numbers": "^5.0.0",
"purescript-oidc-crypt-utils": "^7.0.1",
"purescript-pathy": "^4.1.0",
"purescript-uri": "^4.2.3",
"purescript-sql-squared": "^0.10.0",
"purescript-const": "^3.2.0"
"purescript-pathy": "safareli/purescript-pathy#refactor",
"purescript-string-parsers": "^3.0.0",
"purescript-strings": "^3.5.0",
"purescript-uri": "garyb/purescript-uri#next",
"purescript-sql-squared": "safareli/purescript-sql-squared#pathy",
"purescript-const": "^3.2.0",
"purescript-codec": "^2.1.0"
},
"devDependencies": {
"purescript-assert": "^3.0.0",
Expand All @@ -39,5 +42,8 @@
"purescript-quickcheck": "^4.6.1",
"purescript-quasar-test-starter": "slamdata/quasar-test-starter#^1.0.0",
"purescript-quickcheck-laws": "^3.0.1"
},
"resolutions": {
"purescript-pathy": "refactor"
}
}
44 changes: 25 additions & 19 deletions src/Quasar/Advanced/Paths.purs
Original file line number Diff line number Diff line change
Expand Up @@ -16,31 +16,37 @@ limitations under the License.

module Quasar.Advanced.Paths where

import Data.Path.Pathy (RelDir, RelFile, Sandboxed, file, dir, (</>))
import Pathy (RelDir, RelFile, dir, file, (</>))
import Data.Symbol (SProxy(..))

oidcProviders ∷ RelFile Sandboxed
oidcProviders = dir "security" </> dir "oidc" </> file "providers"
oidcProviders ∷ RelFile
oidcProviders = dir (SProxy :: SProxy "security") </> dir (SProxy :: SProxy "oidc") </> file (SProxy :: SProxy "providers")

token ∷ RelDir Sandboxed
token = dir "security" </> dir "token"
token ∷ RelDir
token = dir (SProxy :: SProxy "security") </> dir (SProxy :: SProxy "token")

group ∷ RelDir Sandboxed
group = dir "security" </> dir "group"
group ∷ RelDir
group = dir (SProxy :: SProxy "security") </> dir (SProxy :: SProxy "group")

permission ∷ RelDir Sandboxed
permission = dir "security" </> dir "permission"
permission ∷ RelDir
permission = dir (SProxy :: SProxy "security") </> dir (SProxy :: SProxy "permission")

authorityRelDir Sandboxed
authority = dir "security" </> dir "authority"
childrenRelFile
children = file (SProxy :: SProxy "children")

licenseInfoRelFile Sandboxed
licenseInfo = dir "server" </> file "licenseInfo"
authorityRelDir
authority = dir (SProxy :: SProxy "security") </> dir (SProxy :: SProxy "authority")

licensee ∷ RelFile Sandboxed
licensee = dir "server" </> file "licensee"
licenseInfo ∷ RelFile
licenseInfo = dir (SProxy :: SProxy "server") </> file (SProxy :: SProxy "licenseInfo")

licensee ∷ RelFile
licensee = dir (SProxy :: SProxy "server") </> file (SProxy :: SProxy "licensee")

pdfInfo ∷ RelFile
pdfInfo = dir (SProxy :: SProxy "service") </> dir (SProxy :: SProxy "pdf") </> file (SProxy :: SProxy "info")

generatePdf ∷ RelFile
generatePdf = dir (SProxy :: SProxy "service") </> dir (SProxy :: SProxy "pdf") </> file (SProxy :: SProxy "generate")

pdfInfo ∷ RelFile Sandboxed
pdfInfo = dir "service" </> dir "pdf" </> file "info"

generatePdf ∷ RelFile Sandboxed
generatePdf = dir "service" </> dir "pdf" </> file "generate"
43 changes: 22 additions & 21 deletions src/Quasar/Advanced/QuasarAF.purs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import Data.Foldable (class Foldable, foldMap)
import Data.Functor.Coproduct (Coproduct, left, right)
import Data.Maybe (Maybe(..))
import Data.Time.Duration (Seconds)
import Pathy (AbsDir, AbsFile, AbsPath)
import Quasar.Advanced.Types as QA
import Quasar.Data (QData)
import Quasar.Data.Json (PrecisionMode(..))
Expand All @@ -42,7 +43,7 @@ import Quasar.Mount.View as View
import Quasar.QuasarF (QuasarF(..))
import Quasar.Query.OutputMeta (OutputMeta)
import Quasar.ServerInfo (ServerInfo)
import Quasar.Types (AnyPath, FilePath, DirPath, Pagination, Vars, CompileResultR)
import Quasar.Types (Pagination, Vars, CompileResultR)
import SqlSquared (SqlQuery)

data QuasarAF a
Expand Down Expand Up @@ -81,7 +82,7 @@ serverInfo =

readQuery
∷ PrecisionMode
DirPath
AbsDir
→ SqlQuery
→ Vars
→ Maybe Pagination
Expand All @@ -90,7 +91,7 @@ readQuery mode path sql vars pagination =
left $ ReadQuery mode path sql vars pagination id

readQueryEJson
DirPath
AbsDir
→ SqlQuery
→ Vars
→ Maybe Pagination
Expand All @@ -99,114 +100,114 @@ readQueryEJson path sql vars pagination =
readQuery Precise path sql vars pagination <#> resultsAsEJson

writeQuery
DirPath
FilePath
AbsDir
AbsFile
→ SqlQuery
→ Vars
→ QuasarAFCE OutputMeta
writeQuery path file sql vars =
left $ WriteQuery path file sql vars id

compileQuery
DirPath
AbsDir
→ SqlQuery
→ Vars
→ QuasarAFCE CompileResultR
compileQuery path sql vars =
left $ CompileQuery path sql vars id

fileMetadata
FilePath
AbsFile
→ QuasarAFCE Unit
fileMetadata path =
left $ FileMetadata path id

dirMetadata
DirPath
AbsDir
→ Maybe Pagination
→ QuasarAFCE (Array QResource)
dirMetadata path pagination =
left $ DirMetadata path pagination id

readFile
∷ PrecisionMode
FilePath
AbsFile
→ Maybe Pagination
→ QuasarAFCE JArray
readFile mode path pagination =
left $ ReadFile mode path pagination id

readFileEJson
FilePath
AbsFile
→ Maybe Pagination
→ QuasarAFCE (Array EJson)
readFileEJson path pagination =
readFile Precise path pagination <#> resultsAsEJson

writeFile
FilePath
AbsFile
→ QData
→ QuasarAFCE Unit
writeFile path content =
left $ WriteFile path content id

writeDir
DirPath
AbsDir
→ Blob
→ QuasarAFCE Unit
writeDir path content =
left $ WriteDir path content id

appendFile
FilePath
AbsFile
→ QData
→ QuasarAFCE Unit
appendFile path content =
left $ AppendFile path content id

deleteData
AnyPath
AbsPath
→ QuasarAFCE Unit
deleteData path =
left $ DeleteData path id

moveData
AnyPath
AnyPath
AbsPath
AbsPath
→ QuasarAFCE Unit
moveData from to =
left $ MoveData from to id

getMount
AnyPath
AbsPath
→ QuasarAFCE MountConfig
getMount path =
left $ GetMount path id

createMount
AnyPath
AbsPath
→ MountConfig
→ QuasarAFCE Unit
createMount path config =
left $ CreateMount path config Nothing id

updateMount
AnyPath
AbsPath
→ MountConfig
→ QuasarAFCE Unit
updateMount path config =
left $ UpdateMount path config Nothing id

createCachedView
AnyPath
AbsPath
→ View.Config
→ Seconds
→ QuasarAFCE Unit
createCachedView path config maxAge =
left $ CreateMount path (ViewConfig config) (Just maxAge) id

updateCachedView
AnyPath
AbsPath
→ View.Config
→ Seconds
→ QuasarAFCE Unit
Expand Down
25 changes: 12 additions & 13 deletions src/Quasar/Advanced/QuasarAF/Interpreter/Affjax.purs
Original file line number Diff line number Diff line change
Expand Up @@ -32,25 +32,24 @@ import Data.Either (Either(..))
import Data.Foldable (foldMap)
import Data.Functor.Coproduct (Coproduct, left, right, coproduct)
import Data.HTTP.Method (Method(..))
import Data.List as List
import Data.Maybe (Maybe(..), maybe)
import Data.Monoid (mempty)
import Data.Path.Pathy ((</>))
import Data.Path.Pathy as Pt
import Data.String as Str
import Data.Tuple (Tuple(..), snd)
import Data.URI as URI
import Network.HTTP.Affjax as AX
import Network.HTTP.Affjax.Request (RequestContent, toRequest)
import Network.HTTP.AffjaxF as AXF
import Network.HTTP.RequestHeader as Req
import OIDC.Crypt.Types as OIDC
import Pathy (Name(..), (</>))
import Pathy as Pt
import Quasar.Advanced.Paths as Paths
import Quasar.Advanced.QuasarAF (QuasarAFC, QuasarAF(..))
import Quasar.Advanced.QuasarAF.Interpreter.Config (Config)
import Quasar.Advanced.QuasarAF.Interpreter.Internal (mkGroupUrl)
import Quasar.Advanced.Types as Qa
import Quasar.ConfigF as CF
import Quasar.Data.URI as URI
import Quasar.Error (QResponse)
import Quasar.QuasarF.Interpreter.Affjax as QCI
import Quasar.QuasarF.Interpreter.Internal (ask, defaultRequest, jsonResult, mkRequest, mkUrl, unitResult)
Expand Down Expand Up @@ -120,15 +119,15 @@ evalQuasarAdvanced (AuthorityList k) = do
evalQuasarAdvanced (PermissionInfo pid k) = do
config ← ask
url ← mkUrl
(Right (Paths.permission </> Pt.file (Qa.runPermissionId pid)))
(URI.Query (List.singleton (Tuple "transitive" Nothing)))
(Right (Paths.permission </> Pt.file' (Name $ Qa.runPermissionId pid)))
(URI.QueryPairs [Tuple "transitive" Nothing])
map k
$ mkAuthedRequest (jsonResult >>> map Qa.runPermission)
$ _{ url = url }
evalQuasarAdvanced (PermissionChildren pid isTransitive k) = do
config ← ask
url ← mkUrl
(Right (Paths.permission </> Pt.dir (Qa.runPermissionId pid) </> Pt.file "children"))
(Right (Paths.permission </> Pt.dir' (Name $ Qa.runPermissionId pid) </> Paths.children ))
(transitiveQuery isTransitive)
map k
$ mkAuthedRequest (jsonResult >>> map (map Qa.runPermission))
Expand All @@ -145,7 +144,7 @@ evalQuasarAdvanced (SharePermission req k) = do
evalQuasarAdvanced (DeletePermission pid k) = do
config ← ask
url ← mkUrl
(Right (Paths.permission </> Pt.file (Qa.runPermissionId pid)))
(Right (Paths.permission </> Pt.file' (Name $ Qa.runPermissionId pid)))
mempty
map k
$ mkAuthedRequest unitResult
Expand All @@ -161,7 +160,7 @@ evalQuasarAdvanced (TokenList k) = do
evalQuasarAdvanced (TokenInfo tid k) = do
config ← ask
url ← mkUrl
(Right (Paths.token </> Pt.file (Qa.runTokenId tid)))
(Right (Paths.token </> Pt.file' (Name $ Qa.runTokenId tid)))
mempty
map k
$ mkAuthedRequest (jsonResult >>> map Qa.runToken)
Expand All @@ -181,7 +180,7 @@ evalQuasarAdvanced (CreateToken mbName actions k) = do
}
evalQuasarAdvanced (UpdateToken tid actions k) = do
config ← ask
url ← mkUrl (Right (Paths.token </> Pt.file (Qa.runTokenId tid))) mempty
url ← mkUrl (Right (Paths.token </> Pt.file' (Name $ Qa.runTokenId tid))) mempty
map k
$ mkAuthedRequest (jsonResult >>> map Qa.runToken)
$ _{ url = url
Expand All @@ -194,7 +193,7 @@ evalQuasarAdvanced (UpdateToken tid actions k) = do
evalQuasarAdvanced (DeleteToken tid k) = do
config ← ask
url ← mkUrl
(Right (Paths.token </> Pt.file (Qa.runTokenId tid)))
(Right (Paths.token </> Pt.file' (Name $ Qa.runTokenId tid)))
mempty
map k
$ mkAuthedRequest unitResult
Expand Down Expand Up @@ -226,9 +225,9 @@ evalQuasarAdvanced (PDFInfo k) = do
$ mkAuthedRequest (const (Right unit))
$ _{ url = url }

transitiveQuery ∷ Boolean → URI.Query
transitiveQuery ∷ Boolean → URI.QQuery
transitiveQuery b =
if b then URI.Query (List.singleton (Tuple "transitive" Nothing)) else mempty
if b then URI.QueryPairs [Tuple "transitive" Nothing] else mempty

mkAuthedRequest
∷ ∀ a r
Expand Down
6 changes: 3 additions & 3 deletions src/Quasar/Advanced/QuasarAF/Interpreter/Internal.purs
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ import Control.Monad.Free (Free)
import Data.Either (Either(..))
import Data.Functor.Coproduct (Coproduct)
import Data.Maybe (Maybe(..))
import Data.Path.Pathy (rootDir)
import Pathy (rootDir)
import Data.String as String
import Data.URI as URI
import Quasar.Data.URI as URI
import Network.HTTP.Affjax.Request (RequestContent)
import Network.HTTP.AffjaxF as AXF
import Quasar.Advanced.Paths as Paths
Expand All @@ -38,7 +38,7 @@ type AXFP = AXF.AffjaxFP RequestContent String
mkGroupUrl
∷ ∀ r
. GroupPath
→ URI.Query
→ URI.QQuery
→ Free (Coproduct (CF.ConfigF (Config r)) AXFP) String
mkGroupUrl (GroupPath gp) q = do
url ← mkFSUrl Paths.group (Left gp) q
Expand Down
Loading