bentrackergem 0.0.2 → 0.0.3

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: f74e9d9fa978f6ac460b7660b414ef0b770f5099
4
- data.tar.gz: 7438ac0d05316e42098eddfc4255999d9cb4797d
3
+ metadata.gz: a2e0356821bd677edd748f02a078290d5d40630e
4
+ data.tar.gz: bb2dbf507fcea1ebe0ecb7f8276ab282e7e55e68
5
5
  SHA512:
6
- metadata.gz: 9ed3d9bb3f27df18459162aaafc8b3a43a5d408824cf3a93b937e64f819c37ee0ef23962ac84941ab002c9380a1c9fde641aae429d37038a485d43c5a146fc85
7
- data.tar.gz: 8662a87258dee5c1e1a20e587240fe1c87d85fbd3346e7a6e204e5ec83963a2fa77b3a79cf1946d1f05f635717f5b4a93323e1a8a6691b1e6797574669209f9e
6
+ metadata.gz: 40d09c8bfc3a29f527a2f94b73fbef0c7566aa9b181b2c0a0a407935c2b982b0bee8e343d96cdd48b91dabc74fc2d68599619f72a0fa728ce0e044ab6cd3db61
7
+ data.tar.gz: 1a2409e3585c0ed88a6ac2c16fa1193c0059fefa3c6e108a4549a949b3d8bfab70df5e4e1c4b6ef476c38e5082d67510696456a9fbd8e9df4e77fd01f0abb5c4
data/README.md CHANGED
@@ -22,6 +22,8 @@ Post today's summary:
22
22
 
23
23
  `BenTrackerGem.post_message("What a great day!")`
24
24
 
25
+ Note that support for this feature is limited to users who have my username and password as env variables, or, me.
26
+
25
27
  Get today's stats:
26
28
 
27
29
  `BenTrackerGem.day_stats("2014-10-06")`
@@ -34,6 +36,14 @@ Get visual output of specific category:
34
36
 
35
37
  `BenTrackerGem.date_range_visual("code", "2014-10-03", "2014-10-06")`
36
38
 
39
+ See what's been going on over the last week:
40
+
41
+ `BenTrackerGem.diary`
42
+
43
+ See what I've been reading lately:
44
+
45
+ `BenTrackerGem.book_diary`
46
+
37
47
  ## Contributing
38
48
 
39
49
  1. Fork it ( https://github.com/benbrostoff/bentrackergem/fork )
@@ -6,13 +6,23 @@ require "date"
6
6
 
7
7
  module BenTrackerGem
8
8
 
9
- URL_GET = 'http://brostofftrack.herokuapp.com/history.json'
9
+ HISTORY = 'http://brostofftrack.herokuapp.com/history.json'
10
+ BOOK_HISTORY = 'http://brostofftrack.herokuapp.com/book_history.json'
10
11
  URL_POST = 'http://brostofftrack.herokuapp.com/email'
11
12
 
12
- VALID_CATS = ["message", "code", "fitness"]
13
+ VALID_CATS = ["message", "code", "fitness",
14
+ "author", "title", "time_reading"]
13
15
 
14
16
  def self.get_history
15
- JSON.parse(RestClient.get URL_GET).to_h["days"]
17
+ JSON.parse(RestClient.get HISTORY).to_h["days"]
18
+ end
19
+
20
+ def self.get_book_history
21
+ books = JSON.parse(RestClient.get BOOK_HISTORY).to_h["books"]
22
+ books.each do |book|
23
+ book["created_at"] = book["created_at"][0..9]
24
+ end
25
+ return books
16
26
  end
17
27
 
18
28
  def self.valid_format(date)
@@ -24,37 +34,52 @@ module BenTrackerGem
24
34
  date
25
35
  end
26
36
 
27
- def self.filter_hash(hash)
28
- {:day_of => hash["day_of"],
29
- :message => hash["message"],
30
- :code => hash["code"],
31
- :fitness => hash["fitness"]}
37
+ def self.filter_hash(hash, book_flag = 0)
38
+ if book_flag == 0
39
+ return {:day_of => hash["day_of"],
40
+ :message => hash["message"],
41
+ :code => hash["code"],
42
+ :fitness => hash["fitness"]}
43
+ else
44
+ return {:created_at => hash["created_at"],
45
+ :title => hash["title"],
46
+ :author => hash["author"],
47
+ :time_reading => hash["time_reading"]}
48
+ end
32
49
  end
33
50
 
34
- def self.day_stats(date)
51
+ def self.day_stats(date, book_flag = 0)
35
52
  date = valid_format(date)
36
- get_history.each do |summary|
37
- if summary["day_of"] == date
38
- return filter_hash(summary)
53
+ all, key = get_history, "day_of" if book_flag == 0
54
+ all, key = get_book_history, "created_at" if book_flag == 1
55
+ all.each do |summary|
56
+ if summary[key] == date
57
+ return filter_hash(summary, book_flag)
39
58
  end
40
59
  end
41
60
  end
42
61
 
43
- def self.date_range(begin_date, end_date)
62
+ def self.date_range(begin_date, end_date, book_flag = 0)
44
63
  begin_date, end_date, hold = valid_format(begin_date), valid_format(end_date), []
45
- filter = get_history.select { |summary| summary["day_of"] >= begin_date &&
46
- summary["day_of"] <= end_date }.
47
- map { |summary| day_stats(summary["day_of"]) }.
48
- sort_by { |summary| summary[:day_of] }
64
+ all, key = get_history, "day_of" if book_flag == 0
65
+ all, key = get_book_history, "created_at" if book_flag == 1
66
+
67
+ all.select { |summary| summary[key] >= begin_date &&
68
+ summary[key] <= end_date }.
69
+ map { |summary| day_stats(summary[key], book_flag) }.
70
+ sort_by { |summary| summary[key.to_sym] }
49
71
  end
50
72
 
51
- def self.date_range_visual(req, begin_date, end_date, sort = 0)
73
+ def self.date_range_visual(req, begin_date, end_date, book_flag = 0, sort = 0)
52
74
  raise ArgumentError, "must select valid category" if !VALID_CATS.include? req
53
75
 
54
- filter = date_range(begin_date, end_date)
76
+ filter, key = date_range(begin_date, end_date), "day_of".to_sym if book_flag == 0
77
+ filter, key = date_range(begin_date, end_date, 1), "created_at".to_sym if book_flag == 1
55
78
  filter = filter.reverse if sort == 1
79
+
56
80
  filter.each do |visi|
57
- puts visi[:day_of] + ". " + visi[req.to_sym].to_s
81
+ puts visi[key.to_sym] + ". " + visi[req.to_sym].to_s if book_flag == 0
82
+ puts visi[key.to_sym] + ". " + visi[:title].to_s + " by " + visi[:author].to_s if book_flag == 1
58
83
  end
59
84
  "COMPLETE"
60
85
  end
@@ -65,12 +90,21 @@ module BenTrackerGem
65
90
  Chronic.parse(end_date).to_s[0..9])
