emoji_differ 0.1.0.alpha3 → 0.1.0.beta
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/Gemfile.lock +3 -3
- data/README.md +18 -1
- data/lib/emoji_differ/config.rb +22 -0
- data/lib/emoji_differ/emoji.rb +2 -3
- data/lib/emoji_differ/list.rb +28 -5
- data/lib/emoji_differ/slack_api.rb +15 -10
- data/lib/emoji_differ/version.rb +1 -1
- data/lib/emoji_differ.rb +40 -3
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b31b878e80391ad4307cb311e12f4a528f28970
|
4
|
+
data.tar.gz: bdb2d22d20fdfdfe506abaf9bac7ef4f28afe889
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60ba91374af393b9b69e6b60969fa8619b75f34f528183fb85d766916272041d2bc7440631b68c46b72c6218ad53a0b35124fce87f1276e1f2e9806f0a327a10
|
7
|
+
data.tar.gz: e79a98f8b2d8c79e25969e576c9cc27130426a0588ca0c0c0963e07d0758be8db7d8fb58718ea64472a563956e94fd5e6be9e1046595cce542ae7f807ab46c70
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
emoji_differ (0.1.0.
|
5
|
-
json (> 0)
|
4
|
+
emoji_differ (0.1.0.beta)
|
6
5
|
|
7
6
|
GEM
|
8
7
|
remote: https://rubygems.org/
|
9
8
|
specs:
|
10
9
|
diff-lcs (1.3)
|
11
|
-
|
10
|
+
dotenv (2.6.0)
|
12
11
|
rake (10.5.0)
|
13
12
|
rspec (3.8.0)
|
14
13
|
rspec-core (~> 3.8.0)
|
@@ -30,6 +29,7 @@ PLATFORMS
|
|
30
29
|
|
31
30
|
DEPENDENCIES
|
32
31
|
bundler (~> 2.0)
|
32
|
+
dotenv (~> 2.6)
|
33
33
|
emoji_differ!
|
34
34
|
rake (~> 10.0)
|
35
35
|
rspec (~> 3.0)
|
data/README.md
CHANGED
@@ -22,7 +22,24 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
25
|
+
Either set `SLACK_API_TOKEN` env variable or create a `.slack_token` file in your home directory, then try the gem:
|
26
|
+
|
27
|
+
require 'emoji_differ'
|
28
|
+
# update file on disk with current emoji in your team
|
29
|
+
EmojiDiffer.save
|
30
|
+
|
31
|
+
Get current emoji as an `EmojiDiffer::List` of `EmojiDiffer::Emoji` instances, for programmatic use:
|
32
|
+
|
33
|
+
EmojiDiffer.current
|
34
|
+
|
35
|
+
Some time later ...
|
36
|
+
|
37
|
+
# returns an EmojiDiffer::List of EmojiDiffer::Emoji instances, for programmatic use
|
38
|
+
EmojiDiffer.new_emoji
|
39
|
+
# outputs new emoji since the last time .save_emoji was called, in :name: format for pasting into slack
|
40
|
+
EmojiDiffer.new_emoji.to_s
|
41
|
+
EmojiDiffer.clear
|
42
|
+
EmojiDiffer.save
|
26
43
|
|
27
44
|
## Development
|
28
45
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module EmojiDiffer
|
2
|
+
class Config
|
3
|
+
attr_writer :token, :cache_location
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@token = nil
|
7
|
+
@cache_location = nil
|
8
|
+
end
|
9
|
+
|
10
|
+
def read_token_file
|
11
|
+
@file_token ||= File.exists?('.slack_token') ? File.read('.slack_token') : nil
|
12
|
+
end
|
13
|
+
|
14
|
+
def token
|
15
|
+
@token || ENV['SLACK_API_TOKEN'] || read_token_file
|
16
|
+
end
|
17
|
+
|
18
|
+
def cache_location
|
19
|
+
@cache_location || ENV['EMOJI_CACHE_LOCATION'] || 'emoji_cache'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/emoji_differ/emoji.rb
CHANGED
data/lib/emoji_differ/list.rb
CHANGED
@@ -3,21 +3,44 @@ require "emoji_differ/emoji"
|
|
3
3
|
|
4
4
|
module EmojiDiffer
|
5
5
|
class List
|
6
|
-
|
7
|
-
|
6
|
+
include Enumerable
|
7
|
+
|
8
|
+
def initialize(json)
|
9
|
+
@parsed = parse(json)
|
10
|
+
@emojis = transform
|
8
11
|
end
|
9
12
|
|
10
13
|
def to_s
|
11
14
|
@emojis.to_s
|
12
15
|
end
|
13
16
|
|
17
|
+
def each
|
18
|
+
@emojis.each do |emoji|
|
19
|
+
yield emoji
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def length
|
24
|
+
@emojis.length
|
25
|
+
end
|
26
|
+
|
14
27
|
def to_json
|
15
|
-
|
28
|
+
JSON.generate(parsed) #cheeky eh
|
16
29
|
end
|
17
30
|
|
18
31
|
private
|
19
|
-
def
|
20
|
-
JSON.parse(
|
32
|
+
def parse(json)
|
33
|
+
JSON.parse(json)
|
34
|
+
end
|
35
|
+
|
36
|
+
attr_reader :parsed
|
37
|
+
|
38
|
+
def timestamp
|
39
|
+
parsed['cache_ts'].to_f
|
40
|
+
end
|
41
|
+
|
42
|
+
def transform
|
43
|
+
parsed['emoji'].map { |name, picture_link| EmojiDiffer::Emoji.new(name, picture_link, timestamp) }
|
21
44
|
end
|
22
45
|
end
|
23
46
|
end
|
@@ -5,19 +5,24 @@ module EmojiDiffer
|
|
5
5
|
class SlackApi < Struct.new(:token)
|
6
6
|
API_ENDPOINT = 'https://slack.com/api/emoji.list'
|
7
7
|
|
8
|
-
def
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
8
|
+
def raw_response
|
9
|
+
@raw_response ||= Net::HTTP.get_response(uri).tap do |handle|
|
10
|
+
if !handle.is_a?(Net::HTTPSuccess)
|
11
|
+
raise "Slack API is out of business today, #{handle.inspect}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
def uri
|
17
|
+
URI(API_ENDPOINT).tap do |uri|
|
18
|
+
uri.query = URI.encode_www_form({
|
19
|
+
token: token,
|
20
|
+
})
|
18
21
|
end
|
22
|
+
end
|
19
23
|
|
20
|
-
|
24
|
+
def emoji
|
25
|
+
EmojiDiffer::List.new(raw_response.body)
|
21
26
|
end
|
22
27
|
end
|
23
28
|
end
|
data/lib/emoji_differ/version.rb
CHANGED
data/lib/emoji_differ.rb
CHANGED
@@ -1,10 +1,47 @@
|
|
1
1
|
require "emoji_differ/version"
|
2
2
|
require "emoji_differ/slack_api"
|
3
|
+
require 'emoji_differ/config'
|
3
4
|
|
4
5
|
module EmojiDiffer
|
5
6
|
class Error < StandardError; end
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
def self.config
|
8
|
+
@config ||= EmojiDiffer::Config.new
|
9
|
+
if block_given?
|
10
|
+
yield @config
|
11
|
+
else
|
12
|
+
@config
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.current
|
17
|
+
@current ||= EmojiDiffer::SlackApi.new(config.token).emoji
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.new_emoji
|
21
|
+
current.reject {|x| load.map(&:name).include?(x.name) }.map(&:to_s).join(" ")
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.save
|
25
|
+
File.open(config.cache_location, 'w') do |f|
|
26
|
+
f.print EmojiDiffer::SlackApi.new(config.token).emoji.to_json
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.read_nb_chunk(io)
|
31
|
+
io.read_nonblock(8000)
|
32
|
+
rescue IO::WaitReadable
|
33
|
+
IO.select([io])
|
34
|
+
retry
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.load
|
38
|
+
File.open(config.cache_location, 'r') do |f|
|
39
|
+
contents = ''
|
40
|
+
|
41
|
+
while !f.eof? && (chunk = read_nb_chunk(f))
|
42
|
+
contents += chunk
|
43
|
+
end
|
44
|
+
EmojiDiffer::List.new(contents)
|
45
|
+
end
|
9
46
|
end
|
10
47
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emoji_differ
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.
|
4
|
+
version: 0.1.0.beta
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin George
|
@@ -89,6 +89,7 @@ files:
|
|
89
89
|
- bin/setup
|
90
90
|
- emoji_differ.gemspec
|
91
91
|
- lib/emoji_differ.rb
|
92
|
+
- lib/emoji_differ/config.rb
|
92
93
|
- lib/emoji_differ/emoji.rb
|
93
94
|
- lib/emoji_differ/list.rb
|
94
95
|
- lib/emoji_differ/slack_api.rb
|