githabit 0.2.0 → 0.3.0
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 +4 -4
- data/githabit.gemspec +2 -1
- data/lib/githabit/app.rb +30 -25
- data/lib/githabit/version.rb +1 -1
- metadata +17 -4
- data/lib/githabit/habitrpg_api.rb +0 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3693ae5c5c9621047ecc21a8df57c2c37814ca79
|
4
|
+
data.tar.gz: e96c70e3c28390bafe7f33e718c1a3b6f8961995
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ffe42c81766b352cad25ac2e9d76281d5870197fb3223a7aea2e384a936519aa920168f3ceb4773edf94a49fa46bf849ce6cb8a239a4363d7c20dc20b6f2b207
|
7
|
+
data.tar.gz: 8621efbbac931617a25ad015fc08705ab95aef5c1fdcdbc24eac4bc4efd1f4b2b68023698301c2ee4283fa35ff293edbf9d73e6d5d2fb0f2c7b51dbf0266ebc0
|
data/githabit.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["Morgan Kesler"]
|
10
10
|
spec.email = ["keslerm@dasbiersec.com"]
|
11
11
|
|
12
|
-
spec.summary = "Automatically awards for tasks in HabitRPG based on github events."
|
12
|
+
spec.summary = "Automatically awards for tasks in HabitRPG based on github events."
|
13
13
|
spec.description = "Gamify your github work on GithabitRPG. This gem will automatically award those tasks for these events."
|
14
14
|
spec.homepage = "https://github.com/keslerm/githabit"
|
15
15
|
spec.license = "MIT"
|
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
24
|
spec.add_development_dependency "rest-client", "~> 1.8"
|
25
25
|
spec.add_development_dependency "github_api", "~> 0.12.3"
|
26
|
+
spec.add_development_dependency "habitrpg_api", "~> 0.0.1"
|
26
27
|
end
|
data/lib/githabit/app.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'pp'
|
3
3
|
require 'githabit/github_api'
|
4
|
-
require '
|
4
|
+
require 'habitrpg'
|
5
5
|
require 'githabit/cache'
|
6
6
|
|
7
7
|
module Githabit
|
@@ -15,7 +15,7 @@ module Githabit
|
|
15
15
|
|
16
16
|
# Init apis
|
17
17
|
@log.debug("Loading APIs")
|
18
|
-
@habit_api =
|
18
|
+
@habit_api = HabitRPG_API.new(@settings['habitrpg']['user'], @settings['habitrpg']['token'])
|
19
19
|
@github_api = GithubAPI.new(@settings['github']['user'], @settings['github']['password'])
|
20
20
|
|
21
21
|
# Initialize cache
|
@@ -72,42 +72,47 @@ module Githabit
|
|
72
72
|
new_events_found = 0
|
73
73
|
|
74
74
|
@log.info("Checking github for new events")
|
75
|
-
events = @github_api.get_user_events(@settings['github']['monitor_user'])
|
76
75
|
|
77
|
-
|
78
|
-
|
79
|
-
#
|
80
|
-
|
76
|
+
begin
|
77
|
+
events = @github_api.get_user_events(@settings['github']['monitor_user'])
|
78
|
+
# For now only push events
|
79
|
+
events.select { |e| e['type'] == 'PushEvent'}.each do |event|
|
80
|
+
# We only want pushes to master branches
|
81
|
+
next if event['payload']['ref'] != "refs/heads/master"
|
81
82
|
|
82
|
-
|
83
|
-
|
83
|
+
# Find how many commits
|
84
|
+
event['payload']['commits'].each do |commit|
|
84
85
|
|
85
|
-
|
86
|
-
|
86
|
+
# If already in the cache - skip it, we've already rewarded it
|
87
|
+
next if @cache.cached? ("Commit:#{commit['sha']}")
|
87
88
|
|
88
|
-
|
89
|
-
|
89
|
+
@log.info("Rewarding commit: " + commit['sha'] + " to repo: " + event['repo']['name'] + " Message: " + commit['message'])
|
90
|
+
@habit_api.score_task(@github_commit_task_id, 'up', nil)
|
90
91
|
|
91
|
-
|
92
|
-
|
92
|
+
new_events_found += 1
|
93
|
+
end
|
93
94
|
|
94
|
-
|
95
|
+
@cache.cache(event)
|
95
96
|
|
96
|
-
|
97
|
+
end
|
97
98
|
|
98
|
-
|
99
|
-
|
99
|
+
events.select { |e| e['type'] == 'IssuesEvent'}.each do |event|
|
100
|
+
next if @cache.cached? ("Issue:#{event['id']}") or event['payload']['action'] != 'closed'
|
100
101
|
|
101
|
-
|
102
|
+
@log.info("Rewarding closed issue for id: #{event['id']} Issue: #{event['payload']['issue']['title']}")
|
102
103
|
|
103
|
-
|
104
|
-
|
104
|
+
@habit_api.score_task(@github_issue_task_id, 'up', nil)
|
105
|
+
new_events_found += 1
|
105
106
|
|
106
|
-
|
107
|
+
@cache.cache(event)
|
107
108
|
|
108
|
-
|
109
|
+
end
|
109
110
|
|
110
|
-
|
111
|
+
@log.info("Found " + new_events_found.to_s + " new events this run")
|
112
|
+
end
|
113
|
+
rescue => e
|
114
|
+
@log.error("There was a problem communicating with the server")
|
115
|
+
@log.error(e)
|
111
116
|
end
|
112
117
|
end
|
113
118
|
end
|
data/lib/githabit/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: githabit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Morgan Kesler
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.12.3
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: habitrpg_api
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.0.1
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.0.1
|
69
83
|
description: Gamify your github work on GithabitRPG. This gem will automatically award
|
70
84
|
those tasks for these events.
|
71
85
|
email:
|
@@ -93,7 +107,6 @@ files:
|
|
93
107
|
- lib/githabit/app.rb
|
94
108
|
- lib/githabit/cache.rb
|
95
109
|
- lib/githabit/github_api.rb
|
96
|
-
- lib/githabit/habitrpg_api.rb
|
97
110
|
- lib/githabit/version.rb
|
98
111
|
homepage: https://github.com/keslerm/githabit
|
99
112
|
licenses:
|
@@ -115,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
128
|
version: '0'
|
116
129
|
requirements: []
|
117
130
|
rubyforge_project:
|
118
|
-
rubygems_version: 2.4.
|
131
|
+
rubygems_version: 2.4.7
|
119
132
|
signing_key:
|
120
133
|
specification_version: 4
|
121
134
|
summary: Automatically awards for tasks in HabitRPG based on github events.
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'json'
|
2
|
-
require 'rest_client'
|
3
|
-
require 'pp'
|
4
|
-
|
5
|
-
class HabitRPGAPI
|
6
|
-
|
7
|
-
def initialize(api_user, api_token)
|
8
|
-
@api_user = api_user
|
9
|
-
@api_token = api_token
|
10
|
-
end
|
11
|
-
|
12
|
-
def score_task(task_id, direction, task)
|
13
|
-
post("user/tasks/#{task_id}/#{direction}", task)
|
14
|
-
end
|
15
|
-
|
16
|
-
def list_tasks()
|
17
|
-
get("user/tasks")
|
18
|
-
end
|
19
|
-
|
20
|
-
def get_task(task_id)
|
21
|
-
get("user/tasks/#{task_id}")
|
22
|
-
end
|
23
|
-
|
24
|
-
def create_task(task)
|
25
|
-
post("user/tasks", task)
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
def delete(url, params = nil)
|
30
|
-
JSON.parse(RestClient.delete("https://habitrpg.com/api/v2/#{url}", { 'x-api-key' => @api_token, 'x-api-user' => @api_user }))
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
def post(url, params = nil)
|
35
|
-
JSON.parse(RestClient.put("https://habitrpg.com/api/v2/#{url}", params, { 'x-api-key' => @api_token, 'x-api-user' => @api_user }))
|
36
|
-
end
|
37
|
-
|
38
|
-
private
|
39
|
-
def post(url, params = nil)
|
40
|
-
JSON.parse(RestClient.post("https://habitrpg.com/api/v2/#{url}", params, { 'x-api-key' => @api_token, 'x-api-user' => @api_user }))
|
41
|
-
end
|
42
|
-
|
43
|
-
private
|
44
|
-
def get(url, params = nil)
|
45
|
-
JSON.parse(RestClient.get("https://habitrpg.com/api/v2/#{url}", { 'x-api-key' => @api_token, 'x-api-user' => @api_user }))
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|