sraas 0.2.5 → 0.2.6

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/sraas +65 -7
  3. data/lib/sraas/version.rb +1 -1
  4. metadata +15 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f7d1ea1fcf540c038fec64d167ca0ecb8a0532ee
4
- data.tar.gz: 835571d14ca233c60a5a198169637ffa37a7759f
3
+ metadata.gz: 7cec7776f444f2e21badf296554f2a25d5234019
4
+ data.tar.gz: cc3e070e3e4a05d55156f37f9ea9d6f279d5a1d1
5
5
  SHA512:
6
- metadata.gz: a5527696865993c112540c5b18bb6f14623a956ca70f0392c49b85ed4cd7d8daf49bc18ad1139adb9edc8473955229dd79d70b5c7b0cd0c53c001bb4a4413c8c
7
- data.tar.gz: 6632d5ef99f6983b806f5aed9ccb72319418a8615ddddad7569ee5a6260fa5e527894734f1d2a285047099a88e832d170f2920e907277a8fa879eb475a356c3e
6
+ metadata.gz: da6f4bf03e8dfc166ce09aa4e1ef6baabbb1c421ab753033213bb5ca099a249835920f81e698e67aa58716a7dc931347351cd40a1220324755f7d5c15d10397b
7
+ data.tar.gz: 6ea49851946eb4623d543ffc727ee9d8ff5c0ed9d2bf33ad59e523c74e5ebe1c1ad402bced2203679d004561fd6ebe5c88e54d2aec0d7ba0f5fa9898ac2aa376
data/bin/sraas CHANGED
@@ -2,9 +2,10 @@
2
2
  require 'bundler/setup'
3
3
  require 'hanami/cli'
4
4
  require 'io/console'
5
+ require 'nokogiri'
6
+ require 'colorize'
5
7
  require 'sraas'
6
8
  require 'json'
7
- require 'sdbm'
8
9
  require 'pry'
9
10
 
10
11
  module Sraas
@@ -79,13 +80,70 @@ module Sraas
79
80
 
80
81
  example [SecureRandom.uuid]
81
82
 
82
- def call(uuid: , **)
83
- response = fetch_info(uuid)
84
- text = "[#{response['current_lesson']}/"
85
- text += "#{response['lesson_count']}]"
86
- File.write(LOG, text)
87
- puts text
83
+ def call(uuid:, **)
84
+ use_credentials
85
+ response = JSON.parse(consumer_review(uuid))
86
+ reviews = Mapper.new(response).as_cards
87
+ reviews.each do |question|
88
+ puts question.wording
89
+ user_input = STDIN.gets.chomp
90
+ payload = question.payload(user_input)
91
+ answer = JSON.parse(consumer_answer(uuid, payload))
92
+ puts answer['result'] == 'correct' ? 'ok'.green : 'no'.red
93
+ end
94
+ end
95
+
96
+ def consumer_review(uuid)
97
+ Sraas.api_resource(:get, "#{consumer_url(uuid)}/review")
88
98
  end
99
+
100
+ def consumer_answer(uuid, payload)
101
+ Sraas.api_resource(:post, "#{consumer_url(uuid)}/review_answer", payload)
102
+ end
103
+
104
+ class Mapper < Struct.new(:response)
105
+ def as_cards
106
+ response['questions'].map(&to_card)
107
+ end
108
+
109
+ private
110
+
111
+ def to_card
112
+ method(:map_card).to_proc
113
+ end
114
+
115
+ def map_card(card)
116
+ Card.new(
117
+ quiz_id: response['quiz_id'],
118
+ id: card['card_id'],
119
+ front: card['front'],
120
+ meaning: card['learn_tabs'][0]['body'],
121
+ prompt: card['prompt'],
122
+ answers: card['answer'],
123
+ kind: card['card_type']
124
+ )
125
+ end
126
+ end
127
+
128
+ class Card < OpenStruct
129
+ def format(html)
130
+ Nokogiri::HTML(html).text
131
+ end
132
+
133
+ def wording
134
+ "What is this #{kind.downcase} #{prompt.downcase}?\n#{format(front).cyan}"
135
+ end
136
+
137
+ def payload(answer)
138
+ {}.tap do |payload|
139
+ payload['quiz_id'] = quiz_id
140
+ payload['question'] = prompt
141
+ payload['card_id'] = id
142
+ payload['answer'] = answer
143
+ end
144
+ end
145
+ end
146
+
89
147
  end
90
148
  end
91
149
 
@@ -1,3 +1,3 @@
1
1
  module Sraas
2
- VERSION = '0.2.5'
2
+ VERSION = '0.2.6'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sraas
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Siegel
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: colorize
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: sqlite3
57
71
  requirement: !ruby/object:Gem::Requirement