ayadn 1.7.7 → 1.8.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 +4 -4
- data/CHANGELOG.md +12 -0
- data/ayadn.gemspec +7 -7
- data/doc/05-streams.md +28 -0
- data/doc/06-post.md +21 -1
- data/lib/ayadn/action.rb +93 -9
- data/lib/ayadn/annotations.rb +7 -2
- data/lib/ayadn/api.rb +10 -1
- data/lib/ayadn/app.rb +11 -0
- data/lib/ayadn/databases.rb +11 -2
- data/lib/ayadn/descriptions.rb +43 -3
- data/lib/ayadn/endpoints.rb +6 -2
- data/lib/ayadn/fileops.rb +1 -3
- data/lib/ayadn/nowplaying.rb +30 -4
- data/lib/ayadn/scroll.rb +9 -0
- data/lib/ayadn/set.rb +37 -1
- data/lib/ayadn/settings.rb +21 -13
- data/lib/ayadn/status.rb +3 -0
- data/lib/ayadn/stream.rb +21 -8
- data/lib/ayadn/version.rb +1 -1
- data/lib/ayadn/workers.rb +8 -2
- data/spec/mock/channels.db +0 -0
- data/spec/unit/annotations_spec.rb +33 -7
- data/spec/unit/endpoints_spec.rb +2 -2
- data/spec/unit/post_spec.rb +9 -3
- data/spec/unit/set_spec.rb +22 -1
- data/spec/unit/view_spec.rb +89 -72
- metadata +20 -18
data/lib/ayadn/set.rb
CHANGED
@@ -37,6 +37,18 @@ module Ayadn
|
|
37
37
|
tvshow_config.save
|
38
38
|
end
|
39
39
|
|
40
|
+
desc "marker ITEM TRUE/FALSE", "Set values for stream markers"
|
41
|
+
map "markers" => :marker
|
42
|
+
def marker(*args)
|
43
|
+
marker_config = SetMarker.new
|
44
|
+
unless args.length != 2
|
45
|
+
marker_config.send(args[0], args[1])
|
46
|
+
else
|
47
|
+
abort(Status.error_missing_parameters)
|
48
|
+
end
|
49
|
+
marker_config.save
|
50
|
+
end
|
51
|
+
|
40
52
|
desc "nicerank ITEM VALUE", "Set NiceRank filter values"
|
41
53
|
long_desc Descriptions.set_nicerank
|
42
54
|
def nicerank *args
|
@@ -392,6 +404,30 @@ module Ayadn
|
|
392
404
|
|
393
405
|
end
|
394
406
|
|
407
|
+
class SetMarker < SetBase
|
408
|
+
|
409
|
+
def initialize
|
410
|
+
super
|
411
|
+
@category = 'marker'
|
412
|
+
end
|
413
|
+
|
414
|
+
def validate(value)
|
415
|
+
Validators.boolean(value)
|
416
|
+
end
|
417
|
+
|
418
|
+
def method_missing(meth, options)
|
419
|
+
@input = meth.to_s
|
420
|
+
@output = validate(options)
|
421
|
+
case @input
|
422
|
+
when 'update_messages'
|
423
|
+
Settings.options[:marker][meth.to_sym] = @output
|
424
|
+
else
|
425
|
+
super
|
426
|
+
end
|
427
|
+
end
|
428
|
+
|
429
|
+
end
|
430
|
+
|
395
431
|
class SetCounts < SetBase
|
396
432
|
|
397
433
|
def initialize
|
@@ -457,7 +493,7 @@ module Ayadn
|
|
457
493
|
@input = meth.to_s.capitalize
|
458
494
|
@output = validate(options)
|
459
495
|
case meth.to_s
|
460
|
-
when 'id', 'index', 'username', 'name', 'date', 'link', 'dots', 'hashtags', 'mentions', 'source', 'symbols', 'debug'
|
496
|
+
when 'id', 'index', 'username', 'name', 'date', 'link', 'dots', 'hashtags', 'mentions', 'source', 'symbols', 'unread', 'debug'
|
461
497
|
Settings.options[:colors][meth.to_sym] = @output
|
462
498
|
when 'hashtag', 'mention', 'symbol'
|
463
499
|
Settings.options[:colors]["#{meth}s".to_sym] = @output
|
data/lib/ayadn/settings.rb
CHANGED
@@ -64,6 +64,8 @@ module Ayadn
|
|
64
64
|
def self.init_config
|
65
65
|
@config[:version] = VERSION
|
66
66
|
@config[:platform] = RbConfig::CONFIG['host_os']
|
67
|
+
@config[:ruby] = RUBY_VERSION
|
68
|
+
@config[:locale] = ENV["LANG"]
|
67
69
|
self.config_file
|
68
70
|
self.create_api_file
|
69
71
|
self.create_version_file
|
@@ -95,12 +97,14 @@ module Ayadn
|
|
95
97
|
conf[:timeline][:show_debug] = false if conf[:timeline][:show_debug].nil?
|
96
98
|
conf[:timeline][:show_spinner] = true if conf[:timeline][:show_spinner].nil?
|
97
99
|
conf[:colors][:debug] = :red if conf[:colors][:debug].nil?
|
100
|
+
conf[:colors][:unread] = :cyan if conf[:colors][:unread].nil?
|
98
101
|
conf[:nowplaying] = {} if conf[:nowplaying].nil?
|
99
102
|
conf[:movie] = {hashtag: 'nowwatching'} if conf[:movie].nil?
|
100
103
|
conf[:tvshow] = {hashtag: 'nowwatching'} if conf[:tvshow].nil?
|
101
104
|
conf[:formats][:list] = {reverse: true} if conf[:formats][:list].nil?
|
102
105
|
conf[:timeline][:compact] = false if conf[:timeline][:compact].nil?
|
103
106
|
conf[:timeline][:show_channel_oembed] = true if conf[:timeline][:show_channel_oembed].nil?
|
107
|
+
conf[:marker] = {update_messages: true} if conf[:marker].nil?
|
104
108
|
|
105
109
|
@options = conf
|
106
110
|
self.write_config_file(config_file, @options)
|
@@ -167,10 +171,10 @@ module Ayadn
|
|
167
171
|
def self.defaults
|
168
172
|
{
|
169
173
|
timeline: {
|
170
|
-
directed:
|
171
|
-
deleted:
|
172
|
-
html:
|
173
|
-
annotations:
|
174
|
+
directed: true,
|
175
|
+
deleted: false,
|
176
|
+
html: false,
|
177
|
+
annotations: true,
|
174
178
|
show_source: true,
|
175
179
|
show_symbols: true,
|
176
180
|
show_real_name: true,
|
@@ -180,23 +184,26 @@ module Ayadn
|
|
180
184
|
show_channel_oembed: true,
|
181
185
|
compact: false
|
182
186
|
},
|
187
|
+
marker: {
|
188
|
+
update_messages: true
|
189
|
+
},
|
183
190
|
counts: {
|
184
191
|
default: 50,
|
185
|
-
unified:
|
186
|
-
global:
|
187
|
-
checkins:
|
192
|
+
unified: 50,
|
193
|
+
global: 50,
|
194
|
+
checkins: 50,
|
188
195
|
conversations: 50,
|
189
196
|
photos: 50,
|
190
|
-
trending:
|
191
|
-
mentions:
|
192
|
-
convo:
|
197
|
+
trending: 50,
|
198
|
+
mentions: 50,
|
199
|
+
convo: 50,
|
193
200
|
posts: 100,
|
194
201
|
messages: 50,
|
195
202
|
search: 200,
|
196
|
-
whoreposted:
|
197
|
-
whostarred:
|
203
|
+
whoreposted: 20,
|
204
|
+
whostarred: 20,
|
198
205
|
whatstarred: 100,
|
199
|
-
files:
|
206
|
+
files: 50
|
200
207
|
},
|
201
208
|
formats: {
|
202
209
|
table: {
|
@@ -218,6 +225,7 @@ module Ayadn
|
|
218
225
|
mentions: :red,
|
219
226
|
source: :cyan,
|
220
227
|
symbols: :green,
|
228
|
+
unread: :cyan,
|
221
229
|
debug: :red
|
222
230
|
},
|
223
231
|
backup: {
|
data/lib/ayadn/status.rb
CHANGED
@@ -204,6 +204,9 @@ module Ayadn
|
|
204
204
|
def self.no_new_posts
|
205
205
|
"\nNo new posts since your last visit.\n\n".color(:cyan)
|
206
206
|
end
|
207
|
+
def self.no_new_messages
|
208
|
+
"\n No new messages since your last visit.\n".color(:cyan)
|
209
|
+
end
|
207
210
|
def self.type_and_target_missing
|
208
211
|
"\nYou have to submit a TYPE (mention, hashtag, client name) and a TARGET (a @username, a hashtag, a client name)\n\n".color(:red)
|
209
212
|
end
|
data/lib/ayadn/stream.rb
CHANGED
@@ -21,10 +21,10 @@ module Ayadn
|
|
21
21
|
Databases.save_max_id(stream, 'global') unless stream['meta']['max_id'].nil?
|
22
22
|
@view.render(stream, options, niceranks)
|
23
23
|
end
|
24
|
-
if
|
24
|
+
if options[:scroll]
|
25
25
|
@view.clear_screen()
|
26
|
+
Scroll.new(@api, @view).global(options)
|
26
27
|
end
|
27
|
-
Scroll.new(@api, @view).global(options) if options[:scroll]
|
28
28
|
puts "\n" if Settings.options[:timeline][:compact] && options[:raw].nil?
|
29
29
|
end
|
30
30
|
|
@@ -51,10 +51,10 @@ module Ayadn
|
|
51
51
|
Databases.save_max_id(stream)
|
52
52
|
@view.render(stream, options)
|
53
53
|
end
|
54
|
-
if
|
54
|
+
if options[:scroll]
|
55
55
|
@view.clear_screen()
|
56
|
+
Scroll.new(@api, @view).send(meth, options)
|
56
57
|
end
|
57
|
-
Scroll.new(@api, @view).send(meth, options) if options[:scroll]
|
58
58
|
puts "\n" if Settings.options[:timeline][:compact] && options[:raw].nil?
|
59
59
|
end
|
60
60
|
|
@@ -73,10 +73,10 @@ module Ayadn
|
|
73
73
|
options[:in_mentions] = true
|
74
74
|
@view.render(stream, options)
|
75
75
|
end
|
76
|
-
if
|
76
|
+
if options[:scroll]
|
77
77
|
@view.clear_screen()
|
78
|
+
Scroll.new(@api, @view).mentions(username, options)
|
78
79
|
end
|
79
|
-
Scroll.new(@api, @view).mentions(username, options) if options[:scroll]
|
80
80
|
puts "\n" if Settings.options[:timeline][:compact] && options[:raw].nil?
|
81
81
|
end
|
82
82
|
|
@@ -201,13 +201,26 @@ module Ayadn
|
|
201
201
|
end
|
202
202
|
|
203
203
|
def messages(channel_id, options)
|
204
|
+
if options[:silent]
|
205
|
+
Settings.options[:marker][:update_messages] = false
|
206
|
+
end
|
204
207
|
channel_id = @workers.get_channel_id_from_alias(channel_id)
|
205
208
|
@view.downloading(options)
|
206
209
|
resp = @api.get_messages(channel_id, options)
|
207
|
-
|
210
|
+
name = "channel:#{channel_id}"
|
211
|
+
Check.no_new_posts(resp, options, name)
|
212
|
+
if Settings.options[:marker][:update_messages] == true
|
213
|
+
unless resp['meta']['max_id'].nil?
|
214
|
+
marked = @api.update_marker(name, resp['meta']['max_id'])
|
215
|
+
updated = JSON.parse(marked)
|
216
|
+
if updated['meta']['code'] != 200
|
217
|
+
raise "couldn't update channel #{channel_id} as read"
|
218
|
+
end
|
219
|
+
end
|
220
|
+
end
|
208
221
|
Databases.save_max_id(resp)
|
209
222
|
@view.if_raw(resp, options)
|
210
|
-
Check.no_data(resp, 'messages')
|
223
|
+
Check.no_data(resp, 'messages') unless options[:scroll]
|
211
224
|
@view.render(resp, options)
|
212
225
|
Scroll.new(@api, @view).messages(channel_id, options) if options[:scroll]
|
213
226
|
puts "\n" if Settings.options[:timeline][:compact] && options[:raw].nil?
|
data/lib/ayadn/version.rb
CHANGED
data/lib/ayadn/workers.rb
CHANGED
@@ -236,14 +236,18 @@ module Ayadn
|
|
236
236
|
values[:num_stars] = 0
|
237
237
|
end
|
238
238
|
|
239
|
+
if post['num_replies']
|
240
|
+
values[:num_replies] = post['num_replies']
|
241
|
+
else
|
242
|
+
values[:num_replies] = 0
|
243
|
+
end
|
244
|
+
|
239
245
|
if post['reply_to']
|
240
246
|
values[:is_reply] = true
|
241
247
|
values[:reply_to] = post['reply_to']
|
242
|
-
values[:num_replies] = post['num_replies']
|
243
248
|
else
|
244
249
|
values[:is_reply] = false
|
245
250
|
values[:reply_to] = nil
|
246
|
-
values[:num_replies] = 0
|
247
251
|
end
|
248
252
|
if post['num_reposts']
|
249
253
|
values[:num_reposts] = post['num_reposts']
|
@@ -343,6 +347,8 @@ module Ayadn
|
|
343
347
|
else
|
344
348
|
unread = "No unread messages"
|
345
349
|
end
|
350
|
+
@shell.say_status :recording, "channel #{ch['id']}", :green
|
351
|
+
Databases.add_channel_object(ch)
|
346
352
|
bucket << chan.new(ch['id'], ch['counts']['messages'], ch['counts']['subscribers'], ch['type'], ch['owner'], ch['annotations'], ch['readers'], ch['editors'], writers, ch['you_subscribed'], unread, ch['recent_message_id'], ch['recent_message'])
|
347
353
|
end
|
348
354
|
puts "\e[H\e[2J"
|
Binary file
|
@@ -86,7 +86,10 @@ describe Ayadn::Annotations do
|
|
86
86
|
},
|
87
87
|
post_max_length: 256,
|
88
88
|
message_max_length: 2048,
|
89
|
-
version: 'wee'
|
89
|
+
version: 'wee',
|
90
|
+
ruby: '0',
|
91
|
+
locale: 'gibberish',
|
92
|
+
platform: 'shoes'
|
90
93
|
})
|
91
94
|
Ayadn::Errors.stub(:warn).and_return("warned")
|
92
95
|
Ayadn::Logs.stub(:rec).and_return("logged")
|
@@ -94,46 +97,69 @@ describe Ayadn::Annotations do
|
|
94
97
|
Ayadn::FileOps.stub(:upload_files).and_return([{'data' => {'id' => 3312,'file_token' => '0x3312-YOLO'}},{'data' => {'id' => 5550,'file_token' => '0x5550-WOOT'}}])
|
95
98
|
end
|
96
99
|
|
100
|
+
let(:rest) {Ayadn::CNX}
|
101
|
+
|
97
102
|
describe "#base" do
|
98
103
|
it "creates basic annotations" do
|
99
104
|
ann = Ayadn::Annotations.new({})
|
100
|
-
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}]
|
105
|
+
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}, "env"=>{"platform"=>'shoes', "ruby"=>"0", "locale"=>"gibberish"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}]
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe "#youtube" do
|
110
|
+
before do
|
111
|
+
rest.stub(:download).and_return({'width' => 33, 'height' => 12}.to_json)
|
112
|
+
end
|
113
|
+
it "creates youtube annotations" do
|
114
|
+
ann = Ayadn::Annotations.new({title: 'WUT', source: 'tEsT', options: {youtube: ['http://yolo']}})
|
115
|
+
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}, "env"=>{"platform"=>"shoes", "ruby"=>"0", "locale"=>"gibberish"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}, {"type"=>"net.app.core.oembed", "value"=>{"version"=>"1.0", "type"=>"video", "provider_name"=>"YouTube", "provider_url"=>"http://youtube.com/", "width"=>33, "height"=>12, "title"=>nil, "author_name"=>nil, "author_url"=>nil, "embeddable_url"=>"http://yolo", "html"=>nil, "thumbnail_url"=>nil, "thumbnail_height"=>nil, "thumbnail_width"=>nil}}, {"type"=>"com.ayadn.youtube", "value"=>{"title"=>nil, "link"=>"http://yolo"}}]
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe "#vimeo" do
|
120
|
+
before do
|
121
|
+
rest.stub(:download).and_return({'title' => 'yolo'}.to_json)
|
122
|
+
end
|
123
|
+
it "creates vimeo annotations" do
|
124
|
+
ann = Ayadn::Annotations.new({title: 'WUT', source: 'tEsT', options: {vimeo: ['http://yolo'],}})
|
125
|
+
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}, "env"=>{"platform"=>"shoes", "ruby"=>"0", "locale"=>"gibberish"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}, {"type"=>"net.app.core.oembed", "value"=>{"version"=>"1.0", "type"=>"video", "provider_name"=>"Vimeo", "provider_url"=>"http://vimeo.com/", "width"=>nil, "height"=>nil, "title"=>"yolo", "author_name"=>nil, "author_url"=>nil, "embeddable_url"=>"http://yolo", "html"=>nil, "thumbnail_url"=>nil, "thumbnail_height"=>nil, "thumbnail_width"=>nil}}, {"type"=>"com.ayadn.vimeo", "value"=>{"title"=>"yolo", "link"=>"http://yolo"}}]
|
101
126
|
end
|
102
127
|
end
|
103
128
|
|
104
129
|
describe "#movie" do
|
105
130
|
it "creates movie annotations" do
|
106
131
|
ann = Ayadn::Annotations.new({title: 'WUT', source: 'tEsT', options: {movie: true}})
|
107
|
-
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}, {"type"=>"com.ayadn.movie", "value"=>{"title"=>"WUT", "source"=>"tEsT"}}]
|
132
|
+
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}, "env"=>{"platform"=>'shoes', "ruby"=>"0", "locale"=>"gibberish"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}, {"type"=>"com.ayadn.movie", "value"=>{"title"=>"WUT", "source"=>"tEsT"}}]
|
108
133
|
end
|
109
134
|
end
|
110
135
|
|
111
136
|
describe "#tvshow" do
|
112
137
|
it "creates tvshow annotations" do
|
113
138
|
ann = Ayadn::Annotations.new({title: 'WUT', source: 'tEsT', options: {tvshow: true}})
|
114
|
-
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}, {"type"=>"com.ayadn.tvshow", "value"=>{"title"=>"WUT", "source"=>"tEsT"}}]
|
139
|
+
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}, "env"=>{"platform"=>'shoes', "ruby"=>"0", "locale"=>"gibberish"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}, {"type"=>"com.ayadn.tvshow", "value"=>{"title"=>"WUT", "source"=>"tEsT"}}]
|
115
140
|
end
|
116
141
|
end
|
117
142
|
|
118
143
|
describe "#nowplaying --silent" do
|
119
144
|
it "creates nowplaying --silent annotations" do
|
120
145
|
ann = Ayadn::Annotations.new({source: 'wadawadawada', options: {nowplaying: true, no_url: true}})
|
121
|
-
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}, {"type"=>"com.ayadn.nowplaying", "value"=>{"status"=>"no-url", "source"=>"wadawadawada"}}]
|
146
|
+
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}, "env"=>{"platform"=>'shoes', "ruby"=>"0", "locale"=>"gibberish"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}, {"type"=>"com.ayadn.nowplaying", "value"=>{"status"=>"no-url", "source"=>"wadawadawada"}}]
|
122
147
|
end
|
123
148
|
end
|
124
149
|
|
125
150
|
describe "#nowplaying" do
|
126
151
|
it "creates nowplaying annotations" do
|
127
152
|
ann = Ayadn::Annotations.new({source: 'rspec', title: 'ibelieveicanfly', artist: 'big jim', artwork: 'http://ahah', link: 'http://ohoh', source: 'fake', width: 9000, height: 30000, artwork_thumb: 'http://hihi', width_thumb: 9, height_thumb: 3, options: {nowplaying: true}})
|
128
|
-
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}, {"type"=>"com.ayadn.nowplaying", "value"=>{"title"=>"ibelieveicanfly", "artist"=>
|
153
|
+
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}, "env"=>{"platform"=>'shoes', "ruby"=>"0", "locale"=>"gibberish"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}, {"type"=>"com.ayadn.nowplaying", "value"=>{"title"=>"ibelieveicanfly", "artist"=>"big jim", "artwork"=>"http://ahah", "link"=>"http://ohoh", "source"=>"fake"}}, {"type"=>"net.app.core.oembed", "value"=>{"version"=>"1.0", "type"=>"photo", "width"=>9000, "height"=>30000, "title"=>"ibelieveicanfly", "url"=>"http://ahah", "embeddable_url"=>"http://ahah", "provider_url"=>"https://itunes.apple.com", "provider_name"=>"iTunes", "thumbnail_url"=>"http://hihi", "thumbnail_width"=>9, "thumbnail_height"=>3}}]
|
129
154
|
end
|
130
155
|
end
|
131
156
|
|
132
157
|
describe "#files" do
|
133
158
|
it "creates files annotations" do
|
134
159
|
ann = Ayadn::Annotations.new({options: {embed: ['whatever.jpg', 'another.png']}}) # fake array, cf STUB1
|
135
|
-
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}, {"type"=>"net.app.core.oembed", "value"=>{"+net.app.core.file"=>{"file_id"=>3312, "file_token"=>"0x3312-YOLO", "format"=>"oembed"}}}, {"type"=>"net.app.core.oembed", "value"=>{"+net.app.core.file"=>{"file_id"=>5550, "file_token"=>"0x5550-WOOT", "format"=>"oembed"}}}]
|
160
|
+
expect(ann.content).to eq [{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}, "env"=>{"platform"=>'shoes', "ruby"=>"0", "locale"=>"gibberish"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}, {"type"=>"net.app.core.oembed", "value"=>{"+net.app.core.file"=>{"file_id"=>3312, "file_token"=>"0x3312-YOLO", "format"=>"oembed"}}}, {"type"=>"net.app.core.oembed", "value"=>{"+net.app.core.file"=>{"file_id"=>5550, "file_token"=>"0x5550-WOOT", "format"=>"oembed"}}}]
|
136
161
|
end
|
137
162
|
end
|
138
163
|
|
164
|
+
|
139
165
|
end
|
data/spec/unit/endpoints_spec.rb
CHANGED
@@ -69,12 +69,12 @@ describe Ayadn::Endpoints do
|
|
69
69
|
end
|
70
70
|
describe '#channel' do
|
71
71
|
it "returns the channel url" do
|
72
|
-
expect(Ayadn::Endpoints.new.channel([56789, 12345])).to eq 'https://api.app.net/channels/?ids=56789,12345&access_token=XXX&count=100&include_html=0&include_directed=1&include_deleted=0&include_annotations=1'
|
72
|
+
expect(Ayadn::Endpoints.new.channel([56789, 12345])).to eq 'https://api.app.net/channels/?ids=56789,12345&access_token=XXX&count=100&include_html=0&include_directed=1&include_deleted=0&include_annotations=1&include_marker=1'
|
73
73
|
end
|
74
74
|
end
|
75
75
|
describe '#messages' do
|
76
76
|
it "returns the messages url" do
|
77
|
-
expect(Ayadn::Endpoints.new.messages(56789)).to eq 'https://api.app.net/channels/56789/messages?access_token=XXX&count=100&include_html=0&include_directed=1&include_deleted=0&include_annotations=1&include_machine=1'
|
77
|
+
expect(Ayadn::Endpoints.new.messages(56789)).to eq 'https://api.app.net/channels/56789/messages?access_token=XXX&count=100&include_html=0&include_directed=1&include_deleted=0&include_annotations=1&include_machine=1&include_marker=1'
|
78
78
|
end
|
79
79
|
end
|
80
80
|
describe '#file' do
|
data/spec/unit/post_spec.rb
CHANGED
@@ -36,7 +36,10 @@ describe Ayadn::Post do
|
|
36
36
|
},
|
37
37
|
post_max_length: 256,
|
38
38
|
message_max_length: 2048,
|
39
|
-
version: 'wee'
|
39
|
+
version: 'wee',
|
40
|
+
ruby: '0',
|
41
|
+
locale: 'gibberish',
|
42
|
+
platform: 'shoes'
|
40
43
|
})
|
41
44
|
Ayadn::Settings.stub(:user_token).and_return('XYZ')
|
42
45
|
Ayadn::Settings.stub(:check_for_accounts)
|
@@ -46,14 +49,17 @@ describe Ayadn::Post do
|
|
46
49
|
|
47
50
|
let(:post) { Ayadn::Post.new }
|
48
51
|
#let(:rest) {Ayadn::CNX = double} #verbose in RSpec output, but useful
|
49
|
-
let(:rest) {Ayadn::CNX}
|
52
|
+
let(:rest) {Ayadn::CNX}
|
50
53
|
|
51
54
|
describe "#post" do
|
52
55
|
before do
|
53
56
|
rest.stub(:post).and_return(File.read("spec/mock/posted.json"))
|
54
57
|
end
|
55
58
|
it "posts a post" do
|
56
|
-
expect(rest).to receive(:post).with("https://api.app.net/posts/?include_annotations=1&access_token=XYZ", {"text"=>"YOLO", "entities"=>{"parse_markdown_links"=>true, "parse_links"=>true}, "annotations"=>[{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}]})
|
59
|
+
expect(rest).to receive(:post).with("https://api.app.net/posts/?include_annotations=1&access_token=XYZ", {"text"=>"YOLO", "entities"=>{"parse_markdown_links"=>true, "parse_links"=>true}, "annotations"=>[{"type"=>"com.ayadn.user", "value"=>{"+net.app.core.user"=>{"user_id"=>"@test", "format"=>"basic"}, "env"=>{"platform"=>"shoes", "ruby"=>"0", "locale"=>"gibberish"}}}, {"type"=>"com.ayadn.client", "value"=>{"url"=>"http://ayadn-app.net", "author"=>{"name"=>"Eric Dejonckheere", "username"=>"ericd", "id"=>"69904", "email"=>"eric@aya.io"}, "version"=>"wee"}}]})
|
60
|
+
x = post.post({text: 'YOLO'})
|
61
|
+
end
|
62
|
+
it "posts a post" do
|
57
63
|
x = post.post({text: 'YOLO'})
|
58
64
|
end
|
59
65
|
it "returns the posted post" do
|
data/spec/unit/set_spec.rb
CHANGED
@@ -68,6 +68,9 @@ def init_stubs
|
|
68
68
|
auto_save_sent_posts: false,
|
69
69
|
auto_save_sent_messages: false,
|
70
70
|
auto_save_lists: false
|
71
|
+
},
|
72
|
+
marker: {
|
73
|
+
update_messages: true
|
71
74
|
}
|
72
75
|
})
|
73
76
|
Ayadn::Settings.stub(:config).and_return({
|
@@ -182,7 +185,7 @@ describe Ayadn::SetTimeline do
|
|
182
185
|
|
183
186
|
describe "#" do
|
184
187
|
it "creates a default value" do
|
185
|
-
%w{directed html show_source show_symbols show_real_name show_date show_spinner show_debug}.each do |meth|
|
188
|
+
%w{directed html show_source show_symbols show_real_name show_date show_spinner show_debug compact}.each do |meth|
|
186
189
|
command = meth.to_sym
|
187
190
|
Ayadn::SetTimeline.new.send(command, 'true')
|
188
191
|
expect(Ayadn::Settings.options[:timeline][command]).to eq true
|
@@ -244,6 +247,24 @@ describe Ayadn::SetCounts do
|
|
244
247
|
end
|
245
248
|
end
|
246
249
|
|
250
|
+
describe Ayadn::SetMarker do
|
251
|
+
before do
|
252
|
+
init_stubs
|
253
|
+
end
|
254
|
+
|
255
|
+
describe "#update_messages" do
|
256
|
+
it "creates a default value" do
|
257
|
+
expect(Ayadn::Settings.options[:marker][:update_messages]).to eq true
|
258
|
+
Ayadn::SetMarker.new.update_messages('0')
|
259
|
+
expect(Ayadn::Settings.options[:marker][:update_messages]).to eq false
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
after do
|
264
|
+
File.delete('spec/mock/ayadn.log')
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
247
268
|
describe Ayadn::SetBackup do
|
248
269
|
before do
|
249
270
|
init_stubs
|
data/spec/unit/view_spec.rb
CHANGED
@@ -25,7 +25,10 @@ describe Ayadn::View do
|
|
25
25
|
show_symbols: true,
|
26
26
|
show_source: true
|
27
27
|
},
|
28
|
-
formats: {
|
28
|
+
formats: {
|
29
|
+
table: {width: 75},
|
30
|
+
list: {reverse: true}
|
31
|
+
},
|
29
32
|
counts: {
|
30
33
|
default: 33
|
31
34
|
}
|
@@ -55,79 +58,86 @@ describe Ayadn::View do
|
|
55
58
|
let(:int) { JSON.parse(File.read("spec/mock/int.json")) }
|
56
59
|
let(:files) { JSON.parse(File.read("spec/mock/files.json")) }
|
57
60
|
let(:user_e) { JSON.parse(File.read("spec/mock/@ericd.json")) }
|
61
|
+
let(:rest) {Ayadn::CNX}
|
58
62
|
let(:users) { {"007"=>["bond", "James Bond", true, true], "666"=>["mrtest", "Mr Test", false, false]} }
|
59
63
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
#
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
#
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
#
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
#
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
64
|
+
describe "#show_list_reposted" do
|
65
|
+
before do
|
66
|
+
Ayadn::NiceRank.stub(:from_ids).and_return([{}])
|
67
|
+
rest.stub(:get)
|
68
|
+
end
|
69
|
+
it "outputs the reposters list" do
|
70
|
+
printed = capture_stdout do
|
71
|
+
Ayadn::View.new.show_list_reposted(list[0]['data'], 123456)
|
72
|
+
end
|
73
|
+
expect(printed).to include *['Joel Timmins', 'Donny Davis', 'Nicolas Maumont', 'reposted post', '123456']
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "#show_list_starred" do
|
78
|
+
before do
|
79
|
+
Ayadn::NiceRank.stub(:from_ids).and_return([{}])
|
80
|
+
rest.stub(:get)
|
81
|
+
end
|
82
|
+
it "outputs the starred list" do
|
83
|
+
printed = capture_stdout do
|
84
|
+
Ayadn::View.new.show_list_starred(list[0]['data'], 123456)
|
85
|
+
end
|
86
|
+
expect(printed).to include *['Joel Timmins', 'Donny Davis', 'Nicolas Maumont', 'starred post', '123456']
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "#show_list_followings" do
|
91
|
+
before do
|
92
|
+
Ayadn::NiceRank.stub(:from_ids).and_return([{}])
|
93
|
+
rest.stub(:get)
|
94
|
+
end
|
95
|
+
it "outputs the followings list" do
|
96
|
+
printed = capture_stdout do
|
97
|
+
Ayadn::View.new.show_list_followings(users, '@bond')
|
98
|
+
end
|
99
|
+
expect(printed).to include *['List of users', 'is following', '@bond']
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe "#show_list_followers" do
|
104
|
+
before do
|
105
|
+
Ayadn::NiceRank.stub(:from_ids).and_return([{}])
|
106
|
+
rest.stub(:get)
|
107
|
+
end
|
108
|
+
it "outputs the followers list" do
|
109
|
+
printed = capture_stdout do
|
110
|
+
Ayadn::View.new.show_list_followers(users, '@bond')
|
111
|
+
end
|
112
|
+
expect(printed).to include *['List of users following', '@bond']
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "#show_list_muted" do
|
117
|
+
before do
|
118
|
+
Ayadn::NiceRank.stub(:from_ids).and_return([{}])
|
119
|
+
rest.stub(:get)
|
120
|
+
end
|
121
|
+
it "outputs the muted list" do
|
122
|
+
printed = capture_stdout do
|
123
|
+
Ayadn::View.new.show_list_muted(users)
|
124
|
+
end
|
125
|
+
expect(printed).to include *['List of users you muted', '@mrtest', '@bond', 'Mr Test']
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe "#show_list_blocked" do
|
130
|
+
before do
|
131
|
+
Ayadn::NiceRank.stub(:from_ids).and_return([{}])
|
132
|
+
rest.stub(:get)
|
133
|
+
end
|
134
|
+
it "outputs the blocked list" do
|
135
|
+
printed = capture_stdout do
|
136
|
+
Ayadn::View.new.show_list_blocked(users)
|
137
|
+
end
|
138
|
+
expect(printed).to include *['List of users you blocked', '@mrtest', '@bond', 'Mr Test']
|
139
|
+
end
|
140
|
+
end
|
131
141
|
|
132
142
|
describe "#show_interactions" do
|
133
143
|
it "outputs the interactions list" do
|
@@ -154,6 +164,10 @@ describe Ayadn::View do
|
|
154
164
|
end
|
155
165
|
expect(printed).to include "23184500"
|
156
166
|
expect(printed).to include "Backer of the Day"
|
167
|
+
expect(printed).to include '23184932'
|
168
|
+
expect(printed).to include '20:11:14'
|
169
|
+
expect(printed).to include 'too big for humans to check'
|
170
|
+
expect(printed).to include 'https://app.net/b/m6bk3'
|
157
171
|
end
|
158
172
|
end
|
159
173
|
|
@@ -187,6 +201,9 @@ describe Ayadn::View do
|
|
187
201
|
end
|
188
202
|
|
189
203
|
describe "#show_userinfos" do
|
204
|
+
before do
|
205
|
+
rest.stub(:get_response_from)
|
206
|
+
end
|
190
207
|
it "outputs user info" do
|
191
208
|
printed = capture_stdout do
|
192
209
|
Ayadn::View.new.show_userinfos(user_e['data'], "")
|