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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3fdbc847a70cefe6a1641ceebba2f874b8ab8d1459aa475c23d8f1ae70ef4c11
4
- data.tar.gz: 7e4034e714f6ca67e92a928bc9ae323e22b48042d4ebbfbab0bf401ec4a54cec
3
+ metadata.gz: ec5d80c43c0ed637457438c025e18d3c864a31cf24c5378e28a08a7169ef26c0
4
+ data.tar.gz: 1338a10d558a046135629df0982cd601fe938a127cb3f08e3648b7782eb49900
5
5
  SHA512:
6
- metadata.gz: 1e7300716079888fed475a6dea164997ceb375fec6b870370064d88ac8a3a9821a63a63e73579bdf621b63563bfb95e3c33c2be309ecdc6863eda0e7fbf89e5b
7
- data.tar.gz: f2613f30e5676831a666a76f8e54cde9e5a2c4b939ab00972833a0c200d86ddd502c50c200fc982ab0c9373b296e47f62b98ddfc525b0ca7dd2cd8df2b275a12
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
 
@@ -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[0]
147
+ response.parsed_response
131
148
  end
132
149
 
133
150
  def module(course_module_id)
@@ -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)
@@ -1,5 +1,5 @@
1
1
  module MoodleRb
2
- VERSION = '1.1.3' unless defined?(self::VERSION)
2
+ VERSION = '2.1.0' unless defined?(self::VERSION)
3
3
 
4
4
  def self.version
5
5
  VERSION
@@ -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 Hash
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
 
@@ -11,7 +11,9 @@ describe MoodleRb::Enrolments do
11
11
  let(:params) do
12
12
  {
13
13
  :user_id => 3,
14
- :course_id => 8
14
+ :course_id => 8,
15
+ :time_start => 1646312400,
16
+ :time_end => 1646398800
15
17
  }
16
18
  end
17
19
  let(:result) { enrolment_moodle_rb.create(params) }
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: 1.1.3
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-01-14 00:00:00.000000000 Z
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