moodle_rb 2.0.0 → 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: d6a13f6a1496ab275105265f26bbec19d83b453ac8a97626281b2c1b69a194df
4
- data.tar.gz: e01c8f799d65c8dcc52460156698aaa96dd587cf2c3a302d5372d1d798b20ba8
3
+ metadata.gz: ec5d80c43c0ed637457438c025e18d3c864a31cf24c5378e28a08a7169ef26c0
4
+ data.tar.gz: 1338a10d558a046135629df0982cd601fe938a127cb3f08e3648b7782eb49900
5
5
  SHA512:
6
- metadata.gz: eb17177bbecd5a301989fa113dbb09be16cb2e30ad6d37692acd08a66432353c5e961809dc6281e5448a5d7f7aca03386d9e832786aeba5e3cff1db3fb154521
7
- data.tar.gz: f543795c39c51f924de908c8156c656bb46eb2047615eca579aeadfa6764faeec98b8e57455957819f34626a386b255518e083abc77eb594a4ac2ef88dcd9c25
6
+ metadata.gz: 4669abc20c8fd9749793ae2b3af6359a8a5f908d02607dc84788b45f407dc65688c99aa23a336f0e485bb10fbcbc07b2577e131211a954367fe883b09298f387
7
+ data.tar.gz: c7cb780a9a535cbb6fe589a2b2d1945deb356ca8afc54ce112a362cbecfdd20bc59208bef8ad87b41b5b1f096ad9d49f782e2e6a62520db6dda824201b2e0d52
data/README.md CHANGED
@@ -39,6 +39,11 @@ List all courses
39
39
  moodle.courses.index
40
40
  ```
41
41
 
42
+ Search for a course by name
43
+ ```
44
+ moodle.courses.search('My course')
45
+ ```
46
+
42
47
  Show a course
43
48
  ```
44
49
  moodle.courses.show(course_id)
@@ -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
@@ -1,5 +1,5 @@
1
1
  module MoodleRb
2
- VERSION = '2.0.0' 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
@@ -36,6 +36,27 @@ describe MoodleRb::Courses do
36
36
  end
37
37
  end
38
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
+
39
60
  describe '#create', :vcr => {
40
61
  :match_requests_on => [:path], :record => :once
41
62
  } do
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: 2.0.0
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-04-08 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