66
91
  end
67
92
 
93
+ def self.book_diary(begin_date = "last week", end_date = "today")
94
+ date_range_visual("title",
95
+ Chronic.parse(begin_date).to_s[0..9],
96
+ Chronic.parse(end_date).to_s[0..9],
97
+ 1)
98
+ end
99
+
68
100
  def self.post_message(message)
69
101
  raise ArgumentError, "must enter message as String" if !message.is_a? String
70
102
 
71
- RestClient.post URL_POST, { 'message' => message }.to_json,
72
- :content_type => :json,
73
- :accept => :json
103
+ # Must have valid credentials as environment variables
104
+ user = ENV['bg_user']
105
+ pass = ENV['bg_pass']
106
+ curl = "curl -d message='#{message}' -u #{user}:#{pass} #{URL_POST}"
107
+ system(curl)
74
108
  end
75
109
 
76
110
  end
@@ -1,3 +1,3 @@
1
1
  module BenTrackerGem
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -22,8 +22,7 @@ describe 'BenTrackerGem' do
22
22
  end
23
23
 
24
24
  it "successfully posts the data " do
25
- expect(response_post.code).to eq(200)
26
- expect(response_post).to eq("{}")
25
+ expect(response_post).to eq(true)
27
26
  end
28
27
 
29
28
  end
@@ -83,6 +82,12 @@ describe 'BenTrackerGem' do
83
82
  BenTrackerGem.date_range_visual("message", "2014-10-08", "2014-10-15")
84
83
  ).to eq("COMPLETE")
85
84
  end
85
+
86
+ it "should execute without error when valid category and dates are input on a book" do
87
+ expect(
88
+ BenTrackerGem.date_range_visual("author", "2014-11-01", "2014-11-15", 1)
89
+ ).to eq("COMPLETE")
90
+ end
86
91
 
87
92
  end
88
93
 
@@ -102,4 +107,18 @@ describe 'BenTrackerGem' do
102
107
 
103
108
  end
104
109
 
110
+ context "#book_diary" do
111
+ it "should replicate #date_range_visual with last week's info by default" do
112
+ expect(
113
+ BenTrackerGem.book_diary
114
+ ).to eq("COMPLETE")
115
+ end
116
+
117
+ it "should allow for optional arguments" do
118
+ expect(
119
+ BenTrackerGem.book_diary("three days ago", "today")
120
+ ).to eq("COMPLETE")
121
+ end
122
+ end
123
+
105
124
  end
metadata CHANGED
@@ -1,111 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bentrackergem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Brostoff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-16 00:00:00.000000000 Z
11
+ date: 2014-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.6'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: json
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rest_client
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: date
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: chronic
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  description: Leverages FitBit and GitHub to track fitness and code; messages can be
@@ -116,8 +116,8 @@ executables: []
116
116
  extensions: []
117
117
  extra_rdoc_files: []
118
118
  files:
119
- - .gitignore
120
- - .rspec
119
+ - ".gitignore"
120
+ - ".rspec"
121
121
  - Gemfile
122
122
  - LICENSE.txt
123
123
  - README.md
@@ -136,17 +136,17 @@ require_paths:
136
136
  - lib
137
137
  required_ruby_version: !ruby/object:Gem::Requirement
138
138
  requirements:
139
- - - '>='
139
+ - - ">="
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
142
  required_rubygems_version: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - '>='
144
+ - - ">="
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
147
  requirements: []
148
148
  rubyforge_project:
149
- rubygems_version: 2.4.1
149
+ rubygems_version: 2.2.2
150
150
  signing_key:
151
151
  specification_version: 4
152
152
  summary: A simple Ruby gem that serves as my virtual code, fitness and diary tracker.