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
151
Issues
151
List
Board
Labels
Milestones
Merge Requests
7
Merge Requests
7
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