Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
duniter
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Monitor
Service Desk
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
nodes
typescript
duniter
Merge requests
!1370
[feat] gva: add request endpoints(api_list)
Code
Review changes
Check out branch
Download
Patches
Plain diff
Expand sidebar
Merged
[feat] gva: add request endpoints(api_list)
1000i100/duniter:gva-endpoints
into
dev
Overview
0
Commits
1
Pipelines
3
Changes
4
Merged
Millicent Billette
requested to merge
1000i100/duniter:gva-endpoints
into
dev
4 years ago
Overview
0
Commits
1
Pipelines
3
Changes
4
0
0
Merge request reports
Compare
dev
version 4
9d06b99b
4 years ago
version 3
1b23793d
4 years ago
version 2
0501e12f
4 years ago
version 1
17f49f49
4 years ago
dev (base)
and
latest version
latest version
9d06b99b
1 commit,
4 years ago
version 4
9d06b99b
1 commit,
4 years ago
version 3
1b23793d
1 commit,
4 years ago
version 2
0501e12f
1 commit,
4 years ago
version 1
17f49f49
1 commit,
4 years ago
4 files
+
217
−
1
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
4
rust-libs/modules/gva/dbs-reader/src/endpoints.rs
0 → 100644
+
120
−
0
View file @ 9d06b99b
Edit in single-file editor
Open in Web IDE
// Copyright (C) 2020 Éloïs SANCHEZ.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
use
crate
::
*
;
use
duniter_dbs
::
databases
::
dunp_v1
::
DunpV1DbReadable
;
#[cfg(test)]
mod
tests
{
use
super
::
*
;
use
duniter_dbs
::
databases
::
dunp_v1
::
DunpV1DbWritable
;
use
duniter_dbs
::
PeerCardDbV1
;
#[test]
fn
test_empty_endpoints
()
->
KvResult
<
()
>
{
// Populate DB
let
dunp_db
=
duniter_dbs
::
databases
::
dunp_v1
::
DunpV1Db
::
<
Mem
>
::
open
(
MemConf
::
default
())
?
;
let
db_reader
=
DbsReaderImpl
::
mem
();
let
pk
=
PublicKey
::
default
();
dunp_db
.peers_old_write
()
.upsert
(
PubKeyKeyV2
(
pk
),
PeerCardDbV1
::
default
())
?
;
// Request Data
let
api_list
=
vec!
[
"GVA"
.to_owned
()];
assert_eq!
(
db_reader
.endpoints_
(
&
dunp_db
,
api_list
)
?
,
Vec
::
<
String
>
::
new
()
);
Ok
(())
}
#[test]
fn
test_endpoints_with_empty_api_list
()
->
KvResult
<
()
>
{
let
dummy_endpoint
=
"GVA S domain.tld 443 gva"
;
// Populate DB
let
dunp_db
=
duniter_dbs
::
databases
::
dunp_v1
::
DunpV1Db
::
<
Mem
>
::
open
(
MemConf
::
default
())
?
;
let
db_reader
=
DbsReaderImpl
::
mem
();
let
pk
=
PublicKey
::
default
();
let
peer
=
PeerCardDbV1
{
endpoints
:
vec!
[
dummy_endpoint
.to_owned
()],
..
Default
::
default
()
};
dunp_db
.peers_old_write
()
.upsert
(
PubKeyKeyV2
(
pk
),
peer
)
?
;
// Request Data
let
api_list
=
vec!
[];
assert_eq!
(
db_reader
.endpoints_
(
&
dunp_db
,
api_list
)
?
,
Vec
::
<
String
>
::
new
()
);
Ok
(())
}
#[test]
fn
test_single_peer_endpoints
()
->
KvResult
<
()
>
{
let
dummy_endpoint
=
"GVA S domain.tld 443 gva"
;
// Populate DB
let
dunp_db
=
duniter_dbs
::
databases
::
dunp_v1
::
DunpV1Db
::
<
Mem
>
::
open
(
MemConf
::
default
())
?
;
let
db_reader
=
DbsReaderImpl
::
mem
();
let
pk
=
PublicKey
::
default
();
let
peer
=
PeerCardDbV1
{
endpoints
:
vec!
[
dummy_endpoint
.to_owned
()],
..
Default
::
default
()
};
dunp_db
.peers_old_write
()
.upsert
(
PubKeyKeyV2
(
pk
),
peer
)
?
;
// Request Data
let
api_list
=
vec!
[
"GVA"
.to_owned
()];
assert_eq!
(
db_reader
.endpoints_
(
&
dunp_db
,
api_list
)
?
,
vec!
[
dummy_endpoint
.to_owned
()]
);
Ok
(())
}
}
impl
DbsReaderImpl
{
pub
(
super
)
fn
endpoints_
<
DB
:
DunpV1DbReadable
>
(
&
self
,
network_db
:
&
DB
,
mut
api_list
:
Vec
<
String
>
,
)
->
KvResult
<
Vec
<
String
>>
{
if
api_list
.is_empty
()
{
return
Ok
(
vec!
[]);
}
for
api
in
&
mut
api_list
{
api
.push
(
' '
);
}
network_db
.peers_old
()
.iter
(
..
,
|
it
|
{
it
.values
()
.map_ok
(|
peer
|
{
peer
.endpoints
.into_iter
()
.filter
(|
endpoint
|
{
api_list
.iter
()
.any
(|
api
|
endpoint
.starts_with
(
api
.as_str
()))
})
})
.flatten_ok
()
.collect
::
<
Result
<
Vec
<
String
>
,
_
>>
()
})
}
}
Loading