civility 3 → 4

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: 961441008c19039aec77918332dc3cf6d4b61311
4
- data.tar.gz: 8521738ff666ecdd6056d813e629d48d9d0749c2
3
+ metadata.gz: b3ade38cc74649b6ef0d584613677e929ec52591
4
+ data.tar.gz: 62ee2085ff12225da1472669b0f2137fe9b267fc
5
5
  SHA512:
6
- metadata.gz: 49ed95a2664faa60d21a9752eb46d432600a0459bd3cb4a2c15fd2021cd088d208fe7ca2a8528e8423bf4882c86acdb76e94d6ece9fbeaf0050a095de0ddec99
7
- data.tar.gz: 28fc93c4ff0b164980efe64ef44bf3d2f3cd940477619ef05582ddccf7bc1a7e00c4a7d7788432a59debb22927b896a37eba9df4aa4a6c6f7677bf43dc4a10d7
6
+ metadata.gz: ae6071278cab83b336f81f1bdc5125a47c9f60b7305b67d7bb0180b4a9ab369015c4fefdaf0254a802897d18d54b1e982d081ebecf8413aef8f19a08dfeae78e
7
+ data.tar.gz: dcad9e61fbd760a2fc1cf3cf80484f608ce248810e89e82207793f80fee172f5939e51c9dcef133ae1de8e6583c648ec7f0e05fa1a5463f06e2492dd730f6bf5
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/civility.rb CHANGED
@@ -5,7 +5,7 @@ require 'yaml'
5
5
  require 'thor'
6
6
 
7
7
  class Civility < Thor
8
- VERSION = '3'
8
+ VERSION = '4'
9
9
  SAVE_DIRECTORY = "/Documents/Aspyr/Sid\ Meier\'s\ Civilization\ 5/Saves/hotseat/"
10
10
  FILE_PREFIX = 'civility'
11
11
  FILE_EXT = 'Civ5Save'
@@ -18,6 +18,7 @@ class Civility < Thor
18
18
  end
19
19
 
20
20
  desc 'auth', 'Save auth key'
21
+ option aliases: :a
21
22
  def auth(auth_key = nil)
22
23
  if auth_key.nil?
23
24
  auth_url = Civility::GMR.auth_url
@@ -34,12 +35,14 @@ class Civility < Thor
34
35
  end
35
36
 
36
37
  desc 'games', 'List your current games'
38
+ option aliases: :g
37
39
  def games
38
40
  return missing_auth_error unless auth_key
39
41
  output_games sync_games
40
42
  end
41
43
 
42
44
  desc 'play', 'Download a game to play'
45
+ option aliases: :p
43
46
  def play(*name)
44
47
  name = name.join(' ')
45
48
  return missing_auth_error unless auth_key
@@ -53,6 +56,7 @@ class Civility < Thor
53
56
  end
54
57
 
55
58
  desc 'complete', 'Upload a completed turn'
59
+ option aliases: :c
56
60
  def complete(*name)
57
61
  name = name.join(' ')
58
62
  return missing_auth_error unless auth_key
@@ -65,6 +69,7 @@ class Civility < Thor
65
69
  puts "UnexpectedError: #{response}"
66
70
  when 1
67
71
  puts "You earned #{response['PointsEarned']} points completing #{game['Name']} from #{path}"
72
+ notify_slack(game) if @config[:slack]
68
73
  when 2
69
74
  puts "It's not your turn"
70
75
  when 3
@@ -74,8 +79,42 @@ class Civility < Thor
74
79
  end
75
80
  end
76
81
 
