sraas 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 976687dbc60a097bdeb24f7c1c68bd8b92492d25
4
- data.tar.gz: 6a22d1b74c7a15624569aecd11af24d9548ffeff
3
+ metadata.gz: f7d1ea1fcf540c038fec64d167ca0ecb8a0532ee
4
+ data.tar.gz: 835571d14ca233c60a5a198169637ffa37a7759f
5
5
  SHA512:
6
- metadata.gz: a4c95e2e38ff5a4aed083a1500ebdc3164c32e1114fa64e9beb7f4013ea7460d9d5caeaa90938043502eb2aa7ab14d255249fa63ac593d5e67bc66a598d3212d
7
- data.tar.gz: e110e7f96c4335f1c41f528917bfed62f916594ade52c0304027f667a349af49c09123ee256f178bdd542feda9e30711017b97a60d613646a6045fc8465976a3
6
+ metadata.gz: a5527696865993c112540c5b18bb6f14623a956ca70f0392c49b85ed4cd7d8daf49bc18ad1139adb9edc8473955229dd79d70b5c7b0cd0c53c001bb4a4413c8c
7
+ data.tar.gz: 6632d5ef99f6983b806f5aed9ccb72319418a8615ddddad7569ee5a6260fa5e527894734f1d2a285047099a88e832d170f2920e907277a8fa879eb475a356c3e
data/bin/sraas CHANGED
@@ -1,5 +1,115 @@
1
1
  #!/usr/bin/env ruby
2
-
2
+ require 'bundler/setup'
3
+ require 'hanami/cli'
4
+ require 'io/console'
3
5
  require 'sraas'
4
- puts Sraas.hi
6
+ require 'json'
7
+ require 'sdbm'
8
+ require 'pry'
9
+
10
+ module Sraas
11
+ module CLI
12
+ module Commands
13
+ extend Hanami::CLI::Registry
14
+ CRED = "#{ENV['HOME']}/.sraas".freeze
15
+ LOG = "#{ENV['HOME']}/.sraas.log".freeze
16
+
17
+ class Login < Hanami::CLI::Command
18
+ desc 'Stores login information'
19
+
20
+ def call(*)
21
+ puts 'Enter API Key'
22
+ api_key = STDIN.noecho(&:gets).chomp
23
+ File.write(CRED, api_key)
24
+ end
25
+ end
26
+
27
+ class SraasSectet < Hanami::CLI::Command
28
+ def use_credentials
29
+ Sraas.configuration.api_key = File.read(CRED)
30
+ end
31
+ end
32
+
33
+ class Consumers < SraasSectet
34
+ desc 'Stores consumers UUIDs'
35
+
36
+ def call(*)
37
+ use_credentials
38
+ response = ::JSON.parse(Sraas.consumers)
39
+ ids = response.map do |consumer|
40
+ consumer['id']
41
+ end
42
+ File.write(LOG, ids.join("\n"))
43
+ puts ids.join("\n")
44
+ end
45
+ end
46
+
47
+ module Info
48
+ class Consumer < SraasSectet
49
+ desc 'Fetches consumer information'
50
+
51
+ argument :uuid, desc: 'Consumer UUID'
52
+
53
+ example [SecureRandom.uuid]
54
+
55
+ def call(uuid: , **)
56
+ response = fetch_info(uuid)
57
+ text = "Info for Consumer #{uuid}. "
58
+ text += "Learns available: #{response['available_to_learn']} "
59
+ text += "Reviews available: #{response['available_to_review']}"
60
+ File.write(LOG, text)
61
+ puts text
62
+ end
63
+
64
+ def consumer_url(uuid)
65
+ "#{Sraas.consumers_endpoint}/#{uuid}"
66
+ end
67
+
68
+ def fetch_info(uuid)
69
+ use_credentials
70
+ url = consumer_url(uuid)
71
+ Sraas.sraas_consumer_info(url)
72
+ end
73
+ end
74
+ end
75
+
76
+ module Review
77
+ class Consumer < Info::Consumer
78
+ argument :uuid, desc: 'Consumer UUID'
79
+
80
+ example [SecureRandom.uuid]
81
+
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
88
+ end
89
+ end
90
+ end
91
+
92
+ # Just for testing
93
+ class Version < Hanami::CLI::Command
94
+ desc 'Shows current version of the gem'
95
+
96
+ def call(*)
97
+ puts Sraas::VERSION
98
+ end
99
+ end
100
+
101
+ register 'version', Version, aliases: ['v', '-v', '--version']
102
+ register 'login', Login
103
+ register 'consumers', Consumers
104
+
105
+ register 'info', aliases: ['i', '-i'] do |prefix|
106
+ prefix.register 'consumer', Info::Consumer, aliases: ['c', '-c']
107
+ end
5
108
 
109
+ register 'review' do |prefix|
110
+ prefix.register 'consumer', Review::Consumer, aliases: ['c', '-c']
111
+ end
112
+ end
113
+ end
114
+ end
115
+ Hanami::CLI.new(Sraas::CLI::Commands).call
data/lib/sraas.rb CHANGED
@@ -6,6 +6,7 @@ require 'sraas/configuration'
6
6
 
7
7
  module Sraas
8
8
  NoAPIKey = Class.new(StandardError)
9
+ DeckNotFound = Class.new(StandardError)
9
10
 
10
11
  class << self
11
12
  def configuration
@@ -36,6 +37,10 @@ module Sraas
36
37
  @cache = consumers.inject({}) { |a, v| k = v['id']; a[k] = v; a }
37
38
  end
38
39
 
40
+ def consumers
41
+ api_resource(:get, consumers_endpoint)
42
+ end
43
+
39
44
  def consumers_endpoint
40
45
  "#{configuration.url}/consumers"
41
46
  end
@@ -18,7 +18,7 @@ module Sraas
18
18
 
19
19
  def configure_sraas_consumer!
20
20
  create_sraas(consumer_uuid: new_consumer['id'], sraas_consumerable: self)
21
- sraas&.add_template_deck_by_name(self.class.sraas_default_deck) if self.class.sraas_default_deck
21
+ add_deck || fail(Sraas::DeckNotFound)
22
22
  end
23
23
 
24
24
  def consumer_id
@@ -27,6 +27,19 @@ module Sraas
27
27
 
28
28
  private
29
29
 
30
+ def add_deck
31
+ return true if specified_deck.nil?
32
+ specified_deck && add_default_deck
33
+ end
34
+
35
+ def add_default_deck
36
+ sraas.add_template_deck_by_name(specified_deck)
37
+ end
38
+
39
+ def specified_deck
40
+ self.class.sraas_default_deck
41
+ end
42
+
30
43
  def new_consumer
31
44
  Sraas.sraas_consumer_create(email, tags)
32
45
  end
data/lib/sraas/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Sraas
2
- VERSION = '0.2.4'
2
+ VERSION = '0.2.5'
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.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Siegel
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 5.0.6
41
+ - !ruby/object:Gem::Dependency
42
+ name: hanami-cli
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: sqlite3
43
57
  requirement: !ruby/object:Gem::Requirement