everlog 0.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/Guardfile +8 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/everlog.gemspec +33 -0
- data/lib/everlog.rb +42 -0
- data/lib/everlog/app.rb +15 -0
- data/lib/everlog/app/animetick.rb +14 -0
- data/lib/everlog/app/evernote.rb +9 -0
- data/lib/everlog/app/github.rb +9 -0
- data/lib/everlog/app/hatena.rb +13 -0
- data/lib/everlog/app/moves.rb +9 -0
- data/lib/everlog/app/twitter.rb +11 -0
- data/lib/everlog/app/weather.rb +9 -0
- data/lib/everlog/dom.rb +9 -0
- data/lib/everlog/dom/entity.rb +11 -0
- data/lib/everlog/dom/entity/config.rb +30 -0
- data/lib/everlog/dom/entity/content.erb +170 -0
- data/lib/everlog/dom/entity/content.rb +14 -0
- data/lib/everlog/dom/module.rb +6 -0
- data/lib/everlog/dom/module/github.rb +28 -0
- data/lib/everlog/dom/module/moves.rb +26 -0
- data/lib/everlog/dom/repository.rb +5 -0
- data/lib/everlog/dom/repository/evernote.rb +24 -0
- data/lib/everlog/dom/service.rb +5 -0
- data/lib/everlog/dom/service/nullobject.rb +18 -0
- data/lib/everlog/dom/value.rb +18 -0
- data/lib/everlog/dom/value/animetick.rb +25 -0
- data/lib/everlog/dom/value/github.rb +6 -0
- data/lib/everlog/dom/value/github/activity.rb +18 -0
- data/lib/everlog/dom/value/github/commit.rb +13 -0
- data/lib/everlog/dom/value/hatena.rb +20 -0
- data/lib/everlog/dom/value/moves.rb +16 -0
- data/lib/everlog/dom/value/moves/move.rb +31 -0
- data/lib/everlog/dom/value/moves/place.rb +13 -0
- data/lib/everlog/dom/value/moves/referer.rb +10 -0
- data/lib/everlog/dom/value/moves/referer/move.rb +7 -0
- data/lib/everlog/dom/value/moves/referer/place.rb +8 -0
- data/lib/everlog/dom/value/moves/summary.rb +30 -0
- data/lib/everlog/dom/value/twitter.rb +13 -0
- data/lib/everlog/dom/value/weather.rb +31 -0
- data/lib/everlog/inf.rb +5 -0
- data/lib/everlog/inf/api.rb +20 -0
- data/lib/everlog/inf/api/animetick.rb +25 -0
- data/lib/everlog/inf/api/evernote.rb +37 -0
- data/lib/everlog/inf/api/github.rb +26 -0
- data/lib/everlog/inf/api/googlemap.rb +15 -0
- data/lib/everlog/inf/api/hatena.rb +20 -0
- data/lib/everlog/inf/api/moves.rb +21 -0
- data/lib/everlog/inf/api/twitter.rb +26 -0
- data/lib/everlog/inf/api/wunderground.rb +15 -0
- data/lib/everlog/version.rb +3 -0
- data/spec/fixtures/animetick/list_ticket_response.json +1 -0
- data/spec/fixtures/hatena/feed_response.json +80 -0
- data/spec/fixtures/moves/daily_storyline_response.json +319 -0
- data/spec/fixtures/moves/daily_summary_response.json +29 -0
- data/spec/fixtures/moves/sample_for_erb.json +29 -0
- data/spec/fixtures/wunderground/yesterday_response.json +1 -0
- data/spec/lifelog/app/animetick_spec.rb +13 -0
- data/spec/lifelog/app/evernote_spec.rb +14 -0
- data/spec/lifelog/app/github_spec.rb +22 -0
- data/spec/lifelog/app/hatena_spec.rb +35 -0
- data/spec/lifelog/app/moves_spec.rb +9 -0
- data/spec/lifelog/app/twitter_spec.rb +33 -0
- data/spec/lifelog/app/weather_spec.rb +11 -0
- data/spec/lifelog/dom/entity/config_spec.rb +22 -0
- data/spec/lifelog/dom/entity/content_spec.rb +23 -0
- data/spec/lifelog/dom/module/github_spec.rb +60 -0
- data/spec/lifelog/dom/module/moves_spec.rb +37 -0
- data/spec/lifelog/dom/repository/evernote_spec.rb +26 -0
- data/spec/lifelog/dom/service/nullobject_spec.rb +19 -0
- data/spec/lifelog/dom/value/animetick_spec.rb +49 -0
- data/spec/lifelog/dom/value/github/activity_spec.rb +25 -0
- data/spec/lifelog/dom/value/github/commit_spec.rb +23 -0
- data/spec/lifelog/dom/value/hatena_spec.rb +23 -0
- data/spec/lifelog/dom/value/moves/move_spec.rb +45 -0
- data/spec/lifelog/dom/value/moves/place_spec.rb +18 -0
- data/spec/lifelog/dom/value/moves/referer/move_spec.rb +18 -0
- data/spec/lifelog/dom/value/moves/referer/place_spec.rb +17 -0
- data/spec/lifelog/dom/value/moves/summary_spec.rb +64 -0
- data/spec/lifelog/dom/value/twitter_spec.rb +23 -0
- data/spec/lifelog/dom/value/weather_spec.rb +43 -0
- data/spec/lifelog/inf/api/animetick_spec.rb +22 -0
- data/spec/lifelog/inf/api/evernote_spec.rb +49 -0
- data/spec/lifelog/inf/api/github_spec.rb +36 -0
- data/spec/lifelog/inf/api/googlemap_spec.rb +9 -0
- data/spec/lifelog/inf/api/hatena_spec.rb +23 -0
- data/spec/lifelog/inf/api/moves_spec.rb +13 -0
- data/spec/lifelog/inf/api/twitter_spec.rb +23 -0
- data/spec/lifelog/inf/api/wunderground_spec.rb +11 -0
- data/spec/spec_helper.rb +8 -0
- metadata +345 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class Dom::Entity::Content < Dom::Entity
|
|
3
|
+
require 'erb'
|
|
4
|
+
|
|
5
|
+
def push(name, value)
|
|
6
|
+
instance_variable_set("@#{name}", value)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def render
|
|
10
|
+
template = File.open(File.dirname(__FILE__) + '/content.erb').read.delete("\n")
|
|
11
|
+
ERB.new(template).result(binding)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class Dom::Module::Github
|
|
3
|
+
|
|
4
|
+
def initialize api_config
|
|
5
|
+
@api_config = api_config
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def api_client
|
|
9
|
+
@api_client ||= Inf::Api::Github.new(@api_config)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def repo_names
|
|
13
|
+
api_client.repos.map { |r| r.full_name }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def repo_activity(repo_name, date)
|
|
17
|
+
repo_commits = commits(repo_name.sub(/.*\//, ''), date)
|
|
18
|
+
return nil if repo_commits.nil?
|
|
19
|
+
Dom::Value::Github::Repository_Activity.new(repo_name, repo_commits)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def commits(repo, date)
|
|
23
|
+
response = api_client.commits_on(repo, date)
|
|
24
|
+
return nil if response.empty?
|
|
25
|
+
response.map { |r| Dom::Value::Github::Commit.new(r) }.reverse
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class Dom::Module::Moves
|
|
3
|
+
def initialize config
|
|
4
|
+
@config = config
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def moves_api
|
|
8
|
+
@moves_api ||= Inf::Api::Moves.new(@config)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def storyline
|
|
12
|
+
moves_api.daily_storyline.map do |story|
|
|
13
|
+
case story['type']
|
|
14
|
+
when 'place'
|
|
15
|
+
Dom::Value::Moves::Referer::Place.new story
|
|
16
|
+
when 'move'
|
|
17
|
+
Dom::Value::Moves::Referer::Move.new story
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def summary
|
|
23
|
+
Dom::Value::Moves::Summary.new(moves_api.daily_summary)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class Dom::Repository::Evernote < Dom::Repository
|
|
3
|
+
TARGET = 'lifelog'
|
|
4
|
+
|
|
5
|
+
def initialize(is_sandbox, config)
|
|
6
|
+
@is_sandbox = is_sandbox
|
|
7
|
+
@config = config
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def api_client
|
|
11
|
+
@api_client ||= Inf::Api::Evernote.new(@is_sandbox, @config)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def save(title, content)
|
|
15
|
+
api_client.note.notebookGuid = get_guid_forcibly TARGET
|
|
16
|
+
api_client.post_note(title, content)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def get_guid_forcibly notebook_name
|
|
20
|
+
api_client.notebooks.each {|n| return n.guid if n.name == notebook_name }
|
|
21
|
+
api_client.create_notebook(notebook_name).guid
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class NullObject
|
|
3
|
+
def method_missing(*args, &block)
|
|
4
|
+
self
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def to_a; []; end
|
|
8
|
+
def to_s; ''; end
|
|
9
|
+
def to_i; 0; end
|
|
10
|
+
def to_f; 0.0; end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
module Maybe
|
|
14
|
+
def maybe value
|
|
15
|
+
value.nil? ? NullObject.new : value
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class Dom::Value
|
|
3
|
+
require 'everlog/dom/value/twitter'
|
|
4
|
+
require 'everlog/dom/value/hatena'
|
|
5
|
+
require 'everlog/dom/value/github'
|
|
6
|
+
require 'everlog/dom/value/moves'
|
|
7
|
+
require 'everlog/dom/value/animetick'
|
|
8
|
+
require 'everlog/dom/value/weather'
|
|
9
|
+
|
|
10
|
+
def initialize(response)
|
|
11
|
+
@response = response
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def parse_to_His date
|
|
15
|
+
date.sub(/\d{4}-\d{2}-\d{2}\ /, '').match(/\d{2}:\d{2}/).to_s
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class Dom::Value::Animetick < Dom::Value
|
|
3
|
+
include Maybe
|
|
4
|
+
|
|
5
|
+
def title
|
|
6
|
+
maybe(@response['title']).to_s
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def sub_title
|
|
10
|
+
maybe(@response['sub_title']).to_s
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def count
|
|
14
|
+
maybe(@response['count']).to_i
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def updated_at
|
|
18
|
+
DateTime.parse(@response['updated_at']).to_time
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def updated_at_screen
|
|
22
|
+
parse_to_His(maybe(@response['updated_at']).to_s)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class Dom::Value::Github::Repository_Activity < Dom::Value::Github
|
|
3
|
+
include Maybe
|
|
4
|
+
|
|
5
|
+
def initialize(repo_name, repo_commits)
|
|
6
|
+
@repo_name = repo_name
|
|
7
|
+
@commits = repo_commits
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def repo_name
|
|
11
|
+
maybe(@repo_name).to_s
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def commits
|
|
15
|
+
maybe(@commits).to_a
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class Dom::Value::Hatena < Dom::Value
|
|
3
|
+
include Maybe
|
|
4
|
+
|
|
5
|
+
def title
|
|
6
|
+
maybe(@response['title']).to_s
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def link
|
|
10
|
+
@response['link'].first['href']
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def issued
|
|
14
|
+
row_string = maybe(@response['issued']).to_s
|
|
15
|
+
DateTime.parse(row_string).to_time
|
|
16
|
+
rescue ArgumentError
|
|
17
|
+
Time.parse('00:00:00')
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class Dom::Value::Moves < Dom::Value
|
|
3
|
+
require 'everlog/dom/value/moves/summary'
|
|
4
|
+
require 'everlog/dom/value/moves/place'
|
|
5
|
+
require 'everlog/dom/value/moves/move'
|
|
6
|
+
require 'everlog/dom/value/moves/referer'
|
|
7
|
+
|
|
8
|
+
def round_off float
|
|
9
|
+
"%.1f" % float
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def km
|
|
13
|
+
1000
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class Dom::Value::Moves::Move < Dom::Value::Moves
|
|
3
|
+
include Maybe
|
|
4
|
+
|
|
5
|
+
def action
|
|
6
|
+
maybe(@response['activity']).to_s
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def duration
|
|
10
|
+
duration = maybe(@response['duration'])
|
|
11
|
+
round_off((duration.to_f / 60))
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def start_time
|
|
15
|
+
parse_to_His(pick_today(maybe(@response['startTime'].to_s)))
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def end_time
|
|
19
|
+
parse_to_His(pick_today(maybe(@response['endTime'].to_s)))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def distance
|
|
23
|
+
maybe(@response['distance']).to_f / km
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
def pick_today response
|
|
28
|
+
DateTime.parse(response).to_time.to_s
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class Dom::Value::Moves::Summary < Dom::Value::Moves
|
|
3
|
+
include Maybe
|
|
4
|
+
def initialize response
|
|
5
|
+
@response = maybe(response)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def walk
|
|
9
|
+
maybe(pick('wlk'))['distance'].to_f / km
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def cycle
|
|
13
|
+
maybe(pick('cyc'))['distance'].to_f / km
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def transport
|
|
17
|
+
maybe(pick('trp'))['distance'].to_f / km
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def cal
|
|
21
|
+
@response.map {|r| maybe(r["calories"]).to_i }.inject(:+)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
def pick activity
|
|
26
|
+
@response.each { |r| return r if r['activity'] == activity }
|
|
27
|
+
nil
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class Dom::Value::Weather < Dom::Value
|
|
3
|
+
include Maybe
|
|
4
|
+
|
|
5
|
+
def max_temp
|
|
6
|
+
maybe(tempms.each.max).to_i
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def min_temp
|
|
10
|
+
maybe(tempms.each.min).to_i
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def condition
|
|
14
|
+
cond = maybe(icons.each.max).to_s
|
|
15
|
+
cond == 'unknown' ? 'sunny' : cond
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
def tempms
|
|
20
|
+
select_observations { |r| r['tempm'].to_f }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def icons
|
|
24
|
+
select_observations { |r| r['icon'] }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def select_observations ¶meter
|
|
28
|
+
maybe(@response)['observations'].to_a.map { |r| parameter.call(r) }
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
data/lib/everlog/inf.rb
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
class Everlog
|
|
2
|
+
class Inf::Api
|
|
3
|
+
require 'everlog/inf/api/twitter'
|
|
4
|
+
require 'everlog/inf/api/hatena'
|
|
5
|
+
require 'everlog/inf/api/github'
|
|
6
|
+
require 'everlog/inf/api/evernote'
|
|
7
|
+
require 'everlog/inf/api/googlemap'
|
|
8
|
+
require 'everlog/inf/api/moves'
|
|
9
|
+
require 'everlog/inf/api/animetick'
|
|
10
|
+
require 'everlog/inf/api/wunderground'
|
|
11
|
+
|
|
12
|
+
def initialize config
|
|
13
|
+
@config = config
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def client
|
|
17
|
+
raise 'no implemented.'
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|