ayadn 0.6.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 +15 -0
- data/CHANGELOG.md +232 -0
- data/CONTRIBUTORS.md +5 -0
- data/LICENSE.md +14 -0
- data/README.md +489 -0
- data/bin/ayadn +358 -0
- data/config.yml +35 -0
- data/lib/ayadn/adn_files.rb +84 -0
- data/lib/ayadn/api.rb +302 -0
- data/lib/ayadn/authorize.rb +29 -0
- data/lib/ayadn/client-http.rb +226 -0
- data/lib/ayadn/colors.rb +62 -0
- data/lib/ayadn/debug.rb +36 -0
- data/lib/ayadn/endpoints.rb +154 -0
- data/lib/ayadn/extend.rb +23 -0
- data/lib/ayadn/files.rb +184 -0
- data/lib/ayadn/get-api.rb +43 -0
- data/lib/ayadn/help.rb +149 -0
- data/lib/ayadn/list.rb +89 -0
- data/lib/ayadn/main.rb +536 -0
- data/lib/ayadn/pinboard.rb +37 -0
- data/lib/ayadn/post.rb +212 -0
- data/lib/ayadn/requires.rb +12 -0
- data/lib/ayadn/skip.rb +27 -0
- data/lib/ayadn/status.rb +166 -0
- data/lib/ayadn/tools.rb +204 -0
- data/lib/ayadn/user-stream.rb +91 -0
- data/lib/ayadn/view-channels.rb +119 -0
- data/lib/ayadn/view-interactions.rb +57 -0
- data/lib/ayadn/view-object.rb +193 -0
- data/lib/ayadn/view.rb +270 -0
- data/lib/ayadn.rb +24 -0
- data/lib/experiments.rb +109 -0
- metadata +110 -0
data/lib/ayadn/view.rb
ADDED
@@ -0,0 +1,270 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
class AyaDN
|
4
|
+
class View
|
5
|
+
def initialize(hash)
|
6
|
+
@hash = hash
|
7
|
+
end
|
8
|
+
def getData(hash)
|
9
|
+
hash['data'].reverse
|
10
|
+
end
|
11
|
+
def getDataNormal(hash)
|
12
|
+
hash['data']
|
13
|
+
end
|
14
|
+
def showMessagesFromChannel
|
15
|
+
buildMessages(getData(@hash))
|
16
|
+
end
|
17
|
+
def showStream
|
18
|
+
$tools.config['timeline']['downside'] ? the_hash = getData(@hash) : the_hash = getDataNormal(@hash)
|
19
|
+
buildStream(the_hash)
|
20
|
+
end
|
21
|
+
def showCompleteStream
|
22
|
+
$tools.config['timeline']['downside'] ? the_hash = getData(@hash) : the_hash = getDataNormal(@hash)
|
23
|
+
stream, pagination_array = buildCompleteStream(the_hash)
|
24
|
+
end
|
25
|
+
def show_pm_channels
|
26
|
+
stream, pagination_array = build_pm_channels_infos
|
27
|
+
end
|
28
|
+
def show_channels
|
29
|
+
stream, pagination_array = build_channels_infos
|
30
|
+
end
|
31
|
+
def showDebugStream
|
32
|
+
begin
|
33
|
+
puts "\n"
|
34
|
+
jj getDataNormal(@hash)
|
35
|
+
rescue => e
|
36
|
+
puts "\n"
|
37
|
+
jj @hash
|
38
|
+
puts e.inspect
|
39
|
+
end
|
40
|
+
end
|
41
|
+
def showUsersList
|
42
|
+
buildUsersList(getDataNormal(@hash))
|
43
|
+
end
|
44
|
+
def showInteractions
|
45
|
+
buildInteractions(getData(@hash))
|
46
|
+
end
|
47
|
+
def showUsers
|
48
|
+
users = ""
|
49
|
+
@hash = @hash.sort_by {|id, arr| arr[0]}
|
50
|
+
@hash.each do |id, arr|
|
51
|
+
users << "#{arr[0]} ".red.ljust(30) + "#{arr[1]}\n".green
|
52
|
+
end
|
53
|
+
return users, @hash.length
|
54
|
+
end
|
55
|
+
def showUsersInfos(name)
|
56
|
+
buildUserInfos(name, getDataNormal(@hash))
|
57
|
+
end
|
58
|
+
def showPostInfos(post_id, is_mine)
|
59
|
+
buildPostInfo(getDataNormal(@hash), is_mine)
|
60
|
+
end
|
61
|
+
def showFileInfo(with_url)
|
62
|
+
buildFileInfo(getDataNormal(@hash), with_url)
|
63
|
+
end
|
64
|
+
def buildStream(post_hash)
|
65
|
+
post_string = "\n"
|
66
|
+
post_string << post_hash.map {|item| create_content_string(item, nil, false)}
|
67
|
+
return post_string
|
68
|
+
end
|
69
|
+
def buildMessages(messages_stream)
|
70
|
+
messages_string = "\n"
|
71
|
+
for item in messages_stream do
|
72
|
+
@source_name_and_link = objectSource(item)
|
73
|
+
messages_string << create_content_string(item, checkins_annotations(item), false) # create_content_string(item, annotations, me_mentioned)
|
74
|
+
end
|
75
|
+
last_viewed = messages_stream.last
|
76
|
+
last_id = last_viewed['pagination_id'] unless last_viewed == nil
|
77
|
+
return messages_string, last_id
|
78
|
+
end
|
79
|
+
def buildCompleteStream(post_hash)
|
80
|
+
post_string = ""
|
81
|
+
pagination_array = []
|
82
|
+
saved_tags = []
|
83
|
+
if $tools.config['skipped']['hashtags'] != nil
|
84
|
+
saved_tags = $tools.config['skipped']['hashtags'].map {|tag| tag.downcase}
|
85
|
+
end
|
86
|
+
for item in post_hash do
|
87
|
+
pagination_array.push(item['pagination_id'])
|
88
|
+
next if item['text'] == nil
|
89
|
+
@source_name_and_link = objectSource(item)
|
90
|
+
case @source_name_and_link[:name]
|
91
|
+
when *$tools.config['skipped']['sources']
|
92
|
+
next
|
93
|
+
end
|
94
|
+
next if skip_hashtags(item, saved_tags)
|
95
|
+
postMentionsArray = []
|
96
|
+
@skipped_mentions_encountered = false
|
97
|
+
for mention in item['entities']['mentions'] do
|
98
|
+
case mention['name']
|
99
|
+
when *$tools.config['skipped']['mentions']
|
100
|
+
@skipped_mentions_encountered = true
|
101
|
+
next
|
102
|
+
end
|
103
|
+
postMentionsArray.push(mention['name'])
|
104
|
+
end
|
105
|
+
next if @skipped_mentions_encountered
|
106
|
+
me_mentioned = false
|
107
|
+
for name in postMentionsArray do
|
108
|
+
if name == ($tools.config['identity']['prefix'] || $files.users_read("me"))
|
109
|
+
me_mentioned = true
|
110
|
+
end
|
111
|
+
end
|
112
|
+
post_string << create_content_string(item, checkins_annotations(item), me_mentioned)
|
113
|
+
end
|
114
|
+
return post_string, pagination_array
|
115
|
+
end
|
116
|
+
def buildSimplePost(post_hash)
|
117
|
+
create_content_string(post_hash, nil, false)
|
118
|
+
end
|
119
|
+
def buildSimplePostInfo(post_hash)
|
120
|
+
#the_post_id = post_hash['id']
|
121
|
+
post_text = post_hash['text']
|
122
|
+
post_URL = post_hash['canonical_url']
|
123
|
+
post_details = "\nPost URL: ".cyan + post_URL.brown + "\n"
|
124
|
+
is_reply = post_hash['reply_to']
|
125
|
+
post_details << ("This post is a reply to post ".cyan + is_reply.brown + "\n") if is_reply != nil
|
126
|
+
if post_text != nil
|
127
|
+
without_braces = $tools.withoutSquareBraces($tools.getMarkdownText(post_text.dup))
|
128
|
+
post_details << "\nLength: ".cyan + without_braces.length.to_s.reddish
|
129
|
+
end
|
130
|
+
return post_details + "\n\n"
|
131
|
+
end
|
132
|
+
def buildPostInfo(post_hash, is_mine)
|
133
|
+
post_text = post_hash['text']
|
134
|
+
post_text != nil ? (colored_post = $tools.colorize(post_text)) : (puts "\n--Post deleted--\n\n".red; exit)
|
135
|
+
params = objectNames(post_hash['user'])
|
136
|
+
created_day, created_hour = objectDate(post_hash)
|
137
|
+
post_details = "\n" + created_day.cyan + ' ' + created_hour.cyan + ' ' + params[:user_handle].green
|
138
|
+
post_details << (" [#{params[:user_real_name]}]".reddish) if !params[:user_real_name].empty?
|
139
|
+
post_details << " (follows you)".blue if post_hash['user']['follows_you']
|
140
|
+
post_details << " (you follow)".blue if post_hash['user']['you_follow']
|
141
|
+
unless post_hash['user']['follows_you'] || post_hash['user']['you_follow']
|
142
|
+
post_details << " (you don't follow, doesn't follow you)".blue unless params[:user_name] == $tools.config['identity']['prefix']
|
143
|
+
end
|
144
|
+
post_details << "\n"
|
145
|
+
post_details << "\n" + colored_post + "\n\n"
|
146
|
+
post_details << "ID: ".cyan + post_hash['id'].to_s.green + "\n"
|
147
|
+
post_details << objectLinks(post_hash)
|
148
|
+
post_details << "Post URL: ".cyan + post_hash['canonical_url'].brown
|
149
|
+
is_reply = post_hash['reply_to']
|
150
|
+
repost_of = post_hash['repost_of']
|
151
|
+
post_details << ("\nThis post is a reply to post ".cyan + is_reply.brown) if is_reply != nil
|
152
|
+
if is_mine == false
|
153
|
+
if repost_of != nil
|
154
|
+
post_details << "\nThis post is a repost of post ".cyan + repost_of['id'].brown
|
155
|
+
else
|
156
|
+
post_details << "\nReplies: ".cyan + post_hash['num_replies'].to_s.reddish
|
157
|
+
post_details << " Reposts: ".cyan + post_hash['num_reposts'].to_s.reddish
|
158
|
+
post_details << " Stars: ".cyan + post_hash['num_stars'].to_s.reddish
|
159
|
+
end
|
160
|
+
post_details << ("\nYou reposted this post.".cyan) if post_hash['you_reposted']
|
161
|
+
post_details << ("\nYou starred this post.".cyan) if post_hash['you_starred']
|
162
|
+
post_details << "\nPosted with: ".cyan + post_hash['source']['name'].reddish
|
163
|
+
post_details << " Locale: ".cyan + post_hash['user']['locale'].reddish
|
164
|
+
post_details << " Timezone: ".cyan + post_hash['user']['timezone'].reddish
|
165
|
+
else
|
166
|
+
without_braces = $tools.withoutSquareBraces($tools.getMarkdownText(post_text.dup))
|
167
|
+
post_details << "\nLength: ".cyan + without_braces.length.to_s.reddish
|
168
|
+
end
|
169
|
+
post_details << "\n\n\n"
|
170
|
+
end
|
171
|
+
def buildUsersList(users_hash)
|
172
|
+
users_string = "\n"
|
173
|
+
users_hash.each do |item|
|
174
|
+
param = objectNames(item)
|
175
|
+
users_string << param[:user_real_name].green + " #{param[:user_handle]}\n".cyan
|
176
|
+
end
|
177
|
+
users_string << "\n\n"
|
178
|
+
end
|
179
|
+
def buildFollowList
|
180
|
+
users_hash = {}
|
181
|
+
@hash['data'].each do |item|
|
182
|
+
user_handle = "@" + item['username']
|
183
|
+
users_hash[item['id']] = [user_handle, item['name']]
|
184
|
+
end
|
185
|
+
return users_hash, @hash['meta']['min_id']
|
186
|
+
end
|
187
|
+
def buildFileInfo(resp_hash, with_url)
|
188
|
+
files_details_hash = filesDetails(resp_hash)
|
189
|
+
#file_url_expires = resp_hash['url_expires']
|
190
|
+
#derived_files = resp_hash['derived_files']
|
191
|
+
list_string = file_view(files_details_hash)
|
192
|
+
if files_details_hash[:file_is_public]
|
193
|
+
list_string << "\nThis file is ".cyan + "public".blue
|
194
|
+
file_url = files_details_hash[:file_url]
|
195
|
+
else
|
196
|
+
list_string << "\nThis file is ".cyan + "private".red
|
197
|
+
file_url = resp_hash['url']
|
198
|
+
end
|
199
|
+
if with_url
|
200
|
+
list_string << "\nURL: ".cyan + file_url
|
201
|
+
#list_string << derivedFilesDetails(derived_files)
|
202
|
+
end
|
203
|
+
list_string << "\n\n"
|
204
|
+
return list_string, file_url, files_details_hash[:name]
|
205
|
+
end
|
206
|
+
def showFilesList(with_url, reverse)
|
207
|
+
reverse ? resp_hash = getDataNormal(@hash) : resp_hash = getData(@hash)
|
208
|
+
list_string = ""
|
209
|
+
file_url = nil
|
210
|
+
pagination_array = []
|
211
|
+
resp_hash.each do |item|
|
212
|
+
pagination_array.push(item['pagination_id'])
|
213
|
+
files_details_hash = filesDetails(item)
|
214
|
+
#file_url_expires = item['url_expires']
|
215
|
+
#derived_files = item['derived_files']
|
216
|
+
list_string << "\nID: ".cyan + files_details_hash[:id].brown
|
217
|
+
list_string << file_view(files_details_hash)
|
218
|
+
if files_details_hash[:file_is_public]
|
219
|
+
list_string << "\nThis file is ".cyan + "public".blue
|
220
|
+
list_string << "\nLink: ".cyan + item['url_permanent'].magenta
|
221
|
+
else
|
222
|
+
list_string << "\nThis file is ".cyan + "private".red
|
223
|
+
if with_url
|
224
|
+
file_url = item['url']
|
225
|
+
list_string << "\nURL: ".cyan + file_url.brown
|
226
|
+
#list_string << derivedFilesDetails(derived_files)
|
227
|
+
end
|
228
|
+
end
|
229
|
+
list_string << "\n"
|
230
|
+
end
|
231
|
+
list_string << "\n"
|
232
|
+
return list_string, file_url, pagination_array
|
233
|
+
end
|
234
|
+
def buildUserInfos(name, adn_data)
|
235
|
+
name_params = objectNames(adn_data)
|
236
|
+
$files.users_write("me", name_params[:user_name]) if name == "me"
|
237
|
+
$files.users_write(adn_data['id'], name_params[:user_name]) if $files.users_read(adn_data['id']) == nil
|
238
|
+
created_at = adn_data['created_at']
|
239
|
+
user_show = "\nID: ".cyan.ljust(22) + adn_data['id'].green + "\n"
|
240
|
+
user_show << ("Name: ".cyan.ljust(21) + name_params[:user_real_name].green + "\n") if name_params[:user_real_name] != nil
|
241
|
+
adn_data['description'] != nil ? user_descr = adn_data['description']['text'] : user_descr = "No description available.".cyan
|
242
|
+
user_timezone = adn_data['timezone']
|
243
|
+
user_show << ("Timezone: ".cyan.ljust(21) + user_timezone.green + "\n") if user_timezone != nil
|
244
|
+
locale = adn_data['locale']
|
245
|
+
user_show << ("Locale: ".cyan.ljust(21) + locale.green + "\n") if locale != nil
|
246
|
+
user_show << "Posts: ".cyan.ljust(21) + adn_data['counts']['posts'].to_s.green + "\n" + "Followers: ".cyan.ljust(21) + adn_data['counts']['followers'].to_s.green + "\n" + "Following: ".cyan.ljust(21) + adn_data['counts']['following'].to_s.green + "\n"
|
247
|
+
user_show << "Web: ".cyan.ljust(21) + "http://".green + adn_data['verified_domain'].green + "\n" if adn_data['verified_domain'] != nil
|
248
|
+
user_show << "Joined: ".cyan.ljust(21) + created_at[0...10].green + " " + created_at[11...19].green + "\n"
|
249
|
+
user_show << "\n"
|
250
|
+
user_show << name_params[:user_handle].brown
|
251
|
+
if name != "me"
|
252
|
+
if adn_data['follows_you']
|
253
|
+
user_show << " follows you\n".green
|
254
|
+
else
|
255
|
+
user_show << " doesn't follow you\n".reddish
|
256
|
+
end
|
257
|
+
if adn_data['you_follow']
|
258
|
+
user_show << "You follow ".green + name_params[:user_handle].brown + "\n"
|
259
|
+
else
|
260
|
+
user_show << "You don't follow ".reddish + name_params[:user_handle].brown + "\n"
|
261
|
+
end
|
262
|
+
user_show << ("You muted ".reddish + name_params[:user_handle].brown + "\n") if adn_data['you_muted']
|
263
|
+
else
|
264
|
+
user_show << " => " + "yourself!".brown + "\n"
|
265
|
+
end
|
266
|
+
user_show << "\n"
|
267
|
+
user_show << "Bio: \n\n".cyan + user_descr + "\n\n"
|
268
|
+
end
|
269
|
+
end
|
270
|
+
end
|
data/lib/ayadn.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'ayadn/requires.rb'
|
2
|
+
require 'ayadn/adn_files.rb'
|
3
|
+
require 'ayadn/api.rb'
|
4
|
+
require 'ayadn/authorize.rb'
|
5
|
+
require 'ayadn/client-http.rb'
|
6
|
+
require 'ayadn/colors.rb'
|
7
|
+
require 'ayadn/debug.rb'
|
8
|
+
require 'ayadn/endpoints.rb'
|
9
|
+
require 'ayadn/extend.rb'
|
10
|
+
require 'ayadn/files.rb'
|
11
|
+
require 'ayadn/get-api.rb'
|
12
|
+
require 'ayadn/help.rb'
|
13
|
+
require 'ayadn/list.rb'
|
14
|
+
require 'ayadn/main.rb'
|
15
|
+
require 'ayadn/pinboard.rb'
|
16
|
+
require 'ayadn/post.rb'
|
17
|
+
require 'ayadn/skip.rb'
|
18
|
+
require 'ayadn/status.rb'
|
19
|
+
require 'ayadn/tools.rb'
|
20
|
+
require 'ayadn/user-stream.rb'
|
21
|
+
require 'ayadn/view-channels.rb'
|
22
|
+
require 'ayadn/view-interactions.rb'
|
23
|
+
require 'ayadn/view-object.rb'
|
24
|
+
require 'ayadn/view.rb'
|
data/lib/experiments.rb
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
class AyaDN
|
4
|
+
# experimenting without curl
|
5
|
+
# def ayadnFileUpload(file_name)
|
6
|
+
# # puts "\nUploading ".green + file_name.brown + "\n"
|
7
|
+
# # response = @api.createIncompleteFileUpload(file_name)
|
8
|
+
# # puts response.inspect #SUCCESS
|
9
|
+
# # THEN multipart => #FAIL
|
10
|
+
# end
|
11
|
+
|
12
|
+
|
13
|
+
# def ayadnDeactivateChannel(channel_id)
|
14
|
+
# resp = @api.deactivateChannel(channel_id)
|
15
|
+
# puts resp
|
16
|
+
# end
|
17
|
+
|
18
|
+
|
19
|
+
### experiment
|
20
|
+
### not DRY at all, this is ok, chill out
|
21
|
+
# def ayadnRecord(item)
|
22
|
+
# # first create with curl -i -H 'Authorization: BEARER xxx' "https://stream-channel.app.net/stream/user?auto_delete=1&include_annotations=1"
|
23
|
+
# # it stays open and returns a stream_id in the headers
|
24
|
+
# # TODO: replace curl with a good connection system with HTTP or Rest-Client
|
25
|
+
|
26
|
+
# command = "sleep 1; curl -i -H 'Authorization: BEARER #{@token}' 'https://stream-channel.app.net/stream/user?auto_delete=1&include_annotations=1'"
|
27
|
+
# pid = Process.spawn(command)
|
28
|
+
# Process.detach(pid)
|
29
|
+
|
30
|
+
# puts "Enter stream id: "
|
31
|
+
# stream_id = STDIN.gets.chomp
|
32
|
+
# last_page_id = nil
|
33
|
+
# start = Time.now
|
34
|
+
# case item
|
35
|
+
# when "global" # works :)
|
36
|
+
# @url = "https://alpha-api.app.net/stream/0/posts/stream/global?connection_id=#{stream_id}&since_id=#{last_page_id}"
|
37
|
+
# when "unified" # doesn't work, have to implement some sort of real keep-alive connection
|
38
|
+
# @url = "https://alpha-api.app.net/stream/0/posts/stream/unified?connection_id=#{stream_id}&since_id=#{last_page_id}&include_directed_posts=1"
|
39
|
+
# end
|
40
|
+
# puts "\nRecording stream in #{$tools.ayadn_configuration[:files_path]}/rec-#{item}.json\n\n"
|
41
|
+
# uri = URI.parse(@url)
|
42
|
+
# https = Net::HTTP.new(uri.host,uri.port)
|
43
|
+
# https.use_ssl = true
|
44
|
+
# https.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
45
|
+
# request = Net::HTTP::Get.new(uri.request_uri)
|
46
|
+
# request["Authorization"] = "Bearer #{@token}"
|
47
|
+
# request["Content-Type"] = "application/json"
|
48
|
+
# response = https.request(request)
|
49
|
+
# @hash = JSON.parse(response.body)
|
50
|
+
# big_stream = @hash['data']
|
51
|
+
# f = File.new($tools.ayadn_configuration[:files_path] + "/rec-#{item}.json", 'w')
|
52
|
+
# f.puts(big_stream.to_json)
|
53
|
+
# f.close
|
54
|
+
# stream, last_page_id = completeStream
|
55
|
+
# displayScrollStream(stream)
|
56
|
+
# number_of_connections = 1
|
57
|
+
# file_operations_timer = 0
|
58
|
+
# loop do
|
59
|
+
# begin
|
60
|
+
# case item
|
61
|
+
# when "global"
|
62
|
+
# @url = "https://alpha-api.app.net/stream/0/posts/stream/global?connection_id=#{stream_id}&since_id=#{last_page_id}"
|
63
|
+
# when "unified"
|
64
|
+
# @url = "https://alpha-api.app.net/stream/0/posts/stream/unified?connection_id=#{stream_id}&since_id=#{last_page_id}&include_directed_posts=1"
|
65
|
+
# end
|
66
|
+
# uri = URI.parse(@url)
|
67
|
+
# request = Net::HTTP::Get.new(uri.request_uri)
|
68
|
+
# request["Authorization"] = "Bearer #{@token}"
|
69
|
+
# request["Content-Type"] = "application/json"
|
70
|
+
# before_request_id = last_page_id
|
71
|
+
# response = https.request(request)
|
72
|
+
# @hash = JSON.parse(response.body)
|
73
|
+
# stream, last_page_id = completeStream
|
74
|
+
# displayScrollStream(stream)
|
75
|
+
# if last_page_id == nil
|
76
|
+
# last_page_id = before_request_id
|
77
|
+
# sleep 0.5 # trying to play nice with the API limits
|
78
|
+
# number_of_connections += 1
|
79
|
+
# next
|
80
|
+
# end
|
81
|
+
# # don't let it run for days, it will eat your RAM
|
82
|
+
# # + the simple file dump isn't ok in the long run
|
83
|
+
# big_stream << @hash['data']
|
84
|
+
# number_of_connections += 1
|
85
|
+
# file_operations_timer += 1
|
86
|
+
# sleep 0.2 # trying to play nice with the API limits
|
87
|
+
# if file_operations_timer == 10
|
88
|
+
# puts "\nRecording stream in #{$tools.ayadn_configuration[:files_path]}/rec-#{item}.json\n\n".green
|
89
|
+
# #big_json = JSON.parse(IO.read($tools.ayadn_configuration[:files_path] + "/rec-#{item}.json"))
|
90
|
+
# f = File.new($tools.ayadn_configuration[:files_path] + "/rec-#{item}.json", 'w')
|
91
|
+
# f.puts(big_stream.to_json)
|
92
|
+
# f.close
|
93
|
+
# file_operations_timer = 0
|
94
|
+
# end
|
95
|
+
# rescue Exception => e
|
96
|
+
# puts e.inspect
|
97
|
+
# puts e.to_s
|
98
|
+
# finish = Time.now
|
99
|
+
# elapsed = finish.to_f - start.to_f
|
100
|
+
# mins, secs = elapsed.divmod 60.0
|
101
|
+
# puts "\nRequests: #{number_of_connections}\n"
|
102
|
+
# puts "Elapsed time (min:secs.msecs): "
|
103
|
+
# puts("%3d:%04.2f"%[mins.to_i, secs])
|
104
|
+
# puts "\nStream recorded in #{$tools.ayadn_configuration[:files_path]}/rec-#{item}.json"
|
105
|
+
# exit
|
106
|
+
# end
|
107
|
+
# end
|
108
|
+
# end
|
109
|
+
end
|
metadata
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ayadn
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Eric Dejonckheere
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-02-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.8'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.8'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pinboard
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.1.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.1.1
|
41
|
+
description: ! 'AyaDN features all kinds of tools to access and manage your App.net
|
42
|
+
account. It''s an ADN client (posts, streams, PM, channels, files, etc) and a toolbelt
|
43
|
+
at the same time: it can save post links to Pinboard, post your currently-playing
|
44
|
+
iTunes song, backup data associated with your ADN account such as followings, followers,
|
45
|
+
muted users, and many other features.
|
46
|
+
|
47
|
+
'
|
48
|
+
email: eric@aya.io
|
49
|
+
executables:
|
50
|
+
- ayadn
|
51
|
+
extensions: []
|
52
|
+
extra_rdoc_files: []
|
53
|
+
files:
|
54
|
+
- CHANGELOG.md
|
55
|
+
- CONTRIBUTORS.md
|
56
|
+
- LICENSE.md
|
57
|
+
- README.md
|
58
|
+
- bin/ayadn
|
59
|
+
- config.yml
|
60
|
+
- lib/ayadn.rb
|
61
|
+
- lib/ayadn/adn_files.rb
|
62
|
+
- lib/ayadn/api.rb
|
63
|
+
- lib/ayadn/authorize.rb
|
64
|
+
- lib/ayadn/client-http.rb
|
65
|
+
- lib/ayadn/colors.rb
|
66
|
+
- lib/ayadn/debug.rb
|
67
|
+
- lib/ayadn/endpoints.rb
|
68
|
+
- lib/ayadn/extend.rb
|
69
|
+
- lib/ayadn/files.rb
|
70
|
+
- lib/ayadn/get-api.rb
|
71
|
+
- lib/ayadn/help.rb
|
72
|
+
- lib/ayadn/list.rb
|
73
|
+
- lib/ayadn/main.rb
|
74
|
+
- lib/ayadn/pinboard.rb
|
75
|
+
- lib/ayadn/post.rb
|
76
|
+
- lib/ayadn/requires.rb
|
77
|
+
- lib/ayadn/skip.rb
|
78
|
+
- lib/ayadn/status.rb
|
79
|
+
- lib/ayadn/tools.rb
|
80
|
+
- lib/ayadn/user-stream.rb
|
81
|
+
- lib/ayadn/view-channels.rb
|
82
|
+
- lib/ayadn/view-interactions.rb
|
83
|
+
- lib/ayadn/view-object.rb
|
84
|
+
- lib/ayadn/view.rb
|
85
|
+
- lib/experiments.rb
|
86
|
+
homepage: http://www.ayadn-app.net/
|
87
|
+
licenses:
|
88
|
+
- ISC
|
89
|
+
metadata: {}
|
90
|
+
post_install_message:
|
91
|
+
rdoc_options: []
|
92
|
+
require_paths:
|
93
|
+
- lib
|
94
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 1.9.3
|
99
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
requirements: []
|
105
|
+
rubyforge_project:
|
106
|
+
rubygems_version: 2.2.1
|
107
|
+
signing_key:
|
108
|
+
specification_version: 4
|
109
|
+
summary: App.net command-line client
|
110
|
+
test_files: []
|