Skip to content

Commit 4f689ca

Browse files
authored
Update convenience functions (#21)
* update expire_survey! * add Dates dependency * add start_survey! method * export start_survey! * bump version
1 parent 79a113b commit 4f689ca

File tree

5 files changed

+39
-10
lines changed

5 files changed

+39
-10
lines changed

Project.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "CitrusAPI"
22
uuid = "fb58f9c3-ae58-4847-ba51-3b3c84151ac7"
33
authors = ["Philipp Gewessler"]
4-
version = "0.1.0"
4+
version = "0.1.1"
55

66
[deps]
77
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -91,3 +91,4 @@ Note that CitrusAPI uses a more "julian" syntax for API methods. Methods that mu
9191
- `disconnect!`
9292
- `expire_survey!`
9393
- `is_active`
94+
- `start_survey!`

src/CitrusAPI.jl

+15-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ using UUIDs
1010

1111
export CitrusClient, connect!, disconnect!
1212
export LimeSurveyError, AuthenticationError
13-
export is_active, expire_survey!
13+
export is_active, expire_survey!, start_survey!
1414

1515
include("utils.jl")
1616
include("CitrusClient.jl")
@@ -58,15 +58,27 @@ function is_active(client::CitrusClient, survey_id::Int)
5858
return res.active == "Y"
5959
end
6060

61+
"""
62+
start_survey!(client, survey_id, datetime=now())
63+
64+
Set the start date of the remote survey with `survey_id`
65+
66+
See also: [`set_survey_properties!`](@ref)
67+
"""
68+
function start_survey!(client, survey_id, datetime::DateTime=now())
69+
response = set_survey_properties!(client, survey_id, Dict("startdate" => datetime))
70+
return response
71+
end
72+
6173
"""
6274
expire_survey!(client, survey_id, date=now())
6375
6476
Set the expiry date of the remote survey with `survey_id`.
6577
6678
See also: [`set_survey_properties!`](@ref)
6779
"""
68-
function expire_survey!(client, survey_id, date::Union{Date,DateTime}=now())
69-
response = set_survey_properties!(client, survey_id, Dict("expires" => date))
80+
function expire_survey!(client, survey_id, datetime::DateTime=now())
81+
response = set_survey_properties!(client, survey_id, Dict("expires" => datetime))
7082
return response
7183
end
7284

src/query.jl

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
function construct_payload(method::AbstractString, params)
22
request_id = string(UUIDs.uuid4())
3-
payload = Dict(
4-
"method" => method,
5-
"params" => params,
6-
"id" => request_id
7-
)
8-
json_payload = JSON3.write(payload)
3+
payload = Dict("method" => method, "params" => params, "id" => request_id)
4+
json_payload = JSON3.write(payload, dateformat=dateformat"yyyy-mm-dd HH:MM:SS")
95
return json_payload
106
end
117

test/runtests.jl

+20
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ using Test
44
using Base64
55
using CSV
66
using DataFrames
7+
using Dates
78
using JSON3
89

910
function dataframe_to_base64csv(df::DataFrame)
@@ -180,6 +181,25 @@ end
180181
@test set_lang.surveyls_title == true
181182
@test get_language_properties(c, s1).surveyls_title == "testtitle"
182183

184+
# start survey
185+
df = dateformat"yyyy-mm-dd HH:MM:SS"
186+
starts_at = DateTime("2022-01-01 12:00:00", df)
187+
props = start_survey!(c, s1, starts_at)
188+
@test props.startdate == true
189+
190+
start_date = get_survey_properties(c, s1).startdate
191+
parsed_start_date = DateTime(start_date, df)
192+
@test parsed_start_date == starts_at
193+
194+
# expire survey
195+
expire_at = DateTime("2022-01-01 12:30:15", df)
196+
props = expire_survey!(c, s1, expire_at)
197+
@test props.expires == true
198+
199+
expire_date = get_survey_properties(c, s1).expires
200+
parsed_expire_date = DateTime(expire_date, df)
201+
@test parsed_expire_date == expire_at
202+
183203
# clean up remaining surveys
184204
for s in [s1, s2, s3, s5, s6]
185205
res = delete_survey!(c, s)

0 commit comments

Comments
 (0)