Skip to content

Commit d749af7

Browse files
committed
Fixed workspace error in REST API
Signed-off-by: Leonid Kaganov <[email protected]>
1 parent 4bd387b commit d749af7

File tree

4 files changed

+168
-9
lines changed

4 files changed

+168
-9
lines changed

scripts/TEST00.sh

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
#!/bin/bash
2+
3+
clear
4+
source ./pulse_lib.sh
5+
6+
TOKEN=$(./token.sh claims.json)
7+
8+
get "00000000-0000-0000-0000-000000000001/foo/bar1"
9+
put "00000000-0000-0000-0000-000000000001/foo/bar1" "rediska"
10+
get "00000000-0000-0000-0000-000000000001/foo/bar1"
11+
12+
exit
13+
14+
#echo ${TOKEN}
15+
#exit
16+
ZP="00000000-0000-0000-0000-000000000001/TESTS"
17+
18+
19+
20+
put "00000000-0000-0000-0000-000000000001/TESTS/val1" "value" "HULY-TTL: 1"
21+
put "00000000-0000-0000-0000-000000000001/TESTS/val2" "value" "HULY-TTL: 12"
22+
put "00000000-0000-0000-0000-000000000001/TESTS/val3" "value" "HULY-TTL: 1"
23+
24+
get "00000000-0000-0000-0000-000000000001/TESTS/"
25+
sleep 2
26+
# get "00000000-0000-0000-0000-000000000001/TESTS/val2"
27+
get "00000000-0000-0000-0000-000000000001/TESTS/"
28+
29+
30+
31+
exit
32+
33+
34+
35+
36+
37+
38+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value"
39+
40+
#exit
41+
delete "00000000-0000-0000-0000-000000000001/TESTS"
42+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value"
43+
delete "00000000-0000-0000-0000-000000000001/TESTS" "If-Match: *"
44+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value"
45+
delete "00000000-0000-0000-0000-000000000001/TESTS" "If-Match: dd358c74cb9cb897424838fbcb69c933"
46+
47+
#exit
48+
49+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value" "HULY-TTL: 2"
50+
put "00000000-0000-0000-0000-000000000001/TESTS/1" "Value_1" "HULY-TTL: 2"
51+
put "00000000-0000-0000-0000-000000000001/TESTS/2" "Value_2" "HULY-TTL: 2"
52+
put "00000000-0000-0000-0000-000000000001/TESTS/2/$/secret" "Value_secret" "HULY-TTL: 2"
53+
get "00000000-0000-0000-0000-000000000001/TESTS/"
54+
55+
#exit
56+
57+
delete "0000000/TESTS"
58+
delete ${ZP}
59+
put ${ZP} "Value_1" "HULY-TTL: 2"
60+
delete ${ZP}
61+
62+
echo "--------- authorization_test ----------"
63+
TOKEN=""
64+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value_1" "HULY-TTL: 2"
65+
TOKEN=$(./token.sh claims_system.json)
66+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value_1" "HULY-TTL: 2"
67+
TOKEN=$(./token.sh claims_wrong_ws.json)
68+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value_1" "HULY-TTL: 2"
69+
TOKEN=$(./token.sh claims.json)
70+
put "00000000-0000-0000-0000-000000000002/TESTS" "Value_1" "HULY-TTL: 2"
71+
72+
73+
74+
echo "--------- if-match ----------"
75+
76+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value_1" "HULY-TTL: 2"
77+
put "00000000-0000-0000-0000-000000000001/TESTS/1" "Value_1" "HULY-TTL: 2"
78+
put "00000000-0000-0000-0000-000000000001/TESTS/2" "Value_1" "HULY-TTL: 2"
79+
put "00000000-0000-0000-0000-000000000001/TESTS/3$" "Value_1" "HULY-TTL: 2"
80+
put "00000000-0000-0000-0000-000000000001/TESTS/3/secret$/4" "Value_1" "HULY-TTL: 2"
81+
get "00000000-0000-0000-0000-000000000001/TESTS"
82+
get "00000000-0000-0000-0000-000000000001/TESTS/"
83+
get "00000000-0000-0000-0000-000000000001/TESTS/3/secret$/"
84+
85+
86+
echo "--------- Deprecated symbols ----------"
87+
88+
put "00000000-0000-0000-0000-000000000001/'TESTS" "Value_1" "HULY-TTL: 2"
89+
put "00000000-0000-0000-0000-000000000001/TES?TS" "Value_1" "HULY-TTL: 2"
90+
put "00000000-0000-0000-0000-000000000001/TESTS*" "Value_1" "HULY-TTL: 2"
91+
put "00000000-0000-0000-0000-000000000001/TESTS/" "Value_1" "HULY-TTL: 2"
92+
93+
echo "--------- if-match ----------"
94+
95+
delete ${ZP}
96+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value_1" "HULY-TTL: 1" "If-Match: *"
97+
get ${ZP}
98+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value_2" "HULY-TTL: 1"
99+
get ${ZP}
100+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value_3" "HULY-TTL: 1" "If-Match: dd358c74cb9cb897424838fbcb69c933"
101+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value_4" "HULY-TTL: 1" "If-Match: *"
102+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value_5" "HULY-TTL: 1" "If-Match: c7bcabf6b98a220f2f4888a18d01568d"
103+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value_6" "HULY-TTL: 1" "If-None-Match: *"
104+
105+
echo "-- Expected OK: 201 Created (key was not exist)"
106+
107+
put ${ZP} "enother text" "If-None-Match" "*"
108+
109+
put ${ZP} "some text"
110+
echo "-- Expected Error: 412 Precondition Failed (key was exist)"
111+
put ${ZP} "enother text" "If-None-Match" "*"
112+
113+
echo "================> UPDATE PUT If-Match"
114+
115+
get ${ZP}
116+
117+
echo "-- Expected OK: 204 No Content (right hash)"
118+
put ${ZP} "some text" "If-Match" "552e21cd4cd9918678e3c1a0df491bc3"
119+
get ${ZP}
120+
121+
echo "-- Expected OK: 204 No Content (hash still right)"
122+
put ${ZP} "enother version" "If-Match" "552e21cd4cd9918678e3c1a0df491bc3"
123+
124+
125+
126+
127+
128+
129+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value_1" "HULY-TTL: 3"
130+
echo "sleep 1 sec"
131+
sleep 1
132+
get "00000000-0000-0000-0000-000000000001/TESTS"
133+
echo "sleep 3 sec"
134+
sleep 2
135+
get "00000000-0000-0000-0000-000000000001/TESTS"
136+
137+
echo "--------- delete ----------"
138+
put "00000000-0000-0000-0000-000000000001/TESTS" "Value_2" "HULY-TTL: 3"
139+
get "00000000-0000-0000-0000-000000000001/TESTS"
140+
delete "00000000-0000-0000-0000-000000000001/TESTS"
141+
get "00000000-0000-0000-0000-000000000001/TESTS"
142+
143+
echo "--------- prefix ----------"
144+
put "00000000-0000-0000-0000-000000000001/TESTS1" "Value_1" "HULY-TTL: 3"
145+
put "00000000-0000-0000-0000-000000000001/TESTS2" "Value_1" "HULY-TTL: 3"
146+
put "00000000-0000-0000-0000-000000000001/HREST2" "Value_1" "HULY-TTL: 3"
147+
get "00000000-0000-0000-0000-000000000001?prefix=TES"
148+
sleep 1
149+
get "00000000-0000-0000-0000-000000000001?prefix="
150+
151+
exit

