ayadn 0.6.4 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +20 -0
- data/.rspec +2 -0
- data/.travis.yml +17 -0
- data/Gemfile +14 -0
- data/Guardfile +26 -0
- data/LICENSE.txt +22 -0
- data/MANUAL.md +946 -0
- data/README.md +26 -411
- data/Rakefile +6 -0
- data/ayadn.gemspec +39 -0
- data/bin/ayadn +3 -3
- data/lib/ayadn.rb +12 -25
- data/lib/ayadn/action.rb +1121 -0
- data/lib/ayadn/alias.rb +106 -0
- data/lib/ayadn/api.rb +312 -301
- data/lib/ayadn/app.rb +429 -365
- data/lib/ayadn/authorize.rb +127 -28
- data/lib/ayadn/blacklist.rb +116 -0
- data/lib/ayadn/cnx.rb +105 -0
- data/lib/ayadn/databases.rb +110 -0
- data/lib/ayadn/descriptions.rb +1043 -0
- data/lib/ayadn/endpoints.rb +220 -153
- data/lib/ayadn/errors.rb +37 -0
- data/lib/ayadn/extend.rb +4 -10
- data/lib/ayadn/fileops.rb +48 -0
- data/lib/ayadn/logs.rb +32 -0
- data/lib/ayadn/pinboard.rb +46 -35
- data/lib/ayadn/post.rb +229 -212
- data/lib/ayadn/scroll.rb +251 -0
- data/lib/ayadn/set.rb +377 -0
- data/lib/ayadn/settings.rb +195 -0
- data/lib/ayadn/status.rb +226 -165
- data/lib/ayadn/switch.rb +72 -0
- data/lib/ayadn/version.rb +4 -0
- data/lib/ayadn/view.rb +506 -269
- data/lib/ayadn/workers.rb +362 -0
- data/spec/helpers.rb +19 -0
- data/spec/mock/@ericd.json +160 -0
- data/spec/mock/@m.json +45 -0
- data/spec/mock/checkins.json +1856 -0
- data/spec/mock/fwr_@ayadn.json +1077 -0
- data/spec/mock/posted.json +1 -0
- data/spec/mock/stream.json +1 -0
- data/spec/spec_helper.rb +14 -0
- data/spec/unit/api_spec.rb +61 -0
- data/spec/unit/databases_spec.rb +5 -0
- data/spec/unit/descriptions_spec.rb +9 -0
- data/spec/unit/endpoints_spec.rb +35 -0
- data/spec/unit/post_spec.rb +136 -0
- data/spec/unit/status_spec.rb +9 -0
- data/spec/unit/view_spec.rb +119 -0
- data/spec/unit/workers_spec.rb +147 -0
- metadata +216 -40
- data/CHANGELOG.md +0 -250
- data/CONTRIBUTORS.md +0 -5
- data/LICENSE.md +0 -14
- data/lib/ayadn/adn_files.rb +0 -84
- data/lib/ayadn/client-http.rb +0 -226
- data/lib/ayadn/colors.rb +0 -62
- data/lib/ayadn/config.yml +0 -35
- data/lib/ayadn/debug.rb +0 -36
- data/lib/ayadn/files.rb +0 -184
- data/lib/ayadn/get-api.rb +0 -43
- data/lib/ayadn/help.rb +0 -152
- data/lib/ayadn/list.rb +0 -89
- data/lib/ayadn/main.rb +0 -542
- data/lib/ayadn/requires.rb +0 -12
- data/lib/ayadn/skip.rb +0 -27
- data/lib/ayadn/tools.rb +0 -208
- data/lib/ayadn/user-stream.rb +0 -91
- data/lib/ayadn/view-channels.rb +0 -120
- data/lib/ayadn/view-interactions.rb +0 -57
- data/lib/ayadn/view-object.rb +0 -195
- data/lib/experiments.rb +0 -109
data/lib/ayadn/requires.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
%w{rubygems pstore date open-uri net/http json io/console fileutils yaml pinboard base64}.each do |r|
|
5
|
-
require "#{r}"
|
6
|
-
end
|
7
|
-
|
8
|
-
winPlatforms = ['mswin', 'mingw', 'mingw_18', 'mingw_19', 'mingw_20', 'mingw32']
|
9
|
-
case Gem::Platform.local.os
|
10
|
-
when *winPlatforms
|
11
|
-
require 'win32console'
|
12
|
-
end
|
data/lib/ayadn/skip.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# encoding: utf-8
|
3
|
-
class AyaDN
|
4
|
-
def ayadn_skip_add(kind, target) #kind: sources,hashtags,mentions
|
5
|
-
puts "Current skipped #{kind}: ".green + $tools.config['skipped']["#{kind}"].join(", ").red + "\n\n"
|
6
|
-
puts "Adding ".green + target.red + " to the skipped #{kind}.".green + "\n\n"
|
7
|
-
$tools.config['skipped']["#{kind}"].each do |in_config|
|
8
|
-
if in_config == target
|
9
|
-
puts target.red + " is already skipped.\n\n".green
|
10
|
-
exit
|
11
|
-
end
|
12
|
-
end
|
13
|
-
$tools.config['skipped']["#{kind}"].push(target)
|
14
|
-
puts "New skipped #{kind}: ".green + $tools.config['skipped']["#{kind}"].join(", ").red + "\n\n"
|
15
|
-
$tools.saveConfig
|
16
|
-
end
|
17
|
-
def ayadn_skip_remove(kind, target)
|
18
|
-
puts "Removing ".green + target.red + " from the skipped #{kind}.".green + "\n\n"
|
19
|
-
$tools.config['skipped']["#{kind}"].each do |in_config|
|
20
|
-
if in_config == target
|
21
|
-
$tools.config['skipped']["#{kind}"].delete(in_config)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
puts "New skipped #{kind}: ".green + $tools.config['skipped']["#{kind}"].join(", ").red + "\n\n"
|
25
|
-
$tools.saveConfig
|
26
|
-
end
|
27
|
-
end
|
data/lib/ayadn/tools.rb
DELETED
@@ -1,208 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# encoding: utf-8
|
3
|
-
require 'yaml'
|
4
|
-
require 'rubygems'
|
5
|
-
require 'pinboard'
|
6
|
-
|
7
|
-
class AyaDN
|
8
|
-
class Tools
|
9
|
-
def initialize
|
10
|
-
@default_ayadn_data_path = Dir.home + "/ayadn/data"
|
11
|
-
@installed_config_path = "#{@default_ayadn_data_path}/config.yml"
|
12
|
-
@configFileContents = loadConfig
|
13
|
-
identityPrefix = @configFileContents['identity']['prefix']
|
14
|
-
ayadn_data_path = Dir.home + @configFileContents['files']['ayadnfiles']
|
15
|
-
@ayadn_configuration = {
|
16
|
-
data_path: ayadn_data_path,
|
17
|
-
posts_path: ayadn_data_path + "/#{identityPrefix}/posts",
|
18
|
-
lists_path: ayadn_data_path + "/#{identityPrefix}/lists",
|
19
|
-
files_path: ayadn_data_path + "/#{identityPrefix}/files",
|
20
|
-
db_path: ayadn_data_path + "/#{identityPrefix}/db",
|
21
|
-
last_page_id_path: ayadn_data_path + "/#{identityPrefix}/.pagination",
|
22
|
-
messages_path: ayadn_data_path + "/#{identityPrefix}/messages",
|
23
|
-
authorization_path: ayadn_data_path + "/#{identityPrefix}/.auth",
|
24
|
-
api_config_path: ayadn_data_path + "/#{identityPrefix}/.api",
|
25
|
-
progress_indicator: false,
|
26
|
-
platform: RbConfig::CONFIG['host_os']
|
27
|
-
}
|
28
|
-
end
|
29
|
-
def loadConfig
|
30
|
-
if File.exists?(@installed_config_path)
|
31
|
-
YAML::load_file(@installed_config_path)
|
32
|
-
elsif File.exists?(File.expand_path(File.dirname(__FILE__)) + '/config.yml')
|
33
|
-
YAML::load_file(File.expand_path(File.dirname(__FILE__)) + '/config.yml')
|
34
|
-
else
|
35
|
-
{
|
36
|
-
"counts" => {
|
37
|
-
"global" => 100,
|
38
|
-
"unified" => 100,
|
39
|
-
"checkins" => 100,
|
40
|
-
"explore" => 100,
|
41
|
-
"mentions" => 100,
|
42
|
-
"starred" => 100,
|
43
|
-
"posts" => 100,
|
44
|
-
"search" => 200
|
45
|
-
},
|
46
|
-
"timeline" => {
|
47
|
-
"downside" => true,
|
48
|
-
"directed" => true,
|
49
|
-
"streamback" => 30,
|
50
|
-
"countdown_1" => 5,
|
51
|
-
"countdown_2" => 15,
|
52
|
-
"show_client" => true,
|
53
|
-
"show_symbols" => true,
|
54
|
-
"show_reposters" => true
|
55
|
-
},
|
56
|
-
"files" => {
|
57
|
-
"ayadnfiles" => "/ayadn/data",
|
58
|
-
"auto_save_sent_messages" => false,
|
59
|
-
"auto_save_sent_posts" => false
|
60
|
-
},
|
61
|
-
"identity" => { "prefix" => "me" },
|
62
|
-
"skipped" => {
|
63
|
-
"sources" => [],
|
64
|
-
"hashtags" => [],
|
65
|
-
"mentions" => []
|
66
|
-
},
|
67
|
-
"pinboard" => {
|
68
|
-
"username" => "",
|
69
|
-
"password" => ""
|
70
|
-
}
|
71
|
-
}
|
72
|
-
end
|
73
|
-
end
|
74
|
-
def saveConfig
|
75
|
-
if File.exists?(@installed_config_path)
|
76
|
-
File.open(@installed_config_path, 'w') {|f| f.write config.to_yaml }
|
77
|
-
puts "\nDone!\n\n".green
|
78
|
-
# else
|
79
|
-
# File.open(File.expand_path(File.dirname(__FILE__)) + '/config.yml', 'w') {|f| f.write config.to_yaml }
|
80
|
-
# puts "\nDone!\n\n".green
|
81
|
-
end
|
82
|
-
end
|
83
|
-
def installConfig
|
84
|
-
if File.exists?(@installed_config_path)
|
85
|
-
puts "\nInstalled config file already exists. Replace with the new one? (N/y) ".red
|
86
|
-
if STDIN.getch == ("y" || "Y")
|
87
|
-
copyConfigFromMaster
|
88
|
-
else
|
89
|
-
abort("\nCanceled.\n\n".red)
|
90
|
-
end
|
91
|
-
else
|
92
|
-
copyConfigFromMaster
|
93
|
-
end
|
94
|
-
end
|
95
|
-
def copyConfigFromMaster
|
96
|
-
FileUtils.cp(File.expand_path(File.dirname(__FILE__)) + '/config.yml', @installed_config_path)
|
97
|
-
puts "\nDone.\n\n".green
|
98
|
-
end
|
99
|
-
def config
|
100
|
-
@configFileContents
|
101
|
-
end
|
102
|
-
def ayadn_configuration
|
103
|
-
@ayadn_configuration
|
104
|
-
end
|
105
|
-
def winplatforms
|
106
|
-
/mswin|mingw|mingw32|cygwin/
|
107
|
-
end
|
108
|
-
def colorize(contentText)
|
109
|
-
content = Array.new
|
110
|
-
for word in contentText.split(" ") do
|
111
|
-
if word =~ /#\w+/
|
112
|
-
content.push(word.gsub(/#([A-Za-z0-9_]{1,255})(?![\w+])/, '#\1'.pink))
|
113
|
-
#content.push(removeEndCharIfSpecial(word, "pink"))
|
114
|
-
elsif word =~ /@\w+/
|
115
|
-
content.push(word.gsub(/@([A-Za-z0-9_]{1,20})(?![\w+])/, '@\1'.red))
|
116
|
-
#content.push(removeEndCharIfSpecial(word, "red"))
|
117
|
-
#elsif word =~ /^http/ or word =~ /^photos.app.net/ or word =~ /^files.app.net/ or word =~ /^chimp.li/ or word =~ /^bli.ms/
|
118
|
-
#content.push(word.magenta)
|
119
|
-
else
|
120
|
-
content.push(word)
|
121
|
-
end
|
122
|
-
end
|
123
|
-
content.join(" ")
|
124
|
-
end
|
125
|
-
def removeEndCharIfSpecial(word, color)
|
126
|
-
word_array = word.chars.to_a
|
127
|
-
last_char = word_array.last
|
128
|
-
if last_char =~ /[.,:;?!-'`&"()\/]/
|
129
|
-
word_array.pop
|
130
|
-
if color == "red"
|
131
|
-
word_colored = word_array.join("").red
|
132
|
-
elsif color == "pink"
|
133
|
-
word_colored = word_array.join("").pink
|
134
|
-
end
|
135
|
-
word_colored.chars.to_a.push(last_char).join("")
|
136
|
-
else
|
137
|
-
if color == "red"
|
138
|
-
word.red
|
139
|
-
elsif color == "pink"
|
140
|
-
word.pink
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
def getMarkdownText(str)
|
146
|
-
str.gsub %r{
|
147
|
-
\[ # Literal opening bracket
|
148
|
-
( # Capture what we find in here
|
149
|
-
[^\]]+ # One or more characters other than close bracket
|
150
|
-
) # Stop capturing
|
151
|
-
\] # Literal closing bracket
|
152
|
-
\( # Literal opening parenthesis
|
153
|
-
( # Capture what we find in here
|
154
|
-
[^)]+ # One or more characters other than close parenthesis
|
155
|
-
) # Stop capturing
|
156
|
-
\) # Literal closing parenthesis
|
157
|
-
}x, '\1'
|
158
|
-
end
|
159
|
-
def withoutSquareBraces(str)
|
160
|
-
str.gsub %r{
|
161
|
-
\[ # Literal opening bracket
|
162
|
-
( # Capture what we find in here
|
163
|
-
[^\]]+ # One or more characters other than close bracket
|
164
|
-
) # Stop capturing
|
165
|
-
\] # Literal closing bracket
|
166
|
-
}x, ''
|
167
|
-
end
|
168
|
-
def countdown(value)
|
169
|
-
value.downto(1) do |i|
|
170
|
-
print "\r#{sprintf("%02d", i)} sec... QUIT WITH [CTRL+C]".cyan
|
171
|
-
sleep 1
|
172
|
-
end
|
173
|
-
end
|
174
|
-
def startBrowser(url)
|
175
|
-
Process.detach(Process.spawn("sleep 1; open '#{url}'"))
|
176
|
-
end
|
177
|
-
def meta(meta)
|
178
|
-
case meta['code']
|
179
|
-
when 200
|
180
|
-
puts "\nDone!\n".green
|
181
|
-
when 301,302
|
182
|
-
puts "\nRedirected.\n\n".red
|
183
|
-
puts "#{meta.inspect}\n".red
|
184
|
-
when 404
|
185
|
-
puts "Does not exist (or has been deleted) => #{meta['code']}\n".red
|
186
|
-
exit
|
187
|
-
else
|
188
|
-
abort("\nERROR: #{meta.to_s}\n".red)
|
189
|
-
end
|
190
|
-
end
|
191
|
-
def checkHTTPResp(resp)
|
192
|
-
case resp.code
|
193
|
-
when !200
|
194
|
-
abort("\nERROR: does not exist (or has been deleted) => #{resp.code} #{resp.body}\n".red)
|
195
|
-
end
|
196
|
-
end
|
197
|
-
def saveToPinboard(post_id, pin_username, pin_password, link, tags, post_text, user_name)
|
198
|
-
unless tags.nil?
|
199
|
-
tags += ",ADN"
|
200
|
-
else
|
201
|
-
tags = "ADN"
|
202
|
-
end
|
203
|
-
post_text += " http://alpha.app.net/#{user_name}/post/#{post_id}"
|
204
|
-
pinboard = Pinboard::Client.new(:username => pin_username, :password => pin_password)
|
205
|
-
pinboard.add(:url => link, :tags => tags, :extended => post_text, :description => link)
|
206
|
-
end
|
207
|
-
end
|
208
|
-
end
|
data/lib/ayadn/user-stream.rb
DELETED
@@ -1,91 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# encoding: utf-8
|
3
|
-
require 'net/http'
|
4
|
-
require 'openssl'
|
5
|
-
|
6
|
-
class AyaDN
|
7
|
-
|
8
|
-
# EXPERIMENT!!!
|
9
|
-
|
10
|
-
def ayadn_userstream
|
11
|
-
# first create with curl -i -H 'Authorization: BEARER xxx' "https://stream-channel.app.net/stream/user?auto_delete=1&include_annotations=1&include_html=0"
|
12
|
-
# it stays open and returns a stream_id in the headers
|
13
|
-
# TODO: replace curl with a good connection system: HTTP or Rest-Client
|
14
|
-
|
15
|
-
puts "1. Create user stream\n".cyan
|
16
|
-
puts "2. Connect to user stream\n".cyan
|
17
|
-
puts "\n\nYour choice? \n\n".brown
|
18
|
-
case STDIN.getch
|
19
|
-
when "1"
|
20
|
-
command = "sleep 1; curl -i -H 'Authorization: BEARER #{@token}' 'https://stream-channel.app.net/stream/user?auto_delete=1&include_annotations=1&include_html=0'"
|
21
|
-
pid = Process.spawn(command)
|
22
|
-
Process.detach(pid)
|
23
|
-
exit
|
24
|
-
when "2"
|
25
|
-
puts "Paste stream id: "
|
26
|
-
stream_id = STDIN.gets.chomp
|
27
|
-
else
|
28
|
-
puts $status.errorSyntax
|
29
|
-
end
|
30
|
-
last_page_id = nil
|
31
|
-
start = Time.now
|
32
|
-
$files.makedir($tools.ayadn_configuration[:data_path] + "/.temp/")
|
33
|
-
f = File.new($tools.ayadn_configuration[:data_path] + "/.temp/#{stream_id}", "w")
|
34
|
-
f.puts(stream_id)
|
35
|
-
f.close
|
36
|
-
@url = "https://alpha-api.app.net/stream/0/posts/stream/global?connection_id=#{stream_id}&since_id=#{last_page_id}&include_deleted=0"
|
37
|
-
uri = URI.parse(@url)
|
38
|
-
https = Net::HTTP.new(uri.host,uri.port)
|
39
|
-
https.use_ssl = true
|
40
|
-
https.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
41
|
-
request = Net::HTTP::Get.new(uri.request_uri)
|
42
|
-
request["Authorization"] = "Bearer #{@token}"
|
43
|
-
request["Content-Type"] = "application/json"
|
44
|
-
response = https.request(request)
|
45
|
-
@hash = JSON.parse(response.body)
|
46
|
-
stream, last_page_id = completeStream
|
47
|
-
displayScrollStream(stream)
|
48
|
-
number_of_connections = 1
|
49
|
-
total_size = 0
|
50
|
-
loop do
|
51
|
-
begin
|
52
|
-
@url = "https://alpha-api.app.net/stream/0/posts/stream/global?connection_id=#{stream_id}&since_id=#{last_page_id}&include_deleted=0"
|
53
|
-
uri = URI.parse(@url)
|
54
|
-
request = Net::HTTP::Get.new(uri.request_uri)
|
55
|
-
request["Authorization"] = "Bearer #{@token}"
|
56
|
-
request["Content-Type"] = "application/json"
|
57
|
-
before_request_id = last_page_id
|
58
|
-
response = https.request(request)
|
59
|
-
chunk_size = response['Content-Length']
|
60
|
-
@hash = JSON.parse(response.body)
|
61
|
-
stream, last_page_id = completeStream
|
62
|
-
displayScrollStream(stream)
|
63
|
-
last_page_id = before_request_id if last_page_id == nil
|
64
|
-
number_of_connections += 1
|
65
|
-
# puts "\nData chunks: \t#{number_of_connections}".magenta
|
66
|
-
# puts "Chunk size: \t#{chunk_size.to_i.to_filesize}".magenta
|
67
|
-
total_size += chunk_size.to_i
|
68
|
-
# puts "Total size: \t#{total_size.to_filesize}".magenta
|
69
|
-
# finish = Time.now
|
70
|
-
# elapsed = finish.to_f - start.to_f
|
71
|
-
# mins, secs = elapsed.divmod 60.0
|
72
|
-
# puts "Total time:\t".magenta + "%3d:%04.2f".magenta%[mins.to_i, secs]
|
73
|
-
# req_sec = number_of_connections.to_f/secs
|
74
|
-
# puts "Req/sec: \t#{req_sec.round(2)}".magenta
|
75
|
-
rescue Exception => e
|
76
|
-
puts "\n\n"
|
77
|
-
puts e.inspect
|
78
|
-
finish = Time.now
|
79
|
-
elapsed = finish.to_f - start.to_f
|
80
|
-
mins, secs = elapsed.divmod 60.0
|
81
|
-
puts "\n\nData chunks: #{number_of_connections}\n"
|
82
|
-
puts "Total size: #{total_size.to_filesize}"
|
83
|
-
puts "Elapsed time (min:secs.msecs): "
|
84
|
-
puts("%3d:%04.2f"%[mins.to_i, secs])
|
85
|
-
req_sec = number_of_connections.to_f/secs.to_f
|
86
|
-
puts "Req/sec: #{req_sec.round(2)}\n\n"
|
87
|
-
exit
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
data/lib/ayadn/view-channels.rb
DELETED
@@ -1,120 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# encoding: utf-8
|
3
|
-
class AyaDN
|
4
|
-
class View
|
5
|
-
def build_pm_channels_infos
|
6
|
-
$files.makedir($tools.ayadn_configuration[:messages_path])
|
7
|
-
#meta = @hash['meta']
|
8
|
-
#unread_messages = meta['unread_counts']['net.app.core.pm']
|
9
|
-
the_channels = ""
|
10
|
-
channels_list = []
|
11
|
-
puts "\nGetting users infos, please wait a few seconds... (could take a while the first time if you have a lot of channels activated)\n".cyan
|
12
|
-
@hash['data'].each do |item|
|
13
|
-
channel_id = item['id']
|
14
|
-
channel_type = item['type']
|
15
|
-
if channel_type == "net.app.core.pm"
|
16
|
-
channels_list.push(channel_id)
|
17
|
-
total_messages = item['counts']['messages']
|
18
|
-
#owner = "@" + item['owner']['username']
|
19
|
-
#readers = item['readers']['user_ids']
|
20
|
-
#you_write = item['writers']['you']
|
21
|
-
#you_read = item['readers']['you']
|
22
|
-
the_writers = []
|
23
|
-
item['writers']['user_ids'].each do |writer|
|
24
|
-
if writer != nil
|
25
|
-
known_user = $files.users_read(writer)
|
26
|
-
if known_user
|
27
|
-
handle = "@" + known_user
|
28
|
-
puts "\n#{writer} already known: #{handle}. Skipping the username search".green
|
29
|
-
else
|
30
|
-
puts "\nFetching username of user ##{writer}".green
|
31
|
-
user = AyaDN::API.new(@token).getUserInfos(writer)
|
32
|
-
username = user['data']['username']
|
33
|
-
handle = "@" + username
|
34
|
-
$files.users_write(writer, username)
|
35
|
-
end
|
36
|
-
$files.save_channel_id(channel_id, handle)
|
37
|
-
the_writers.push(handle)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
the_channels << "\nChannel ID: ".cyan + "#{channel_id}\n".brown
|
41
|
-
#the_channels << "Creator: ".cyan + owner.magenta + "\n"
|
42
|
-
#the_channels << "Channels type: ".cyan + "#{channel_type}\n".brown
|
43
|
-
the_channels << "Interlocutor(s): ".cyan + the_writers.join(", ").magenta + "\n"
|
44
|
-
the_channels << "Messages: ".cyan + total_messages.to_s.green + "\n"
|
45
|
-
if item['recent_message']
|
46
|
-
if item['recent_message']['text']
|
47
|
-
message_date = objectDate(item['recent_message']).join(" ")
|
48
|
-
the_channels << "Last message by @#{item['recent_message']['user']['username']} (#{message_date}): \n".cyan + item['recent_message']['text'] + "\n"
|
49
|
-
# id, text, username, message_date
|
50
|
-
params = {
|
51
|
-
id: channel_id,
|
52
|
-
text: item['recent_message']['text'],
|
53
|
-
username: item['recent_message']['user']['username'],
|
54
|
-
message_date: message_date
|
55
|
-
}
|
56
|
-
$files.save_channel_message(params)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
the_channels << "\n"
|
62
|
-
return the_channels, channels_list
|
63
|
-
end
|
64
|
-
def build_channels_infos
|
65
|
-
the_channels = ""
|
66
|
-
channels_list = []
|
67
|
-
@hash['data'].each do |item|
|
68
|
-
channel_id = item['id']
|
69
|
-
channel_type = item['type']
|
70
|
-
if channel_type != "net.app.core.pm"
|
71
|
-
channels_list.push(channel_id)
|
72
|
-
case channel_type
|
73
|
-
when "net.app.ohai.journal"
|
74
|
-
$files.save_channel_id(channel_id, "Ohai Journal")
|
75
|
-
the_channels << "\nChannel ID: ".cyan + "#{channel_id}\n".brown + " -> " + "your Ohai Journal channel\n".green
|
76
|
-
when "net.paste-app.clips"
|
77
|
-
$files.save_channel_id(channel_id, "Paste-App Clips")
|
78
|
-
the_channels << "\nChannel ID: ".cyan + "#{channel_id}\n".brown + " -> " + "your Paste-App Clips channel\n".green
|
79
|
-
when "net.app.core.broadcast"
|
80
|
-
item['annotations'].each do |anno|
|
81
|
-
if anno['type'] == "net.app.core.broadcast.metadata"
|
82
|
-
broadcast_name = anno['value']['title']
|
83
|
-
$files.save_channel_id(channel_id, "#{broadcast_name} [Broadcast]")
|
84
|
-
the_channels << "\nChannel ID: ".cyan + "#{channel_id}\n".brown + " -> " + "Broadcast channel: #{broadcast_name}\n".green
|
85
|
-
end
|
86
|
-
end
|
87
|
-
when "net.patter-app.room"
|
88
|
-
item['annotations'].each do |anno|
|
89
|
-
if anno['type'] == "net.patter-app.settings"
|
90
|
-
patter_room_name = anno['value']['name']
|
91
|
-
$files.save_channel_id(channel_id, "#{patter_room_name} [Patter-App Room]")
|
92
|
-
the_channels << "\nChannel ID: ".cyan + "#{channel_id}\n".brown + " -> " + "Patter-App Room: #{patter_room_name}\n".green
|
93
|
-
next
|
94
|
-
end
|
95
|
-
end
|
96
|
-
else
|
97
|
-
$files.save_channel_id(channel_id, channel_type)
|
98
|
-
the_channels << "\nChannel ID: ".cyan + "#{channel_id}\n".brown + " -> " + "#{channel_type}\n"
|
99
|
-
end
|
100
|
-
if item['recent_message']
|
101
|
-
if item['recent_message']['text']
|
102
|
-
message_date = objectDate(item['recent_message']).join(" ")
|
103
|
-
the_channels << "Last message by @#{item['recent_message']['user']['username']} (#{message_date}): \n".cyan + item['recent_message']['text'] + "\n"
|
104
|
-
# id, text, username, message_date
|
105
|
-
params = {
|
106
|
-
id: channel_id,
|
107
|
-
text: item['recent_message']['text'],
|
108
|
-
username: item['recent_message']['user']['username'],
|
109
|
-
message_date: message_date
|
110
|
-
}
|
111
|
-
$files.save_channel_message(params)
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
the_channels << "\n"
|
117
|
-
return the_channels, channels_list
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|