emoji_differ 0.1.0.alpha3 → 0.1.0.beta
Sign up to get free protection for your applications and to get access to all the features.
- 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
|