82
+ desc 'slack', 'Enable slack integration'
83
+ def slack(status, bot_token = nil, channel_name = nil, next_player_name = nil, game_name = nil)
84
+ if status == 'on'
85
+ if [bot_token, channel_name, next_player_name, game_name].any?(&:nil?)
86
+ puts 'Bot token, channel name, next player name, and game name are required'
87
+ puts '$ civility slack on xoxb-123xyz awecome_channel sam awesome civ 5 game'
88
+ else
89
+ game = game_by_name(game_name)
90
+ return missing_game_error(name) unless game
91
+ @config[:slack].merge!(
92
+ game['GameId'] => {
93
+ channel_name: channel_name,
94
+ bot_token: bot_token,
95
+ next_player_name: next_player_name
96
+ }
97
+ )
98
+ puts "Slack integration enabled for #{game_name}"
99
+ end
100
+ else
101
+ @config.delete(:slack)
102
+ puts 'Slack integration disabled'
103
+ end
104
+ self.config = @config
105
+ end
106
+
77
107
  private
78
108
 
109
+ def notify_slack(game)
110
+ slack_config = @config[:slack][game['GameId']]
111
+ return puts 'Slack not configured for game' unless slack_config
112
+ slack = Civility::Ext::Slack.new(slack_config[:bot_token])
113
+ message = "@#{slack_config[:next_player_name]}'s turn!"
114
+ code, body = slack.post_message(slack_config[:channel_name], message, 'Shelly')
115
+ puts "Error updating Slack: #{body}" unless code == 200
116
+ end
117
+
79
118
  def sync_games
80
119
  games = @gmr.games
81
120
  self.config = @config.merge(games: games, updated_at: Time.now.to_i)
@@ -164,3 +203,4 @@ class Civility < Thor
164
203
  end
165
204
 
166
205
  require 'civility/gmr'
206
+ require 'civility/ext'
@@ -0,0 +1,6 @@
1
+ class Civility
2
+ class Ext
3
+ end
4
+ end
5
+
6
+ require 'civility/ext/slack'
@@ -0,0 +1,37 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'json'
4
+
5
+ class Civility
6
+ class Ext
7
+ class Slack
8
+ def initialize(token)
9
+ @token = token
10
+ end
11
+
12
+ def post_message(channel_name, text, username)
13
+ params = {
14
+ token: @token,
15
+ channel: channel_name,
16
+ link_names: 1,
17
+ username: username,
18
+ icon_emoji: ':robot_face:',
19
+ text: text
20
+ }
21
+ post('https://slack.com/api/chat.postMessage', params)
22
+ end
23
+
24
+ private
25
+
26
+ def post(url, params = {})
27
+ uri = URI.parse(url)
28
+ uri.query = URI.encode_www_form(params)
29
+ http = Net::HTTP.new(uri.host, 443)
30
+ http.use_ssl = true
31
+ request = Net::HTTP::Post.new(uri.request_uri)
32
+ response = http.request(request)
33
+ [response.code.to_i, JSON.parse(response.body)]
34
+ end
35
+ end
36
+ end
37
+ end
data/lib/civility/gmr.rb CHANGED
@@ -42,7 +42,7 @@ class Civility
42
42
  JSON.parse(response)
43
43
  end
44
44
 
45
- # TODO: Implement a method shortcut method to get a game turn_id
45
+ # TODO: Implement a shortcut method to get a game turn_id
46
46
  # def turn_id(game_id)
47
47
  # end
48
48
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: civility
3
3
  version: !ruby/object:Gem::Version
4
- version: '3'
4
+ version: '4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abraham Williams
@@ -30,7 +30,7 @@ cert_chain:
30
30
  EsiR9eCvovV79dCUTm5EBRWaqa7DIAXh+oEHOaAP2btcuDT/kJlg9/YG12YDdX82
31
31
  U6jGnAwybOW/iArJ
32
32
  -----END CERTIFICATE-----
33
- date: 2016-02-23 00:00:00.000000000 Z
33
+ date: 2016-04-07 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: thor
@@ -98,6 +98,8 @@ extra_rdoc_files: []
98
98
  files:
99
99
  - bin/civility
100
100
  - lib/civility.rb
101
+ - lib/civility/ext.rb
102
+ - lib/civility/ext/slack.rb
101
103
  - lib/civility/gmr.rb
102
104
  homepage: https://github.com/abraham/civility
103
105
  licenses:
metadata.gz.sig CHANGED
Binary file