sraas 0.2.11 → 0.2.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +40 -1
- data/bin/sraas +183 -0
- data/lib/sraas.rb +36 -2
- data/lib/sraas/consumer.rb +20 -14
- data/lib/sraas/template_card.rb +10 -1
- data/lib/sraas/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d407823833658ffe8b28c0f49a259741e6b9cc37
|
4
|
+
data.tar.gz: 5ee3444513c052742d5e517899a62857776d4b7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5fcd44f675dc9064afaf963a25ce5a9ddcb339a39123bf3dca2bd7a5080ea160c0261cd9c46b36f9ce371f7478296b09c3e3c863453c64e6cd6fecf366d4cab2
|
7
|
+
data.tar.gz: b0d4f0dcbb5bb172641e3cb9b9abeb799d03aa50ca82283ac20d62c0db88ab9a813d1402c07a515014594e4762a6a256272cd44e55d45151efb97c6c0386023c
|
data/README.md
CHANGED
@@ -46,8 +46,47 @@ end
|
|
46
46
|
```
|
47
47
|
This will create polymorphic association `sraas_consumer` which provides interface for using SRAAS API
|
48
48
|
|
49
|
+
## CLI new features
|
50
|
+
- Get template cards specified by template_deck id
|
51
|
+
```bash
|
52
|
+
$ sraas template_card template_cards xxxx
|
53
|
+
```
|
54
|
+
- Get template card specified by template_card id
|
55
|
+
```bash
|
56
|
+
$ sraas template_card info xxxx
|
57
|
+
```
|
58
|
+
- Get template card's children specified by template_card id
|
59
|
+
```bash
|
60
|
+
$ sraas template_card children xxxx
|
61
|
+
```
|
62
|
+
- Get template card's parents specified by template_card id
|
63
|
+
```bash
|
64
|
+
$ sraas template_card parents xxxx
|
65
|
+
```
|
66
|
+
- Get lesson cards specified by consumer id and lessons id
|
67
|
+
```bash
|
68
|
+
$ sraas cards lesson --consumer_id=xxxx --lesson_id=x
|
69
|
+
```
|
70
|
+
- Get card specified by card id
|
71
|
+
```bash
|
72
|
+
$ sraas cards info xxxx
|
73
|
+
```
|
74
|
+
- Get card's children specified by card id
|
75
|
+
```bash
|
76
|
+
$ sraas cards children xxxx
|
77
|
+
```
|
78
|
+
- Get card's parents specified by card id
|
79
|
+
```bash
|
80
|
+
$ sraas cards parents xxxx
|
81
|
+
```
|
82
|
+
|
49
83
|
## Tests
|
50
|
-
|
84
|
+
#### Preparation
|
85
|
+
```bash
|
86
|
+
$ cd specs/dummy/
|
87
|
+
$ rake db:migrate
|
88
|
+
```
|
89
|
+
#### Runing
|
51
90
|
```bash
|
52
91
|
$ rake spec
|
53
92
|
```
|
data/bin/sraas
CHANGED
@@ -79,6 +79,173 @@ module Sraas
|
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
|
+
module Cards
|
83
|
+
class Search < SraasSectet
|
84
|
+
desc 'Searches card by consumer uuid, title, and kind'
|
85
|
+
|
86
|
+
option :title
|
87
|
+
option :kind
|
88
|
+
option :customer, aliases: ['c']
|
89
|
+
|
90
|
+
def call(**options)
|
91
|
+
response = fetch(options.fetch(:customer), options.fetch(:kind), options.fetch(:title))
|
92
|
+
puts response
|
93
|
+
end
|
94
|
+
|
95
|
+
def fetch(consumer_uuid, kind, title)
|
96
|
+
use_credentials
|
97
|
+
Sraas.search_card(consumer_uuid, title, kind)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
class Info < SraasSectet
|
102
|
+
desc 'Gets card by card uuid'
|
103
|
+
argument :card_uuid
|
104
|
+
|
105
|
+
def call(card_uuid:, **)
|
106
|
+
response = fetch(card_uuid)
|
107
|
+
puts response
|
108
|
+
end
|
109
|
+
|
110
|
+
def fetch(card_uuid)
|
111
|
+
use_credentials
|
112
|
+
url = card_url(card_uuid)
|
113
|
+
JSON.parse(Sraas.api_resource(:get, url))
|
114
|
+
end
|
115
|
+
|
116
|
+
def card_url(card_uuid)
|
117
|
+
"#{Sraas.cards_endpoint}/#{card_uuid}"
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
class Children < SraasSectet
|
122
|
+
desc 'Gets children cards by card uuid'
|
123
|
+
argument :card_uuid
|
124
|
+
|
125
|
+
def call(card_uuid:, **)
|
126
|
+
response = fetch(card_uuid)
|
127
|
+
puts response
|
128
|
+
end
|
129
|
+
|
130
|
+
def fetch(card_uuid)
|
131
|
+
use_credentials
|
132
|
+
url = card_children_url(card_uuid)
|
133
|
+
JSON.parse(Sraas.api_resource(:get, url))
|
134
|
+
end
|
135
|
+
|
136
|
+
def card_children_url(card_uuid)
|
137
|
+
"#{Sraas.cards_endpoint}/#{card_uuid}/children"
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
class Parents < SraasSectet
|
142
|
+
desc 'Gets card parents by card uuid'
|
143
|
+
argument :card_uuid
|
144
|
+
|
145
|
+
def call(card_uuid:, **)
|
146
|
+
response = fetch(card_uuid)
|
147
|
+
puts response
|
148
|
+
end
|
149
|
+
|
150
|
+
def fetch(card_uuid)
|
151
|
+
use_credentials
|
152
|
+
url = card_parents_url(card_uuid)
|
153
|
+
JSON.parse(Sraas.api_resource(:get, url))
|
154
|
+
end
|
155
|
+
|
156
|
+
def card_parents_url(card_uuid)
|
157
|
+
"#{Sraas.cards_endpoint}/#{card_uuid}/parents"
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
class Lesson < Sraas::CLI::Commands::Info::Consumer
|
162
|
+
desc 'Gets cards for the lesson'
|
163
|
+
option :consumer_uuid, aliases: ['c']
|
164
|
+
option :lesson_id, aliases: ['l','lesson']
|
165
|
+
|
166
|
+
def call(**options)
|
167
|
+
response = fetch(options.fetch(:consumer_uuid),options.fetch(:lesson_id))
|
168
|
+
puts response
|
169
|
+
end
|
170
|
+
|
171
|
+
def fetch(consumer_uuid, lesson_id)
|
172
|
+
use_credentials
|
173
|
+
url = lesson_url(consumer_uuid,lesson_id)
|
174
|
+
JSON.parse(Sraas.api_resource(:get, url))
|
175
|
+
end
|
176
|
+
|
177
|
+
def lesson_url(consumer_uuid,lesson_id)
|
178
|
+
"#{consumer_url(consumer_uuid)}/lessons/#{lesson_id}"
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
class Update < SraasSectet
|
183
|
+
desc 'Updates card'
|
184
|
+
|
185
|
+
option :uuid
|
186
|
+
option :srs_level
|
187
|
+
option :user_data
|
188
|
+
option :unlocked_at
|
189
|
+
option :learned_at
|
190
|
+
option :performance
|
191
|
+
option :review_available_at
|
192
|
+
option :deck_id
|
193
|
+
option :template_card_id
|
194
|
+
|
195
|
+
def call(**options)
|
196
|
+
use_credentials
|
197
|
+
result = Sraas.update_card(options.fetch(:uuid), {card: options.select {|key| key != :uuid}})
|
198
|
+
puts result
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
module TemplateCard
|
204
|
+
class TemplateCards < SraasSectet
|
205
|
+
desc 'Gets template cards by template deck id'
|
206
|
+
argument :template_deck_id
|
207
|
+
|
208
|
+
def call(template_deck_id:, **)
|
209
|
+
use_credentials
|
210
|
+
response = Sraas.template_cards(template_deck_id)
|
211
|
+
puts response
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
class Info < SraasSectet
|
216
|
+
desc 'Get template card by template card id'
|
217
|
+
argument :template_card_id
|
218
|
+
|
219
|
+
def call(template_card_id:, **)
|
220
|
+
use_credentials
|
221
|
+
response = Sraas.template_card(template_card_id)
|
222
|
+
puts response
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
class Children < SraasSectet
|
227
|
+
desc 'Get template card by template card id'
|
228
|
+
argument :template_card_id
|
229
|
+
|
230
|
+
def call(template_card_id:, **)
|
231
|
+
use_credentials
|
232
|
+
response = Sraas.template_card_children(template_card_id)
|
233
|
+
puts response
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
class Parents < SraasSectet
|
238
|
+
desc 'Get template card by template card id'
|
239
|
+
argument :template_card_id
|
240
|
+
|
241
|
+
def call(template_card_id:, **)
|
242
|
+
use_credentials
|
243
|
+
response = Sraas.template_card_parents(template_card_id)
|
244
|
+
puts response
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
82
249
|
module Review
|
83
250
|
class Consumer < Info::Consumer
|
84
251
|
argument :uuid, desc: 'Consumer UUID'
|
@@ -250,6 +417,22 @@ module Sraas
|
|
250
417
|
prefix.register 'consumer', Learn::Consumer, aliases: ['c', '-c']
|
251
418
|
end
|
252
419
|
|
420
|
+
register 'cards' do |prefix|
|
421
|
+
prefix.register 'search', Cards::Search, aliases: ['s', '-s']
|
422
|
+
prefix.register 'info', Cards::Info, aliases: ['i', '-i']
|
423
|
+
prefix.register 'children', Cards::Children, aliases: ['c', '-c']
|
424
|
+
prefix.register 'parents', Cards::Parents, aliases: ['p', '-p']
|
425
|
+
prefix.register 'lesson', Cards::Lesson, aliases: ['l', '-l']
|
426
|
+
prefix.register 'update', Cards::Update
|
427
|
+
end
|
428
|
+
|
429
|
+
register 'template_card', aliases: ['tc', '-tc'] do |prefix|
|
430
|
+
prefix.register 'template_cards', TemplateCard::TemplateCards, aliases: ['tcs', '-tcs']
|
431
|
+
prefix.register 'info', TemplateCard::Info, aliases: ['i', '-i']
|
432
|
+
prefix.register 'children', TemplateCard::Children, aliases: ['c', '-c']
|
433
|
+
prefix.register 'parents', TemplateCard::Parents, aliases: ['p', '-p']
|
434
|
+
end
|
435
|
+
|
253
436
|
register 'review' do |prefix|
|
254
437
|
prefix.register 'consumer', Review::Consumer, aliases: ['c', '-c']
|
255
438
|
end
|
data/lib/sraas.rb
CHANGED
@@ -42,10 +42,40 @@ module Sraas
|
|
42
42
|
JSON.parse(api_resource(:get, template_decks_endpoint))
|
43
43
|
end
|
44
44
|
|
45
|
+
# This returns template cards "index" json
|
46
|
+
def template_cards(template_deck_id)
|
47
|
+
JSON.parse(Sraas.api_resource(:get, "#{self.template_decks_endpoint}/#{template_deck_id}/template_cards"))
|
48
|
+
end
|
49
|
+
|
50
|
+
# This returns template card "full" json
|
51
|
+
def template_card(template_card_id)
|
52
|
+
JSON.parse(Sraas.api_resource(:get, "#{self.template_cards_endpoint}/#{template_card_id}"))
|
53
|
+
end
|
54
|
+
|
55
|
+
# This returns template card's children's "index" json
|
56
|
+
def template_card_children(template_card_id)
|
57
|
+
JSON.parse(Sraas.api_resource(:get, "#{self.template_cards_endpoint}/#{template_card_id}/children"))
|
58
|
+
end
|
59
|
+
|
60
|
+
# This returns template card's parent's "index" json
|
61
|
+
def template_card_parents(template_card_id)
|
62
|
+
JSON.parse(Sraas.api_resource(:get, "#{self.template_cards_endpoint}/#{template_card_id}/parents"))
|
63
|
+
end
|
64
|
+
|
45
65
|
def consumers
|
46
66
|
api_resource(:get, consumers_endpoint)
|
47
67
|
end
|
48
68
|
|
69
|
+
def search_card(consumer_uuid, title, kind)
|
70
|
+
query = "?title=#{title}&kind=#{kind}"
|
71
|
+
JSON.parse(api_resource(:get, card_search_endpoint(consumer_uuid) + query))
|
72
|
+
end
|
73
|
+
|
74
|
+
def update_card(card_uuid, params = {})
|
75
|
+
response = api_resource(:patch, cards_endpoint + "/#{card_uuid}", params)
|
76
|
+
response.code == 200
|
77
|
+
end
|
78
|
+
|
49
79
|
def consumers_endpoint
|
50
80
|
"#{configuration.url}/consumers"
|
51
81
|
end
|
@@ -58,14 +88,18 @@ module Sraas
|
|
58
88
|
"#{configuration.url}/cards"
|
59
89
|
end
|
60
90
|
|
61
|
-
def card_search_endpoint(
|
62
|
-
"#{configuration.url}/consumers/#{
|
91
|
+
def card_search_endpoint(consumer_uuid)
|
92
|
+
"#{configuration.url}/consumers/#{consumer_uuid}/cards/search"
|
63
93
|
end
|
64
94
|
|
65
95
|
def template_decks_endpoint
|
66
96
|
"#{configuration.url}/template_decks"
|
67
97
|
end
|
68
98
|
|
99
|
+
def template_cards_endpoint
|
100
|
+
"#{configuration.url}/template_cards"
|
101
|
+
end
|
102
|
+
|
69
103
|
def api_resource(http_method, url, payload = {})
|
70
104
|
RestClient::Request
|
71
105
|
.execute(
|
data/lib/sraas/consumer.rb
CHANGED
@@ -68,6 +68,7 @@ module Sraas
|
|
68
68
|
parse_json { get("#{consumer_url}/lessons") }
|
69
69
|
end
|
70
70
|
|
71
|
+
# Get all cards "index" json for the lesson and progress
|
71
72
|
def lesson(lesson_id)
|
72
73
|
lesson = parse_json { get("#{consumer_url}/lessons/#{lesson_id}") }
|
73
74
|
OpenStruct.new(progress: lesson['progress'], cards: lesson['cards'])
|
@@ -78,13 +79,27 @@ module Sraas
|
|
78
79
|
parse_json { get("#{Sraas.cards_endpoint}/bulk?#{{ids: card_uuids}.to_query}") }
|
79
80
|
end
|
80
81
|
|
81
|
-
# One card accessor
|
82
|
+
# One card accessor. This return card "full" json
|
82
83
|
def card(card_uuid)
|
83
84
|
parse_json { get("#{Sraas.cards_endpoint}/#{card_uuid}") }
|
84
85
|
end
|
85
86
|
|
86
|
-
|
87
|
-
|
87
|
+
# Children cards accessor. This returns card children "index" json
|
88
|
+
def card_children(card_uuid)
|
89
|
+
parse_json { get("#{Sraas.cards_endpoint}/#{card_uuid}/children") }
|
90
|
+
end
|
91
|
+
|
92
|
+
# Parents cards accessor. This returns card parents "index" json
|
93
|
+
def card_parents(card_uuid)
|
94
|
+
parse_json { get("#{Sraas.cards_endpoint}/#{card_uuid}/parents") }
|
95
|
+
end
|
96
|
+
|
97
|
+
def search_card(title, kind)
|
98
|
+
Sraas.search_card(self.consumer_uuid, title, kind)
|
99
|
+
end
|
100
|
+
|
101
|
+
def update_card(card_uuid, params = {})
|
102
|
+
Sraas.update_card(card_uuid, params)
|
88
103
|
end
|
89
104
|
|
90
105
|
def report(correct_ids, incorrect_ids)
|
@@ -105,7 +120,7 @@ module Sraas
|
|
105
120
|
deck_uuid = detect_deck_by_name(deck_name).dig('id')
|
106
121
|
return false unless deck_uuid
|
107
122
|
url = "#{Sraas.template_decks_endpoint}/#{deck_uuid}/add_to_consumer"
|
108
|
-
payload = { consumer_id: [consumer_uuid] }
|
123
|
+
payload = { consumer_id: [self.consumer_uuid] }
|
109
124
|
# TODO: Handle a request for a deck that doesn't exist elegantly.
|
110
125
|
# Right now this dies on the patch call:
|
111
126
|
data = Sraas.api_resource(:patch, url, payload)
|
@@ -114,12 +129,7 @@ module Sraas
|
|
114
129
|
|
115
130
|
# This is a public method to provide to views parsing JSON in JavaScript
|
116
131
|
def consumer_url
|
117
|
-
"#{Sraas.consumers_endpoint}/#{consumer_uuid}"
|
118
|
-
end
|
119
|
-
|
120
|
-
def update_card(card_uuid, params = {})
|
121
|
-
data = patch("#{Sraas.cards_endpoint}/#{card_uuid}", params)
|
122
|
-
data.code == 200
|
132
|
+
"#{Sraas.consumers_endpoint}/#{self.consumer_uuid}"
|
123
133
|
end
|
124
134
|
|
125
135
|
private
|
@@ -137,10 +147,6 @@ module Sraas
|
|
137
147
|
Sraas.api_resource(:get, url)
|
138
148
|
end
|
139
149
|
|
140
|
-
def patch(url, payload)
|
141
|
-
Sraas.api_resource(:patch, url, payload)
|
142
|
-
end
|
143
|
-
|
144
150
|
def parse_json(&block)
|
145
151
|
JSON.parse(block.call) if block_given?
|
146
152
|
end
|
data/lib/sraas/template_card.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Sraas
|
2
2
|
class TemplateCard
|
3
3
|
class << self
|
4
|
-
def index(offset:
|
4
|
+
def index(offset: 0, limit: 100)
|
5
5
|
paging = { limit: limit, offset: offset }.to_query
|
6
6
|
JSON.parse(Sraas.api_resource(:get, "#{template_cards_url}?#{paging}"))
|
7
7
|
end
|
@@ -10,6 +10,14 @@ module Sraas
|
|
10
10
|
JSON.parse(Sraas.api_resource(:get, "#{template_cards_url}/#{id}"))
|
11
11
|
end
|
12
12
|
|
13
|
+
def children(id)
|
14
|
+
JSON.parse(Sraas.api_resource(:get, "#{self.template_cards_url}/#{id}/children"))
|
15
|
+
end
|
16
|
+
|
17
|
+
def parents(id)
|
18
|
+
JSON.parse(Sraas.api_resource(:get, "#{self.template_cards_url}/#{id}/parents"))
|
19
|
+
end
|
20
|
+
|
13
21
|
private
|
14
22
|
|
15
23
|
def template_cards_url
|
@@ -20,6 +28,7 @@ module Sraas
|
|
20
28
|
@deck_uuid ||= detect_deck_by_name.dig('id')
|
21
29
|
end
|
22
30
|
|
31
|
+
# TODO: This should have a Sraas.io/template_decks/search?name=xxx instead of this.
|
23
32
|
def detect_deck_by_name
|
24
33
|
deck_name = Sraas.configuration.default_deck
|
25
34
|
Sraas.template_decks.detect { |deck| deck['name'] == deck_name } || {}
|
data/lib/sraas/version.rb
CHANGED