src/config/default.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ max_ttl = 3600
1212
backend = "redis"
1313
no_authorization = false
1414

15-
heartbeat_timeout = 30
15+
heartbeat_timeout = 90
1616

1717
# optional settings
1818
# max_size = 100

src/db.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,13 @@ impl Db {
7777
ttl: Option<Ttl>,
7878
mode: Option<SaveMode>,
7979
) -> redis::RedisResult<()> {
80+
println!(
81+
"Db::save key=[{}] value=[{:?}] mode=[{:?}]",
82+
key,
83+
value.as_ref(),
84+
mode
85+
);
86+
8087
match &self.inner {
8188
DbInner::Memory(m) => {
8289
memory_save(m, key, value.as_ref(), ttl, mode).await?;

src/handlers_http.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,16 @@ pub fn map_handler_error(err: impl std::fmt::Display) -> Error {
4848
#[derive(Deserialize, Debug)]
4949
pub struct PathParams {
5050
key: String,
51+
workspace: String,
5152
}
5253

5354
/// list
5455
pub async fn list(
5556
path: web::Path<PathParams>,
5657
db: web::Data<Db>,
5758
) -> Result<HttpResponse, actix_web::Error> {
58-
let key = path.into_inner().key;
59-
59+
let params = path.into_inner();
60+
let key = format!("{}/{}", &params.workspace, &params.key);
6061
trace!(key, "list request");
6162

6263
async move || -> anyhow::Result<HttpResponse> {
@@ -72,8 +73,8 @@ pub async fn get(
7273
path: web::Path<PathParams>,
7374
db: web::Data<Db>,
7475
) -> Result<HttpResponse, actix_web::error::Error> {
75-
let key = path.into_inner().key;
76-
76+
let params = path.into_inner();
77+
let key = format!("{}/{}", &params.workspace, &params.key);
7778
trace!(key, "get request");
7879

7980
async move || -> anyhow::Result<HttpResponse> {
@@ -97,8 +98,8 @@ pub async fn put(
9798
body: web::Bytes,
9899
db: web::Data<Db>,
99100
) -> Result<HttpResponse, actix_web::error::Error> {
100-
let key: String = path.into_inner().key;
101-
101+
let params = path.into_inner();
102+
let key = format!("{}/{}", &params.workspace, &params.key);
102103
trace!(key, "put request");
103104

104105
async move || -> anyhow::Result<HttpResponse> {
@@ -157,8 +158,8 @@ pub async fn delete(
157158
path: web::Path<PathParams>,
158159
db: web::Data<Db>,
159160
) -> Result<HttpResponse, actix_web::error::Error> {
160-
let key: String = path.into_inner().key;
161-
161+
let params = path.into_inner();
162+
let key = format!("{}/{}", &params.workspace, &params.key);
162163
trace!(key, "delete request");
163164

164165
async move || -> anyhow::Result<HttpResponse> {

0 commit comments

Comments
 (0)