Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
haskell-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
160
Issues
160
List
Board
Labels
Milestones
Merge Requests
14
Merge Requests
14
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
haskell-gargantext
Commits
c0fe2e51
Verified
Commit
c0fe2e51
authored
Jan 14, 2025
by
Przemyslaw Kaminski
1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[query] move EPO user/token into the datafield
This simplifies the WithQuery structure even more
parent
93586adc
Pipeline
#7211
failed with stages
in 51 minutes and 40 seconds
Changes
7
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
45 additions
and
36 deletions
+45
-36
Types.hs
src/Gargantext/API/Admin/Orchestrator/Types.hs
+12
-3
New.hs
src/Gargantext/API/Node/Corpus/New.hs
+2
-7
Types.hs
src/Gargantext/API/Node/Corpus/Types.hs
+20
-11
Types.hs
src/Gargantext/API/Node/Types.hs
+0
-3
API.hs
src/Gargantext/Core/Text/Corpus/API.hs
+5
-4
Flow.hs
src/Gargantext/Database/Action/Flow.hs
+4
-6
Instances.hs
test/Test/Instances.hs
+2
-2
No files found.
src/Gargantext/API/Admin/Orchestrator/Types.hs
View file @
c0fe2e51
...
...
@@ -29,6 +29,9 @@ import PUBMED.Types qualified as PUBMED
import
Test.QuickCheck
(
elements
)
import
Test.QuickCheck.Arbitrary
type
EPOAPIToken
=
Text
type
EPOAPIUser
=
Text
------------------------------------------------------------------------
-- | Main Types
-- TODO IsidoreAuth
...
...
@@ -38,7 +41,7 @@ data ExternalAPIs = OpenAlex
|
HAL
|
IsTex
|
Isidore
|
EPO
|
EPO
(
Maybe
EPOAPIUser
)
(
Maybe
EPOAPIToken
)
deriving
(
Show
,
Eq
,
Generic
)
...
...
@@ -55,11 +58,17 @@ instance FromJSON ExternalAPIs where
"HAL"
->
pure
HAL
"IsTex"
->
pure
IsTex
"Isidore"
->
pure
Isidore
"EPO"
->
pure
EPO
"EPO"
->
do
mAPIUser
<-
o
.:?
"api_user"
mAPIToken
<-
o
.:?
"api_token"
pure
$
EPO
mAPIUser
mAPIToken
s
->
unexpected
(
String
s
)
instance
ToJSON
ExternalAPIs
where
toJSON
(
PubMed
mAPIKey
)
=
object
[
"db"
.=
toJSON
(
"PubMed"
::
Text
)
,
"api_key"
.=
toJSON
mAPIKey
]
toJSON
(
EPO
mAPIUser
mAPIToken
)
=
object
[
"db"
.=
toJSON
(
"EPO"
::
Text
)
,
"api_user"
.=
toJSON
mAPIUser
,
"api_token"
.=
toJSON
mAPIToken
]
toJSON
t
=
object
[
"db"
.=
toJSON
(
show
t
::
Text
)
]
externalAPIs
::
[
ExternalAPIs
]
...
...
@@ -70,7 +79,7 @@ externalAPIs =
,
HAL
,
IsTex
,
Isidore
,
EPO
]
,
EPO
Nothing
Nothing
]
instance
ToSchema
ExternalAPIs
where
declareNamedSchema
=
genericDeclareNamedSchemaUnrestricted
defaultSchemaOptions
...
...
src/Gargantext/API/Node/Corpus/New.hs
View file @
c0fe2e51
...
...
@@ -27,7 +27,6 @@ import Data.Conduit.Internal (zipSources)
import
Data.Swagger
(
ToSchema
(
..
)
)
import
Data.Text
qualified
as
T
import
Data.Text.Encoding
qualified
as
TE
import
EPO.API.Client.Types
qualified
as
EPO
import
Gargantext.API.Admin.Orchestrator.Types
qualified
as
API
import
Gargantext.API.Ngrams
(
commitStatePatch
,
Versioned
(
..
))
import
Gargantext.API.Node.Corpus.New.Types
(
FileFormat
(
..
),
FileType
(
..
)
)
...
...
@@ -157,16 +156,12 @@ addToCorpusWithQuery :: ( FlowCmdM env err m
addToCorpusWithQuery
user
cid
(
WithQuery
{
_wq_query
=
q
,
_wq_datafield
=
datafield
,
_wq_lang
=
l
,
_wq_flowListWith
=
flw
,
..
})
maybeLimit
jobHandle
=
do
,
_wq_flowListWith
=
flw
})
maybeLimit
jobHandle
=
do
-- TODO ...
$
(
logLocM
)
DEBUG
$
"[addToCorpusWithQuery] cid "
<>
show
cid
$
(
logLocM
)
DEBUG
$
"[addToCorpusWithQuery] datafield "
<>
show
datafield
$
(
logLocM
)
DEBUG
$
"[addToCorpusWithQuery] flowListWith "
<>
show
flw
let
mEPOAuthKey
=
EPO
.
AuthKey
<$>
(
EPO
.
User
<$>
_wq_epoAPIUser
)
<*>
(
EPO
.
Token
<$>
_wq_epoAPIToken
)
$
(
logLocM
)
DEBUG
$
"[addToCorpusWithQuery] addLanguageToCorpus "
<>
show
cid
<>
", "
<>
show
l
addLanguageToCorpus
cid
l
$
(
logLocM
)
DEBUG
"[addToCorpusWithQuery] after addLanguageToCorpus"
...
...
@@ -192,7 +187,7 @@ addToCorpusWithQuery user cid (WithQuery { _wq_query = q
let
db
=
datafield2origin
datafield
-- mPubmedAPIKey <- getUserPubmedAPIKey user
-- printDebug "[addToCorpusWithQuery] mPubmedAPIKey" mPubmedAPIKey
eTxt
<-
getDataText
db
(
Multi
l
)
q
m
EPOAuthKey
m
aybeLimit
eTxt
<-
getDataText
db
(
Multi
l
)
q
maybeLimit
-- printDebug "[G.A.N.C.New] lTxts" lTxts
case
eTxt
of
...
...
src/Gargantext/API/Node/Corpus/Types.hs
View file @
c0fe2e51
...
...
@@ -22,6 +22,9 @@ import Gargantext.Database.Action.Flow.Types (DataOrigin(..))
import
Gargantext.Prelude
import
PUBMED.Types
qualified
as
PUBMED
type
EPOAPIToken
=
Text
type
EPOAPIUser
=
Text
data
Database
=
Empty
|
OpenAlex
|
PubMed
(
Maybe
PUBMED
.
APIKey
)
...
...
@@ -29,7 +32,7 @@ data Database = Empty
|
HAL
|
IsTex
|
Isidore
|
EPO
|
EPO
(
Maybe
EPOAPIUser
)
(
Maybe
EPOAPIToken
)
deriving
(
Eq
,
Show
,
Generic
)
instance
FromJSON
Database
where
...
...
@@ -45,26 +48,32 @@ instance FromJSON Database where
"HAL"
->
pure
HAL
"IsTex"
->
pure
IsTex
"Isidore"
->
pure
Isidore
"EPO"
->
pure
EPO
"EPO"
->
do
mAPIUser
<-
o
.:?
"api_user"
mAPIToken
<-
o
.:?
"api_token"
pure
$
EPO
mAPIUser
mAPIToken
s
->
unexpected
(
String
s
)
instance
ToJSON
Database
where
toJSON
(
PubMed
mAPIKey
)
=
object
[
"db"
.=
toJSON
(
"PubMed"
::
Text
)
,
"api_key"
.=
toJSON
mAPIKey
]
toJSON
(
EPO
mAPIUser
mAPIToken
)
=
object
[
"db"
.=
toJSON
(
"EPO"
::
Text
)
,
"api_user"
.=
toJSON
mAPIUser
,
"api_token"
.=
toJSON
mAPIToken
]
toJSON
t
=
object
[
"db"
.=
toJSON
(
show
t
::
Text
)
]
instance
ToSchema
Database
where
declareNamedSchema
=
genericDeclareNamedSchemaUnrestricted
defaultSchemaOptions
datafield2origin
::
Datafield
->
DataOrigin
datafield2origin
(
External
Empty
)
=
InternalOrigin
Types
.
IsTex
datafield2origin
(
External
OpenAlex
)
=
ExternalOrigin
Types
.
OpenAlex
datafield2origin
(
External
(
PubMed
mAPIKey
))
=
ExternalOrigin
(
Types
.
PubMed
mAPIKey
)
datafield2origin
(
External
Arxiv
)
=
ExternalOrigin
Types
.
Arxiv
datafield2origin
(
External
HAL
)
=
ExternalOrigin
Types
.
HAL
datafield2origin
(
External
IsTex
)
=
ExternalOrigin
Types
.
IsTex
datafield2origin
(
External
Isidore
)
=
ExternalOrigin
Types
.
Isidore
datafield2origin
(
External
EPO
)
=
ExternalOrigin
Types
.
EPO
datafield2origin
(
External
Empty
)
=
InternalOrigin
Types
.
IsTex
datafield2origin
(
External
OpenAlex
)
=
ExternalOrigin
Types
.
OpenAlex
datafield2origin
(
External
(
PubMed
mAPIKey
))
=
ExternalOrigin
(
Types
.
PubMed
mAPIKey
)
datafield2origin
(
External
Arxiv
)
=
ExternalOrigin
Types
.
Arxiv
datafield2origin
(
External
HAL
)
=
ExternalOrigin
Types
.
HAL
datafield2origin
(
External
IsTex
)
=
ExternalOrigin
Types
.
IsTex
datafield2origin
(
External
Isidore
)
=
ExternalOrigin
Types
.
Isidore
datafield2origin
(
External
(
EPO
mAPIUser
mAPIToken
))
=
ExternalOrigin
(
Types
.
EPO
mAPIUser
mAPIToken
)
-- | This isn't really used
datafield2origin
_
=
InternalOrigin
Types
.
IsTex
datafield2origin
_
=
InternalOrigin
Types
.
IsTex
------------------------------------------------------------------------
data
Datafield
=
Gargantext
...
...
src/Gargantext/API/Node/Types.hs
View file @
c0fe2e51
...
...
@@ -87,9 +87,6 @@ data WithQuery = WithQuery
,
_wq_lang
::
!
Lang
,
_wq_node_id
::
!
Int
,
_wq_flowListWith
::
!
FlowSocialListWith
,
_wq_pubmedAPIKey
::
!
(
Maybe
Text
)
,
_wq_epoAPIUser
::
!
(
Maybe
Text
)
,
_wq_epoAPIToken
::
!
(
Maybe
Text
)
}
deriving
(
Show
,
Eq
,
Generic
)
...
...
src/Gargantext/Core/Text/Corpus/API.hs
View file @
c0fe2e51
...
...
@@ -59,12 +59,11 @@ get :: ExternalAPIs
-- If the provider doesn't support the search filtered by language, or if the language
-- is not important, the frontend will simply send 'EN' to the backend.
->
Corpus
.
RawQuery
->
Maybe
EPO
.
AuthKey
->
Text
->
Maybe
Corpus
.
Limit
-- -> IO [HyperdataDocument]
->
IO
(
Either
GetCorpusError
(
Maybe
Integer
,
ConduitT
()
HyperdataDocument
IO
()
))
get
externalAPI
lang
q
epoA
uthKey
epoA
PIUrl
limit
=
do
get
externalAPI
lang
q
epoAPIUrl
limit
=
do
-- For PUBMED, HAL, IsTex, Isidore and OpenAlex, we want to send the query as-it.
-- For Arxiv we parse the query into a structured boolean query we submit over.
case
externalAPI
of
...
...
@@ -83,8 +82,10 @@ get externalAPI lang q epoAuthKey epoAPIUrl limit = do
Isidore
->
do
docs
<-
ISIDORE
.
get
lang
(
Corpus
.
getLimit
<$>
limit
)
(
Just
$
Corpus
.
getRawQuery
q
)
Nothing
pure
$
Right
(
Just
$
fromIntegral
$
length
docs
,
yieldMany
docs
)
EPO
->
do
first
(
ExternalAPIError
externalAPI
)
<$>
EPO
.
get
epoAuthKey
epoAPIUrl
q
(
toISO639
lang
)
limit
EPO
mAPIUser
mAPIToken
->
do
let
mEPOAuthKey
=
EPO
.
AuthKey
<$>
(
EPO
.
User
<$>
mAPIUser
)
<*>
(
EPO
.
Token
<$>
mAPIToken
)
first
(
ExternalAPIError
externalAPI
)
<$>
EPO
.
get
mEPOAuthKey
epoAPIUrl
q
(
toISO639
lang
)
limit
where
parse_query
=
first
(
InvalidInputQuery
q
.
T
.
pack
)
$
Corpus
.
parseQuery
q
...
...
src/Gargantext/Database/Action/Flow.hs
View file @
c0fe2e51
...
...
@@ -62,7 +62,6 @@ import Data.List qualified as List
import
Data.Map.Strict
qualified
as
Map
import
Data.Set
qualified
as
Set
import
Data.Text
qualified
as
T
import
EPO.API.Client.Types
qualified
as
EPO
import
Gargantext.API.Ngrams.Tools
(
getTermsWith
)
import
Gargantext.API.Ngrams.Types
(
NgramsTerm
)
import
Gargantext.Core
(
Lang
(
..
),
NLPServerConfig
,
withDefaultLanguage
)
...
...
@@ -132,14 +131,13 @@ getDataText :: (HasNodeError err)
=>
DataOrigin
->
TermType
Lang
->
API
.
RawQuery
->
Maybe
EPO
.
AuthKey
->
Maybe
API
.
Limit
->
DBCmdWithEnv
env
err
(
Either
API
.
GetCorpusError
DataText
)
getDataText
(
ExternalOrigin
api
)
la
q
mAuthKey
li
=
do
getDataText
(
ExternalOrigin
api
)
la
q
li
=
do
cfg
<-
view
hasConfig
eRes
<-
liftBase
$
API
.
get
api
(
_tt_lang
la
)
q
mAuthKey
(
_ac_epo_api_url
$
_gc_apis
cfg
)
li
eRes
<-
liftBase
$
API
.
get
api
(
_tt_lang
la
)
q
(
_ac_epo_api_url
$
_gc_apis
cfg
)
li
pure
$
DataNew
<$>
eRes
getDataText
(
InternalOrigin
_
)
la
q
_
_
li
=
do
getDataText
(
InternalOrigin
_
)
la
q
_li
=
do
(
_masterUserId
,
_masterRootId
,
cId
)
<-
getOrMkRootWithCorpus
MkCorpusUserMaster
(
Nothing
::
Maybe
HyperdataCorpus
)
ids
<-
map
fst
<$>
searchDocInDatabase
cId
(
stem
(
_tt_lang
la
)
GargPorterAlgorithm
$
API
.
getRawQuery
q
)
pure
$
Right
$
DataOld
ids
...
...
@@ -151,7 +149,7 @@ getDataText_Debug :: (HasNodeError err)
->
Maybe
API
.
Limit
->
DBCmdWithEnv
env
err
()
getDataText_Debug
a
l
q
li
=
do
result
<-
getDataText
a
l
q
Nothing
li
result
<-
getDataText
a
l
q
li
case
result
of
Left
err
->
liftBase
$
putText
$
show
err
Right
res
->
liftBase
$
printDataText
res
...
...
test/Test/Instances.hs
View file @
c0fe2e51
...
...
@@ -137,7 +137,7 @@ instance Arbitrary CT.Database where
,
pure
CT
.
HAL
,
pure
CT
.
IsTex
,
pure
CT
.
Isidore
,
pure
CT
.
EPO
]
,
CT
.
EPO
<$>
arbitrary
<*>
arbitrary
]
instance
Arbitrary
Datafield
where
arbitrary
=
genericArbitrary
instance
Arbitrary
WithQuery
where
arbitrary
=
genericArbitrary
...
...
@@ -309,7 +309,7 @@ instance Arbitrary Orch.ExternalAPIs where
,
pure
Orch
.
HAL
,
pure
Orch
.
IsTex
,
pure
Orch
.
Isidore
,
pure
Orch
.
EPO
]
,
Orch
.
EPO
<$>
arbitrary
<*>
arbitrary
]
-- instance Arbitrary NewWithFile where
...
...
Przemyslaw Kaminski
@cgenie
mentioned in commit
03b33383
·
Jan 30, 2025
mentioned in commit
03b33383
mentioned in commit 03b33383dd67c1821a4edb4628923cf7bd039d90
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment