ayadn 1.2.7 → 1.2.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4da689dcf2f0af0a1f79e9a36812f21224a5dc4d
4
- data.tar.gz: 2b8142d137821e710c2347f34e9ef04517f85bc8
3
+ metadata.gz: a05ff15391beac67e7ee90c71472a52902a98018
4
+ data.tar.gz: bdb58c558b8e16a55e5d1d60db39c4bf3f26a6b4
5
5
  SHA512:
6
- metadata.gz: 0e25eb614812f284648dc494fcd36c5ab9850e2e298fa1ef25307474f2e9d041b8307d333cef286a5b3d5540d80dc5937accde52f748eb0c77b34e9bd93e889a
7
- data.tar.gz: 3c9da18ff39c2652a977a89b651b9bb08f7e6e3dd9823d2870c7fe5d86f61c3dfdc2a23d504cd46570fdff84edc1a63f115e86c9190819664d9ab5e125491bce
6
+ metadata.gz: 7158eb289115d85c4dfbb31e7f32de9f268f82f418cf188e6c1f38ea545117fc4cdd0f18d96aeb7b37414fa2fada0191b13bb0fdc062ddafa2d250a83d6a18ff
7
+ data.tar.gz: f71e3a75b986786b21810b399c4975bd337a614e6eec9ada372c7f0b09ae47c247c4d015e9f1a7cb6a675d3b6ab4dea1c38bd0e8d166fbc0e5bb30a3ee949b90
data/CHANGELOG.md CHANGED
@@ -1,6 +1,15 @@
1
+ # 1.2.8 - 'Hans'
2
+
3
+ - No more Ruby 1.9.3
4
+ - Search for users: returns a detailed view of users containing word(s) in their bio/description
5
+ - Search for annotations: returns posts containing a specific annotation
6
+ - Search for channels containing word(s) in their description
7
+ - Search for words in messages (PMs)
8
+ - Better display of the starred and replied_to symbols
9
+
1
10
  # 1.2.7 - 'Roman'
2
11
 
3
- - Fix the bug in Switch
12
+ - Conform remove_arobase in Switch
4
13
 
5
14
  # 1.2.6 - 'Saket'
6
15
 
data/ayadn.gemspec CHANGED
@@ -20,22 +20,22 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = %w{ayadn}
21
21
  spec.require_paths = ["lib"]
22
22
 
23
- spec.required_ruby_version = '>= 1.9.3'
23
+ spec.required_ruby_version = '>= 2.0.0'
24
24
 
25
- spec.add_dependency "thor", ">= 0.18"
26
- spec.add_dependency "rest-client", ">= 1.6"
27
- spec.add_dependency "rainbow", ">= 2.0"
28
- spec.add_dependency "terminal-table", ">= 1.4"
29
- spec.add_dependency "daybreak", ">= 0.3"
25
+ spec.add_dependency "thor", "~> 0.18"
26
+ spec.add_dependency "rest-client", "~> 1.6"
27
+ spec.add_dependency "rainbow", "~> 2.0"
28
+ spec.add_dependency "terminal-table", "~> 1.4"
29
+ spec.add_dependency "daybreak", "~> 0.3"
30
30
  spec.add_dependency "pinboard"
31
31
 
32
- spec.add_development_dependency "bundler", ">= 1.5"
33
- spec.add_development_dependency "rake", ">= 10.1"
34
- spec.add_development_dependency "rspec", ">= 2.14"
35
- spec.add_development_dependency "rb-fsevent", ">= 0.9"
36
- spec.add_development_dependency "guard-rspec", ">= 4.2"
32
+ spec.add_development_dependency "bundler", "~> 1.5"
33
+ spec.add_development_dependency "rake", "~> 10.1"
34
+ spec.add_development_dependency "rspec", "~> 2.14"
35
+ spec.add_development_dependency "rb-fsevent", "~> 0.9"
36
+ spec.add_development_dependency "guard-rspec", "~> 4.2"
37
37
  spec.add_development_dependency "coveralls"
38
- #spec.add_development_dependency "fakefs", ">= 0.5"
38
+ #spec.add_development_dependency "fakefs", "~> 0.5"
39
39
 
40
40
  spec.post_install_message = "Thank you for installing Ayadn!"
41
41
  end
data/lib/ayadn/action.rb CHANGED
@@ -439,12 +439,38 @@ module Ayadn
439
439
  def search(words, options)
440
440
  begin
441
441
  doing(options)
442
- stream = @api.get_search(words, options)
442
+ stream = if options[:users]
443
+ @api.search_users words, options
444
+ elsif options[:annotations]
445
+ @api.search_annotations words, options
446
+ elsif options[:channels]
447
+ splitted = splitter_all words
448
+ @api.search_channels splitted.join(','), options
449
+ elsif options[:messages]
450
+ words = words.split(',')
451
+ channel_id = get_channel_id_from_alias(words[0])
452
+ words.shift
453
+ splitted = splitter_all words.join(' ')
454
+ @api.search_messages channel_id, splitted.join(','), options
455
+ else
456
+ splitted = splitter_all words
457
+ @api.get_search splitted.join(','), options
458
+ end
443
459
  no_data('search') if stream['data'].empty?
444
- if options[:extract]
445
- view_all_search_links(stream, words)
460
+ if options[:users]
461
+ stream['data'].sort_by! {|obj| obj['counts']['followers']}
462
+ stream['data'].each do |obj|
463
+ puts "----------\n\n\n"
464
+ @view.show_userinfos(obj, nil)
465
+ end
466
+ elsif options[:channels]
467
+ @view.show_channels stream, options
446
468
  else
447
- render_view(stream, options)
469
+ if options[:extract]
470
+ view_all_search_links(stream, words)
471
+ else
472
+ render_view(stream, options)
473
+ end
448
474
  end
449
475
  rescue => e
450
476
  Errors.global_error("action/search", [words, options], e)
@@ -904,6 +930,10 @@ module Ayadn
904
930
 
905
931
  private
906
932
 
933
+ def splitter_all words
934
+ [words].collect {|w| w.split(' ')}
935
+ end
936
+
907
937
  def get_original_id(post_id, resp)
908
938
  if resp['data']['repost_of']
909
939
  puts Status.redirecting
data/lib/ayadn/api.rb CHANGED
@@ -89,6 +89,22 @@ module Ayadn
89
89
  get_parsed_response(Endpoints.new.search(words, options))
90
90
  end
91
91
 
92
+ def search_users words, options
93
+ get_parsed_response(Endpoints.new.search_users(words, options))
94
+ end
95
+
96
+ def search_annotations words, options
97
+ get_parsed_response(Endpoints.new.search_annotations(words, options))
98
+ end
99
+
100
+ def search_channels words, options
101
+ get_parsed_response(Endpoints.new.search_channels(words, options))
102
+ end
103
+
104
+ def search_messages channel_id, words, options
105
+ get_parsed_response(Endpoints.new.search_messages(channel_id, words, options))
106
+ end
107
+
92
108
  def get_followings(username)
93
109
  build_list(username, :followings)
94
110
  end
data/lib/ayadn/app.rb CHANGED
@@ -194,6 +194,10 @@ module Ayadn
194
194
  option :index, aliases: "-i", type: :boolean, desc: Descriptions.options_index
195
195
  option :raw, aliases: "-x", type: :boolean, desc: Descriptions.options_raw
196
196
  option :extract, aliases: "-e", type: :boolean, desc: Descriptions.options_extract
197
+ option :messages, type: :boolean, desc: 'Search for WORD(S) in messages, including PMs.'
198
+ option :users, type: :boolean, desc: 'Search for App.net users by searching WORD(S) in their bio/description.'
199
+ option :channels, type: :boolean, desc: 'Search for App.net channels by searching WORD(S) in their description.'
200
+ option :annotations, type: :boolean, desc: 'Search for posts containing a specific App.net annotation.'
197
201
  def search(*words)
198
202
  Action.new.search(words.join(","), options)
199
203
  end
@@ -410,23 +410,61 @@ module Ayadn
410
410
  <<-USAGE
411
411
  Show recents posts containing WORD(S).
412
412
 
413
- Basic usage:
413
+ # Basic usage
414
414
 
415
415
  ayadn search screenshot iterm
416
416
 
417
- ayadn -s screenshot iterm
417
+ ayadn search screenshot iterm
418
418
 
419
419
  Retrieves only 5 posts:
420
420
 
421
- ayadn -s -c5 screenshot iterm
421
+ ayadn search -c5 screenshot iterm
422
422
 
423
423
  Shows index instead of post numbers:
424
424
 
425
- ayadn -s -i screenshot iterm
425
+ ayadn search -i screenshot iterm
426
426
 
427
427
  Shows index and retrieves 30 posts:
428
428
 
429
- ayadn -s -i -c30 screenshot iterm
429
+ ayadn search -i -c30 screenshot iterm
430
+
431
+ # Advanced usage
432
+
433
+ ## Messages
434
+
435
+ Search for WORD(S) in messages, including PMs.
436
+
437
+ You have to specify a channel id (or an alias).
438
+
439
+ Usage:
440
+
441
+ ayadn search --messages 33642 ipad movies
442
+
443
+ ayadn search --messages my_alias ipad movies
444
+
445
+ ## Users
446
+
447
+ Search for App.net users by searching WORD(S) in their bio/description.
448
+
449
+ Usage:
450
+
451
+ ayadn search --users anime
452
+
453
+ ## Channels
454
+
455
+ Search for App.net channels by searching WORD(S) in their description.
456
+
457
+ Usage:
458
+
459
+ ayadn search --channels movies
460
+
461
+ ## Annotations
462
+
463
+ Search for posts containing a specific App.net annotation.
464
+
465
+ Usage:
466
+
467
+ ayadn search --annotations net.app.core.crosspost
430
468
  \n\n
431
469
  USAGE
432
470
  end
@@ -163,6 +163,38 @@ module Ayadn
163
163
  "#{@posts_url}search?text=#{words}&access_token=#{Settings.user_token}#{@options_list}"
164
164
  end
165
165
 
166
+ def search_users words, options
167
+ if options[:count]
168
+ @options_list = API.build_query(options)
169
+ else
170
+ @options_list = API.build_query({count: Settings.options[:counts][:search]})
171
+ end
172
+ "#{@users_url}search?q=#{words}&access_token=#{Settings.user_token}#{@options_list}"
173
+ end
174
+
175
+ def search_annotations anno, options
176
+ if options[:count]
177
+ @options_list = API.build_query(options)
178
+ else
179
+ @options_list = API.build_query({count: Settings.options[:counts][:search]})
180
+ end
181
+ "#{@posts_url}search?annotation_types=#{anno}&access_token=#{Settings.user_token}#{@options_list}"
182
+ end
183
+
184
+ def search_messages channel_id, words, options
185
+ if options[:count]
186
+ @options_list = API.build_query(options)
187
+ else
188
+ @options_list = API.build_query({count: Settings.options[:counts][:search]})
189
+ end
190
+ "#{@channels_url}messages/search?query=#{words}&channel_ids=#{channel_id}&access_token=#{Settings.user_token}#{@options_list}"
191
+ end
192
+
193
+ def search_channels words, options
194
+ @options_list = API.build_query({count: Settings.options[:counts][:search]})
195
+ "#{@channels_url}search?q=#{words}&order=popularity&access_token=#{Settings.user_token}#{@options_list}"
196
+ end
197
+
166
198
  def user(username)
167
199
  "#{@users_url}#{username}?access_token=#{Settings.user_token}&include_user_annotations=1"
168
200
  end
data/lib/ayadn/post.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  module Ayadn
2
3
  class Post
3
4
 
data/lib/ayadn/status.rb CHANGED
@@ -14,10 +14,10 @@ module Ayadn
14
14
  "Posting to ADN...\n\n".inverse
15
15
  end
16
16
  def self.deleting_post(post_id)
17
- "\nDeleting post #{post_id}".inverse
17
+ "\nDeleting post #{post_id}\n".inverse
18
18
  end
19
19
  def self.deleting_message(message_id)
20
- "\nDeleting message #{message_id}".inverse
20
+ "\nDeleting message #{message_id}\n".inverse
21
21
  end
22
22
  def self.unfollowing(username)
23
23
  "\nUnfollowing #{username}".inverse
data/lib/ayadn/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module Ayadn
3
- VERSION = "1.2.7"
3
+ VERSION = "1.2.8"
4
4
  end
data/lib/ayadn/view.rb CHANGED
@@ -182,9 +182,9 @@ module Ayadn
182
182
 
183
183
  end
184
184
 
185
- def show_channels(resp)
185
+ def show_channels(resp, options = {})
186
186
  view = ""
187
- bucket = @workers.build_channels(resp['data'])
187
+ bucket = @workers.build_channels(resp['data'], options)
188
188
  bucket.reverse.each do |ch|
189
189
  view << "\n"
190
190
  ch_alias = false
@@ -211,9 +211,11 @@ module Ayadn
211
211
  # + (#{ch.owner['name']}) if ch.owner['name']
212
212
  view << "\n"
213
213
  end
214
- view << "Writers: ".color(:cyan)
215
- view << "#{ch.writers}".color(Settings.options[:colors][:name])
216
- view << "\n"
214
+ unless options[:channels] # unless the request comes from Search
215
+ view << "Writers: ".color(:cyan)
216
+ view << "#{ch.writers}".color(Settings.options[:colors][:name])
217
+ view << "\n"
218
+ end
217
219
  view << "Type: ".color(:cyan)
218
220
  view << "#{ch.type}".color(Settings.options[:colors][:id])
219
221
  view << "\n"
@@ -258,7 +260,7 @@ module Ayadn
258
260
  end
259
261
  view << "\n\n"
260
262
  end
261
- view << "\nYour account is currently linked to #{bucket.length} channels.\n\n".color(:green)
263
+ view << "\nYour account is currently linked to #{bucket.length} channels.\n\n".color(:green) unless options[:channels]
262
264
  puts view
263
265
  end
264
266
 
@@ -460,7 +462,7 @@ module Ayadn
460
462
  header << content[:name].color(Settings.options[:colors][:name])
461
463
  end
462
464
 
463
- if Settings.options[:timeline][:show_nicerank] && content[:nicerank]
465
+ if Settings.options[:timeline][:show_nicerank] == true && content[:nicerank]
464
466
  if Settings.options[:nicerank][:filter] == true
465
467
  header << " "
466
468
  header << "[#{content[:nicerank]}]".color(Settings.options[:colors][:nicerank])
@@ -478,8 +480,8 @@ module Ayadn
478
480
  if Settings.options[:timeline][:show_symbols]
479
481
  header << " <".color(Settings.options[:colors][:symbols]) if content[:is_reply]
480
482
  header << " #{content[:num_stars]}*".color(Settings.options[:colors][:symbols]) if content[:is_starred]
481
- header << " >".color(Settings.options[:colors][:symbols]) if content[:num_replies] > 0
482
483
  header << " #{content[:num_reposts]}x".color(Settings.options[:colors][:symbols]) if content[:num_reposts] > 0
484
+ header << " >".color(Settings.options[:colors][:symbols]) if content[:num_replies] > 0
483
485
  end
484
486
  header << "\n"
485
487
  end
data/lib/ayadn/workers.rb CHANGED
@@ -224,11 +224,11 @@ module Ayadn
224
224
  tags
225
225
  end
226
226
 
227
- def build_channels(data)
227
+ def build_channels(data, options = {})
228
228
  channels = []
229
229
  data.each { |ch| channels << ch }
230
230
  bucket = []
231
- puts "Downloading new channels and unknown users ids.\nThis is a one time operation, ids are being recorded in a database.\n\nPlease wait, it could take a while if you have many channels...".color(:cyan)
231
+ puts "Downloading new channels and unknown users ids.\nThis is a one time operation, ids are being recorded in a database.\n\nPlease wait, it could take a while if you have many channels...".color(:cyan) unless options[:channels]
232
232
  chan = Struct.new(:id, :num_messages, :subscribers, :type, :owner, :annotations, :readers, :editors, :writers, :you_subscribed, :unread, :recent_message_id, :recent_message)
233
233
  channels.each do |ch|
234
234
  unless ch['writers']['user_ids'].empty?
@@ -294,9 +294,9 @@ module Ayadn
294
294
 
295
295
  def self.remove_arobase_if_present args
296
296
  args.map! do |username|
297
- username = username.chars
298
- username.shift if username.first == "@"
299
- username.join
297
+ temp = username.chars
298
+ temp.shift if temp.first == "@"
299
+ temp.join
300
300
  end
301
301
  args
302
302
  end
@@ -140,8 +140,8 @@ describe Ayadn::Workers do
140
140
 
141
141
  describe ".remove_arobase_if_present" do
142
142
  it "removes @ from username" do
143
- expect(Ayadn::Workers.remove_arobase_if_present("@user")).to eq "user"
144
- expect(Ayadn::Workers.remove_arobase_if_present("user")).to eq "user"
143
+ expect(Ayadn::Workers.remove_arobase_if_present(["@user"])).to eq ["user"]
144
+ expect(Ayadn::Workers.remove_arobase_if_present(["user"])).to eq ["user"]
145
145
  end
146
146
  end
147
147
 
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ayadn
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.7
4
+ version: 1.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Dejonckheere
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-26 00:00:00.000000000 Z
11
+ date: 2014-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.18'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.18'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rest-client
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.6'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.6'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rainbow
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '2.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: terminal-table
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.4'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: daybreak
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0.3'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.3'
83
83
  - !ruby/object:Gem::Dependency
@@ -98,70 +98,70 @@ dependencies:
98
98
  name: bundler
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '1.5'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '1.5'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: '10.1'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '10.1'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
131
  version: '2.14'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '2.14'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rb-fsevent
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - "~>"
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0.9'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0.9'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: guard-rspec
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
157
+ - - "~>"
158
158
  - !ruby/object:Gem::Version
159
159
  version: '4.2'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ">="
164
+ - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: '4.2'
167
167
  - !ruby/object:Gem::Dependency
@@ -267,7 +267,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
267
267
  requirements:
268
268
  - - ">="
269
269
  - !ruby/object:Gem::Version
270
- version: 1.9.3
270
+ version: 2.0.0
271
271
  required_rubygems_version: !ruby/object:Gem::Requirement
272
272
  requirements:
273
273
  - - ">="