moodle_rb 1.1.3 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +14 -3
- data/lib/moodle_rb/courses.rb +20 -3
- data/lib/moodle_rb/enrolments.rb +4 -2
- data/lib/moodle_rb/version.rb +1 -1
- data/spec/cassettes/MoodleRb_Courses/_search/.yml +102 -0
- data/spec/cassettes/MoodleRb_Courses/_search/when_using_invalid_token/.yml +55 -0
- data/spec/lib/moodle_rb/courses_spec.rb +26 -3
- data/spec/lib/moodle_rb/enrolments_spec.rb +3 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec5d80c43c0ed637457438c025e18d3c864a31cf24c5378e28a08a7169ef26c0
|
4
|
+
data.tar.gz: 1338a10d558a046135629df0982cd601fe938a127cb3f08e3648b7782eb49900
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4669abc20c8fd9749793ae2b3af6359a8a5f908d02607dc84788b45f407dc65688c99aa23a336f0e485bb10fbcbc07b2577e131211a954367fe883b09298f387
|
7
|
+
data.tar.gz: c7cb780a9a535cbb6fe589a2b2d1945deb356ca8afc54ce112a362cbecfdd20bc59208bef8ad87b41b5b1f096ad9d49f782e2e6a62520db6dda824201b2e0d52
|
data/README.md
CHANGED
@@ -28,7 +28,9 @@ moodle.courses.create(
|
|
28
28
|
:full_name => 'My Course',
|
29
29
|
:short_name => 'MyC',
|
30
30
|
:parent_category => 5,
|
31
|
-
:idnumber => 'ExtRef'
|
31
|
+
:idnumber => 'ExtRef',
|
32
|
+
:startdate => 1646312400,
|
33
|
+
:enddate => 1646398800
|
32
34
|
)
|
33
35
|
```
|
34
36
|
|
@@ -37,6 +39,11 @@ List all courses
|
|
37
39
|
moodle.courses.index
|
38
40
|
```
|
39
41
|
|
42
|
+
Search for a course by name
|
43
|
+
```
|
44
|
+
moodle.courses.search('My course')
|
45
|
+
```
|
46
|
+
|
40
47
|
Show a course
|
41
48
|
```
|
42
49
|
moodle.courses.show(course_id)
|
@@ -92,7 +99,9 @@ Create a student enrolment
|
|
92
99
|
```
|
93
100
|
moodle.enrolments.create(
|
94
101
|
:user_id => user_id,
|
95
|
-
:course_id => course_id
|
102
|
+
:course_id => course_id,
|
103
|
+
:time_start => 1646312400,
|
104
|
+
:time_end => 1646398800
|
96
105
|
)
|
97
106
|
```
|
98
107
|
|
@@ -101,7 +110,9 @@ Create a teacher enrolment
|
|
101
110
|
moodle.enrolments.create(
|
102
111
|
:user_id => user_id,
|
103
112
|
:course_id => course_id,
|
104
|
-
:role_id => 3
|
113
|
+
:role_id => 3,
|
114
|
+
:timestart=> 1646312400,
|
115
|
+
:timeend=> 1646398800
|
105
116
|
)
|
106
117
|
```
|
107
118
|
|
data/lib/moodle_rb/courses.rb
CHANGED
@@ -22,6 +22,21 @@ module MoodleRb
|
|
22
22
|
response.parsed_response
|
23
23
|
end
|
24
24
|
|
25
|
+
# Search courses by (name, module, block, tag)
|
26
|
+
def search(criteria_value, criteria_name = 'search')
|
27
|
+
response = self.class.get(
|
28
|
+
'/webservice/rest/server.php',
|
29
|
+
{
|
30
|
+
:query => query_hash('core_course_search_courses', token).merge({
|
31
|
+
:criterianame => criteria_name,
|
32
|
+
:criteriavalue => criteria_value
|
33
|
+
})
|
34
|
+
}.merge(query_options)
|
35
|
+
)
|
36
|
+
check_for_errors(response)
|
37
|
+
response.parsed_response
|
38
|
+
end
|
39
|
+
|
25
40
|
# required params:
|
26
41
|
# full_name
|
27
42
|
# short_name
|
@@ -42,8 +57,10 @@ module MoodleRb
|
|
42
57
|
:fullname => params[:full_name],
|
43
58
|
:shortname => params[:short_name],
|
44
59
|
:categoryid => params[:parent_category],
|
45
|
-
:idnumber => params[:idnumber]
|
46
|
-
|
60
|
+
:idnumber => params[:idnumber],
|
61
|
+
:startdate => params[:start_date],
|
62
|
+
:enddate => params[:end_date]
|
63
|
+
}.select {|k, v| v }
|
47
64
|
}
|
48
65
|
}
|
49
66
|
}.merge(query_options)
|
@@ -127,7 +144,7 @@ module MoodleRb
|
|
127
144
|
}.merge(query_options)
|
128
145
|
)
|
129
146
|
check_for_errors(response)
|
130
|
-
response.parsed_response
|
147
|
+
response.parsed_response
|
131
148
|
end
|
132
149
|
|
133
150
|
def module(course_module_id)
|
data/lib/moodle_rb/enrolments.rb
CHANGED
@@ -27,8 +27,10 @@ module MoodleRb
|
|
27
27
|
'0' => {
|
28
28
|
:userid => params[:user_id],
|
29
29
|
:courseid => params[:course_id],
|
30
|
-
:roleid => params[:role_id] || STUDENT_ROLE_ID
|
31
|
-
|
30
|
+
:roleid => params[:role_id] || STUDENT_ROLE_ID,
|
31
|
+
:timestart => params[:time_start],
|
32
|
+
:timeend => params[:time_end]
|
33
|
+
}.select {|k, v| v }
|
32
34
|
}
|
33
35
|
}
|
34
36
|
}.merge(query_options)
|
data/lib/moodle_rb/version.rb
CHANGED
@@ -0,0 +1,102 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:8888/moodle28/webservice/rest/server.php?criterianame=search&criteriavalue=My%20course&moodlewsrestformat=json&wsfunction=core_course_search_courses&wstoken=60fc9c9415259404795094957e4ab32f
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Accept-Ranges:
|
22
|
+
- bytes
|
23
|
+
Access-Control-Allow-Origin:
|
24
|
+
- "*"
|
25
|
+
Age:
|
26
|
+
- '0'
|
27
|
+
Cache-Control:
|
28
|
+
- private, must-revalidate, pre-check=0, post-check=0, max-age=0
|
29
|
+
Content-Type:
|
30
|
+
- application/json
|
31
|
+
Date:
|
32
|
+
- Wed, 11 May 2022 03:43:20 GMT
|
33
|
+
Expires:
|
34
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
35
|
+
Pragma:
|
36
|
+
- no-cache
|
37
|
+
Server:
|
38
|
+
- Moodle
|
39
|
+
X-Cache:
|
40
|
+
- MISS
|
41
|
+
X-Clacks-Overhead:
|
42
|
+
- GNU Terry Pratchett
|
43
|
+
X-Powered-By:
|
44
|
+
- Moodle Ninjas
|
45
|
+
Content-Length:
|
46
|
+
- '3946'
|
47
|
+
Connection:
|
48
|
+
- keep-alive
|
49
|
+
body:
|
50
|
+
encoding: UTF-8
|
51
|
+
string: '{"total":1,"courses":[{"id":316,"fullname":"My large course","displayname":"My
|
52
|
+
large course","shortname":"MLC","categoryid":8,"categoryname":"VETtrak testing","sortorder":50002,"summary":"Test
|
53
|
+
course 1<br \/>\nLorem ipsum dolor sit amet, consectetuer adipiscing elit.
|
54
|
+
Nulla non arcu lacinia neque faucibus fringilla. Vivamus porttitor turpis
|
55
|
+
ac leo. Integer in sapien. Nullam eget nisl. Aliquam erat volutpat. Cras elementum.
|
56
|
+
Mauris suscipit, ligula sit amet pharetra semper, nibh ante cursus purus,
|
57
|
+
vel sagittis velit mauris vel metus. Integer malesuada. Nullam lectus justo,
|
58
|
+
vulputate eget mollis sed, tempor sed magna. Mauris elementum mauris vitae
|
59
|
+
tortor. Aliquam erat volutpat.<br \/>\nTemporibus autem quibusdam et aut officiis
|
60
|
+
debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae
|
61
|
+
sint et molestiae non recusandae. Pellentesque ipsum. Cras pede libero, dapibus
|
62
|
+
nec, pretium sit amet, tempor quis. Aliquam ante. Proin in tellus sit amet
|
63
|
+
nibh dignissim sagittis. Vivamus porttitor turpis ac leo. Duis bibendum, lectus
|
64
|
+
ut viverra rhoncus, dolor nunc faucibus libero, eget facilisis enim ipsum
|
65
|
+
id lacus. In sem justo, commodo ut, suscipit at, pharetra vitae, orci. Aliquam
|
66
|
+
erat volutpat. Nulla est.<br \/>\nVivamus luctus egestas leo. Aenean fermentum
|
67
|
+
risus id tortor. Mauris dictum facilisis augue. Aliquam erat volutpat. Aliquam
|
68
|
+
ornare wisi eu metus. Aliquam id dolor. Duis condimentum augue id magna semper
|
69
|
+
rutrum. Donec iaculis gravida nulla. Pellentesque ipsum. Etiam dictum tincidunt
|
70
|
+
diam. Quisque tincidunt scelerisque libero. Etiam egestas wisi a erat.<br
|
71
|
+
\/>\nInteger lacinia. Cum sociis natoque penatibus et magnis dis parturient
|
72
|
+
montes, nascetur ridiculus mus. Mauris tincidunt sem sed arcu. Nullam feugiat,
|
73
|
+
turpis at pulvinar vulputate, erat libero tristique tellus, nec bibendum odio
|
74
|
+
risus sit amet ante. Aliquam id dolor. Maecenas sollicitudin. Et harum quidem
|
75
|
+
rerum facilis est et expedita distinctio. Mauris suscipit, ligula sit amet
|
76
|
+
pharetra semper, nibh ante cursus purus, vel sagittis velit mauris vel metus.
|
77
|
+
Nullam dapibus fermentum ipsum. Pellentesque habitant morbi tristique senectus
|
78
|
+
et netus et malesuada fames ac turpis egestas. Nemo enim ipsam voluptatem
|
79
|
+
quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni
|
80
|
+
dolores eos qui ratione voluptatem sequi nesciunt. Pellentesque sapien. Duis
|
81
|
+
risus. Mauris elementum mauris vitae tortor. Suspendisse nisl. Integer rutrum,
|
82
|
+
orci vestibulum ullamcorper ultricies, lacus quam ultricies odio, vitae placerat
|
83
|
+
pede sem sit amet enim.<br \/>\nIn laoreet, magna id viverra tincidunt, sem
|
84
|
+
odio bibendum justo, vel imperdiet sapien wisi sed libero. Proin pede metus,
|
85
|
+
vulputate nec, fermentum fringilla, vehicula vitae, justo. Nullam justo enim,
|
86
|
+
consectetuer nec, ullamcorper ac, vestibulum in, elit. Quis autem vel eum
|
87
|
+
iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur,
|
88
|
+
vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? Maecenas lorem.
|
89
|
+
Etiam posuere lacus quis dolor. Class aptent taciti sociosqu ad litora torquent
|
90
|
+
per conubia nostra, per inceptos hymenaeos. Curabitur ligula sapien, pulvinar
|
91
|
+
a vestibulum quis, facilisis vel sapien. Nam sed tellus id magna elementum
|
92
|
+
tincidunt. Suspendisse nisl. Vivamus luctus egestas leo. Nulla non arcu lacinia
|
93
|
+
neque faucibus fringilla. Etiam dui sem, fermentum vitae, sagittis id, malesuada
|
94
|
+
in, quam. Etiam dictum tincidunt diam. Etiam commodo dui eget wisi. Nemo enim
|
95
|
+
ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia
|
96
|
+
consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Proin
|
97
|
+
pede metus, vulputate nec, fermentum fringilla, vehicula vitae, justo. Duis
|
98
|
+
ante orci, molestie vitae vehicula venenatis, tincidunt ac pede. Pellentesque
|
99
|
+
sapien.","summaryformat":1,"summaryfiles":[],"overviewfiles":[],"showactivitydates":true,"showcompletionconditions":true,"contacts":[],"enrollmentmethods":["manual"]}],"warnings":[]}'
|
100
|
+
http_version:
|
101
|
+
recorded_at: Wed, 11 May 2022 03:42:46 GMT
|
102
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,55 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://localhost:8888/moodle28/webservice/rest/server.php?criterianame=search&criteriavalue=My%20course&moodlewsrestformat=json&wsfunction=core_course_search_courses&wstoken=
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Accept-Ranges:
|
22
|
+
- bytes
|
23
|
+
Access-Control-Allow-Origin:
|
24
|
+
- "*"
|
25
|
+
Age:
|
26
|
+
- '0'
|
27
|
+
Cache-Control:
|
28
|
+
- private, must-revalidate, pre-check=0, post-check=0, max-age=0
|
29
|
+
Content-Type:
|
30
|
+
- application/json
|
31
|
+
Date:
|
32
|
+
- Wed, 11 May 2022 03:43:20 GMT
|
33
|
+
Expires:
|
34
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
35
|
+
Pragma:
|
36
|
+
- no-cache
|
37
|
+
Server:
|
38
|
+
- Moodle
|
39
|
+
X-Cache:
|
40
|
+
- MISS
|
41
|
+
X-Clacks-Overhead:
|
42
|
+
- GNU Terry Pratchett
|
43
|
+
X-Powered-By:
|
44
|
+
- Moodle Ninjas
|
45
|
+
Content-Length:
|
46
|
+
- '103'
|
47
|
+
Connection:
|
48
|
+
- keep-alive
|
49
|
+
body:
|
50
|
+
encoding: UTF-8
|
51
|
+
string: '{"exception":"moodle_exception","errorcode":"invalidtoken","message":"Invalid
|
52
|
+
token - token not found"}'
|
53
|
+
http_version:
|
54
|
+
recorded_at: Wed, 11 May 2022 03:42:46 GMT
|
55
|
+
recorded_with: VCR 2.9.3
|
@@ -9,7 +9,9 @@ describe MoodleRb::Courses do
|
|
9
9
|
:full_name => 'Test Course',
|
10
10
|
:short_name => 'TestC1',
|
11
11
|
:parent_category => 1,
|
12
|
-
:idnumber => 'ExtRef'
|
12
|
+
:idnumber => 'ExtRef',
|
13
|
+
:start_date => 1646312400,
|
14
|
+
:end_date => 1646398800
|
13
15
|
}
|
14
16
|
end
|
15
17
|
|
@@ -34,6 +36,27 @@ describe MoodleRb::Courses do
|
|
34
36
|
end
|
35
37
|
end
|
36
38
|
|
39
|
+
describe '#search', :vcr => {
|
40
|
+
:match_requests_on => [:body, :path], :record => :once
|
41
|
+
} do
|
42
|
+
let(:result) { course_moodle_rb.search('My course') }
|
43
|
+
|
44
|
+
specify do
|
45
|
+
expect(result["total"]).to eq 1
|
46
|
+
expect(result["courses"]).to be_a Array
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'when using invalid token' do
|
50
|
+
let(:token) { '' }
|
51
|
+
specify do
|
52
|
+
expect{ course_moodle_rb.search('My course') }.to raise_error(
|
53
|
+
MoodleRb::MoodleError,
|
54
|
+
'Invalid token - token not found'
|
55
|
+
)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
37
60
|
describe '#create', :vcr => {
|
38
61
|
:match_requests_on => [:path], :record => :once
|
39
62
|
} do
|
@@ -183,8 +206,8 @@ describe MoodleRb::Courses do
|
|
183
206
|
let(:enrolment) { result.first }
|
184
207
|
|
185
208
|
specify do
|
186
|
-
expect(result).to be_a
|
187
|
-
expect(result).to have_key 'modules'
|
209
|
+
expect(result).to be_a Array
|
210
|
+
expect(result[0]).to have_key 'modules'
|
188
211
|
end
|
189
212
|
end
|
190
213
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: moodle_rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Giffney
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -147,6 +147,8 @@ files:
|
|
147
147
|
- spec/cassettes/MoodleRb_Courses/_index/when_using_invalid_token/.yml
|
148
148
|
- spec/cassettes/MoodleRb_Courses/_module/when_using_invalid_token/.yml
|
149
149
|
- spec/cassettes/MoodleRb_Courses/_module/when_using_valid_token/.yml
|
150
|
+
- spec/cassettes/MoodleRb_Courses/_search/.yml
|
151
|
+
- spec/cassettes/MoodleRb_Courses/_search/when_using_invalid_token/.yml
|
150
152
|
- spec/cassettes/MoodleRb_Courses/_show/.yml
|
151
153
|
- spec/cassettes/MoodleRb_Courses/_show/when_using_invalid_token/.yml
|
152
154
|
- spec/cassettes/MoodleRb_Enrolments/_create/.yml
|
@@ -230,6 +232,8 @@ test_files:
|
|
230
232
|
- spec/cassettes/MoodleRb_Courses/_index/when_using_invalid_token/.yml
|
231
233
|
- spec/cassettes/MoodleRb_Courses/_module/when_using_invalid_token/.yml
|
232
234
|
- spec/cassettes/MoodleRb_Courses/_module/when_using_valid_token/.yml
|
235
|
+
- spec/cassettes/MoodleRb_Courses/_search/.yml
|
236
|
+
- spec/cassettes/MoodleRb_Courses/_search/when_using_invalid_token/.yml
|
233
237
|
- spec/cassettes/MoodleRb_Courses/_show/.yml
|
234
238
|
- spec/cassettes/MoodleRb_Courses/_show/when_using_invalid_token/.yml
|
235
239
|
- spec/cassettes/MoodleRb_Enrolments/_create/.yml
|