milady-cima-api 0.2.1 → 0.3.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/CHANGELOG.md +8 -0
- data/lib/milady_cima_api/resources/base.rb +23 -0
- data/lib/milady_cima_api/resources/courses/assessments.rb +3 -13
- data/lib/milady_cima_api/resources/courses/learners.rb +60 -0
- data/lib/milady_cima_api/resources/courses.rb +10 -16
- data/lib/milady_cima_api/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8e9fdba0b8e942edd14809c180519a39323e7110110b6c862a2006b331741206
|
|
4
|
+
data.tar.gz: d4c5eadceb6dc83739abab360ff44137c7d42b254d86c829d53c1e5aca0aabc0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 49bbf4f1f574aa9b5d2b6b07f18a943bc2660cb265ccbac038b21ea08e40ae177d631ca0382411d68280a679d886a6fd9a8db8611ab77fc4cc52f70ef71c9fe6
|
|
7
|
+
data.tar.gz: be4ba9b6f41686c4a8acfcaa16a503e17d43b49a59cf6c6b0ea6c91fb5a3b94bf82e500a282f00aedbf0dbd7cb72e9d11869d06d1e908ac81045f4b33f10bfbe
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
+
## [0.3.0] - 2025-12-04
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- Added `Learners` resource under `Courses` to support `GET /courses/{id}/learners` and `GET /courses/{id}/learners/{user_id}`.
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
- Refactored `Courses`, `Assessments`, and `Learners` resources to inherit from a common `Base` class to share initialization and filter normalization logic.
|
|
10
|
+
|
|
3
11
|
## [0.2.1] - 2025-12-04
|
|
4
12
|
|
|
5
13
|
### Added
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'json'
|
|
4
|
+
|
|
5
|
+
module MiLadyCimaApi
|
|
6
|
+
module Resources
|
|
7
|
+
class Base
|
|
8
|
+
# @param client [MiLadyCimaApi::Client]
|
|
9
|
+
def initialize(client)
|
|
10
|
+
@client = client
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
protected
|
|
14
|
+
|
|
15
|
+
def normalize_filter(filter)
|
|
16
|
+
return filter if filter.is_a?(String)
|
|
17
|
+
return JSON.generate(filter) if filter.is_a?(Hash)
|
|
18
|
+
|
|
19
|
+
raise ArgumentError, 'filter must be a String (JSON) or a Hash'
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative '../base'
|
|
4
|
+
|
|
3
5
|
module MiLadyCimaApi
|
|
4
6
|
module Resources
|
|
5
7
|
class Courses
|
|
6
8
|
# Assessments resource exposes endpoints under /courses/{id}/assessments
|
|
7
|
-
class Assessments
|
|
8
|
-
# @param client [MiLadyCimaApi::Client]
|
|
9
|
-
def initialize(client)
|
|
10
|
-
@client = client
|
|
11
|
-
end
|
|
9
|
+
class Assessments < Resources::Base
|
|
12
10
|
|
|
13
11
|
# List assessments for a course
|
|
14
12
|
#
|
|
@@ -50,14 +48,6 @@ module MiLadyCimaApi
|
|
|
50
48
|
@client.get("/courses/#{course_id}/assessments/#{assessment_id}")
|
|
51
49
|
end
|
|
52
50
|
|
|
53
|
-
private
|
|
54
|
-
|
|
55
|
-
def normalize_filter(filter)
|
|
56
|
-
return filter if filter.is_a?(String)
|
|
57
|
-
return JSON.generate(filter) if filter.is_a?(Hash)
|
|
58
|
-
|
|
59
|
-
raise ArgumentError, 'filter must be a String (JSON) or a Hash'
|
|
60
|
-
end
|
|
61
51
|
end
|
|
62
52
|
end
|
|
63
53
|
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../base'
|
|
4
|
+
|
|
5
|
+
module MiLadyCimaApi
|
|
6
|
+
module Resources
|
|
7
|
+
class Courses
|
|
8
|
+
# Learners resource exposes endpoints under /courses/{id}/learners
|
|
9
|
+
class Learners < Resources::Base
|
|
10
|
+
|
|
11
|
+
# List learners for a course
|
|
12
|
+
#
|
|
13
|
+
# GET /courses/{id}/learners
|
|
14
|
+
# @param course_id [Integer, String] ID of the course
|
|
15
|
+
# @param filter [Hash, String] Filter using JSON structure
|
|
16
|
+
# @param limit [Integer] Limit the number of returned objects (default 10, max 100)
|
|
17
|
+
# @param offset [Integer] Used for paging through a small dataset
|
|
18
|
+
# @param after [Integer] Used for fast paging
|
|
19
|
+
# @param count [Boolean] If true, just return the number of list items
|
|
20
|
+
# @param include [String] Comma separated list of relationships to include
|
|
21
|
+
# @return [Array, Hash] Parsed JSON response from the API
|
|
22
|
+
def list(course_id:, filter: nil, limit: nil, offset: nil, after: nil, count: nil, include: nil)
|
|
23
|
+
raise ArgumentError, 'course_id is required' if course_id.nil?
|
|
24
|
+
|
|
25
|
+
if limit && limit > 100
|
|
26
|
+
raise ArgumentError, 'limit cannot be greater than 100'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
params = {}
|
|
30
|
+
params['$filter'] = normalize_filter(filter) if filter
|
|
31
|
+
params['$limit'] = limit if limit
|
|
32
|
+
params['$offset'] = offset if offset
|
|
33
|
+
params['$after'] = after if after
|
|
34
|
+
params['$count'] = count if count
|
|
35
|
+
params['$include'] = include if include
|
|
36
|
+
|
|
37
|
+
@client.get("/courses/#{course_id}/learners", params: params)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Get a single learner
|
|
41
|
+
#
|
|
42
|
+
# GET /courses/{id}/learners/{user_id}
|
|
43
|
+
# @param course_id [Integer, String] ID of the course
|
|
44
|
+
# @param user_id [Integer, String] ID of the user
|
|
45
|
+
# @param include [String] Comma separated list of relationships to include
|
|
46
|
+
# @return [Hash] Parsed JSON response from the API
|
|
47
|
+
def find(course_id:, user_id:, include: nil)
|
|
48
|
+
raise ArgumentError, 'course_id is required' if course_id.nil?
|
|
49
|
+
raise ArgumentError, 'user_id is required' if user_id.nil?
|
|
50
|
+
|
|
51
|
+
params = {}
|
|
52
|
+
params['$include'] = include if include
|
|
53
|
+
|
|
54
|
+
@client.get("/courses/#{course_id}/learners/#{user_id}", params: params)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'json'
|
|
4
|
-
require_relative 'courses/assessments'
|
|
2
|
+
require_relative 'base'
|
|
5
3
|
|
|
6
4
|
module MiLadyCimaApi
|
|
7
5
|
module Resources
|
|
8
6
|
# Courses resource exposes endpoints under /courses
|
|
9
7
|
# Provides convenience helpers for building $filter queries.
|
|
10
|
-
class Courses
|
|
11
|
-
# @param client [MiLadyCimaApi::Client]
|
|
12
|
-
def initialize(client)
|
|
13
|
-
@client = client
|
|
14
|
-
end
|
|
8
|
+
class Courses < Base
|
|
15
9
|
|
|
16
10
|
# @return [MiLadyCimaApi::Resources::Courses::Assessments]
|
|
17
11
|
def assessments
|
|
18
12
|
@assessments ||= Assessments.new(@client)
|
|
19
13
|
end
|
|
20
14
|
|
|
15
|
+
# @return [MiLadyCimaApi::Resources::Courses::Learners]
|
|
16
|
+
def learners
|
|
17
|
+
@learners ||= Learners.new(@client)
|
|
18
|
+
end
|
|
19
|
+
|
|
21
20
|
# List courses
|
|
22
21
|
#
|
|
23
22
|
# GET /courses
|
|
@@ -91,14 +90,9 @@ module MiLadyCimaApi
|
|
|
91
90
|
list(filter: filter, **extra_params)
|
|
92
91
|
end
|
|
93
92
|
|
|
94
|
-
private
|
|
95
|
-
|
|
96
|
-
def normalize_filter(filter)
|
|
97
|
-
return filter if filter.is_a?(String)
|
|
98
|
-
return JSON.generate(filter) if filter.is_a?(Hash)
|
|
99
|
-
|
|
100
|
-
raise ArgumentError, 'filter must be a String (JSON) or a Hash'
|
|
101
|
-
end
|
|
102
93
|
end
|
|
103
94
|
end
|
|
104
95
|
end
|
|
96
|
+
|
|
97
|
+
require_relative 'courses/assessments'
|
|
98
|
+
require_relative 'courses/learners'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: milady-cima-api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- marcus.salinas
|
|
@@ -27,8 +27,10 @@ files:
|
|
|
27
27
|
- lib/milady_cima_api.rb
|
|
28
28
|
- lib/milady_cima_api/client.rb
|
|
29
29
|
- lib/milady_cima_api/errors.rb
|
|
30
|
+
- lib/milady_cima_api/resources/base.rb
|
|
30
31
|
- lib/milady_cima_api/resources/courses.rb
|
|
31
32
|
- lib/milady_cima_api/resources/courses/assessments.rb
|
|
33
|
+
- lib/milady_cima_api/resources/courses/learners.rb
|
|
32
34
|
- lib/milady_cima_api/resources/organizations.rb
|
|
33
35
|
- lib/milady_cima_api/resources/users.rb
|
|
34
36
|
- lib/milady_cima_api/version.rb
|