sraas 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
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