ayadn 2.1 → 3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.travis.yml +1 -2
- data/CHANGELOG.md +11 -0
- data/README.md +7 -9
- data/ayadn.gemspec +1 -2
- data/doc/02-install.md +11 -1
- data/doc/18-contact.md +0 -2
- data/lib/ayadn.rb +1 -1
- data/lib/ayadn/action.rb +13 -14
- data/lib/ayadn/annotations.rb +1 -1
- data/lib/ayadn/api.rb +8 -3
- data/lib/ayadn/app.rb +23 -11
- data/lib/ayadn/authorize.rb +47 -27
- data/lib/ayadn/cnx.rb +20 -3
- data/lib/ayadn/descriptions.rb +0 -12
- data/lib/ayadn/diagnostics.rb +471 -0
- data/lib/ayadn/endpoints.rb +47 -46
- data/lib/ayadn/extend.rb +20 -0
- data/lib/ayadn/fileops.rb +3 -3
- data/lib/ayadn/ids.rb +17 -0
- data/lib/ayadn/nicerank.rb +2 -0
- data/lib/ayadn/nowplaying.rb +12 -5
- data/lib/ayadn/post.rb +2 -0
- data/lib/ayadn/set.rb +78 -3
- data/lib/ayadn/settings.rb +20 -3
- data/lib/ayadn/status.rb +114 -62
- data/lib/ayadn/stream.rb +2 -0
- data/lib/ayadn/switch.rb +18 -11
- data/lib/ayadn/tvshow.rb +7 -3
- data/lib/ayadn/version.rb +1 -1
- data/lib/ayadn/view.rb +131 -82
- data/lib/ayadn/workers.rb +10 -11
- data/spec/mock/@ericd.json +4 -4
- data/spec/mock/ayadn.sqlite +0 -0
- data/spec/mock/files.json +2 -2
- data/spec/mock/fwr_@ayadn.json +4 -4
- data/spec/mock/int.json +13 -13
- data/spec/mock/mentions.json +4 -4
- data/spec/mock/nicerank.log +1 -1
- data/spec/mock/posted.json +1 -1
- data/spec/mock/regex.json +2 -2
- data/spec/unit/annotations_spec.rb +8 -8
- data/spec/unit/post_spec.rb +3 -3
- metadata +5 -20
- data/Guardfile +0 -26
- data/lib/ayadn/migration.rb +0 -431
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 669aa931c86f3c1503fcb018d9ae061c4807f821
|
4
|
+
data.tar.gz: 9e0b95916d303a4f163a751db01533a6cc95ba5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94b1ffcc7e1ef7c8350b02da3e56f28e0164a2b13ef63ecf2ece988c36fd70ebec9edf690b6aef921707da2ef385e9fbebe7bad0667ababde8656d9d1dd6297c
|
7
|
+
data.tar.gz: 4ce0e8e000c1306678ebaddcc5d2a6dcae772e8cb3bdc3c866d9679d93920b8f5dbf48896899022e5c38a5c6d821509095c5f684a6964b78a23dde3a37e77a1a
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
## 3.0 - 2015-11-07 - 'Edge Of Tomorrow'
|
2
|
+
|
3
|
+
- New: option to set an alternative base URL for the API calls
|
4
|
+
- New: run diagnostics (network, accounts, settings, gem)
|
5
|
+
- New: --auth bypass authorization webpage by providing the token inline
|
6
|
+
- New: edit settings with your $EDITOR
|
7
|
+
- Fixed: commands when no user authorized
|
8
|
+
- Fixed: --unauthorize if no valid username
|
9
|
+
- Deprecated: Ayadn 1.x migration tools
|
10
|
+
- Deprecated: "ayadn-app.net" domain name (use GitHub repository)
|
11
|
+
|
1
12
|
## 2.1 - 2015-08-29 - 'Electric Boogaloo'
|
2
13
|
|
3
14
|
- Fix: crash when scrolling Global with NiceRank
|
data/README.md
CHANGED
@@ -62,25 +62,23 @@ Uninstall:
|
|
62
62
|
|
63
63
|
`gem uninstall ayadn`
|
64
64
|
|
65
|
-
|
65
|
+
## DOCUMENTATION
|
66
66
|
|
67
67
|
[In the /doc folder of the repo](https://github.com/ericdke/na/tree/master/doc)
|
68
68
|
|
69
|
-
|
69
|
+
## FEEDBACK
|
70
|
+
|
71
|
+
Feedback and/or contributions are very welcomed!
|
72
|
+
|
73
|
+
## CONTACT
|
70
74
|
|
71
75
|
Author: [@ericd](http://app.net/ericd)
|
72
76
|
|
73
77
|
App account: [@ayadn](http://app.net/ayadn)
|
74
78
|
|
75
|
-
Website: [ayadn-app.net](http://ayadn-app.net)
|
76
|
-
|
77
79
|
ADN Directory: [Ayadn](https://directory.app.net/app/345/ayadn/)
|
78
80
|
|
79
|
-
|
80
|
-
|
81
|
-
Feedback and/or contributions are very welcomed!
|
82
|
-
|
83
|
-
# SCREENSHOTS
|
81
|
+
## SCREENSHOTS
|
84
82
|
|
85
83
|
Examples on Mac OS X, with iTerm2 + Solarized theme.
|
86
84
|
|
data/ayadn.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = "eric@aya.io"
|
11
11
|
spec.summary = %q{App.net command-line client.}
|
12
12
|
spec.description = %q{App.net command-line client: toolbox to access and manage your ADN data, show your streams, post, manage conversations, star/follow/repost... and many, many more.}
|
13
|
-
spec.homepage = "
|
13
|
+
spec.homepage = "https://github.com/ericdke/na"
|
14
14
|
spec.license = "MIT"
|
15
15
|
spec.metadata = { "documentation" => "https://github.com/ericdke/na/tree/master/doc" }
|
16
16
|
|
@@ -26,7 +26,6 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_dependency "rest-client", "~> 1.7"
|
27
27
|
spec.add_dependency "rainbow", "~> 2.0"
|
28
28
|
spec.add_dependency "terminal-table", "~> 1.4"
|
29
|
-
spec.add_dependency "daybreak", "~> 0.3"
|
30
29
|
spec.add_dependency "pinboard", "~> 0.1"
|
31
30
|
spec.add_dependency "unicode_utils", "~> 1.4"
|
32
31
|
spec.add_dependency "spotlite", "~> 0.8"
|
data/doc/02-install.md
CHANGED
@@ -26,10 +26,20 @@ Ayadn also works on Windows because it's pure Ruby, but some Gems it depends upo
|
|
26
26
|
|
27
27
|
## MIGRATE
|
28
28
|
|
29
|
+
### From Ayadn 2.x to 3.x
|
30
|
+
|
31
|
+
There's nothing to do, just update the Gem.
|
32
|
+
|
33
|
+
### From Ayadn 1.x to 2.x
|
34
|
+
|
29
35
|
If you have an old Ayadn 1.x install that you want to keep using with Ayadn 2.x, Ayadn 2.x will ask you to run the `migrate` command (once) for this account.
|
30
36
|
|
31
37
|
Otherwise it's better to start with a fresh configuration: just delete your old 1.0 `~/ayadn` folder before authorizing the user again with Ayadn 2.x.
|
32
38
|
|
39
|
+
### From Ayadn 1.x to 3.x
|
40
|
+
|
41
|
+
Ayadn 3.x is not compatible at all with Ayadn 1.x. Delete your `~/ayadn` folder before authorizing the user again with Ayadn 3.x.
|
42
|
+
|
33
43
|
## DEPENDENCIES
|
34
44
|
|
35
45
|
Ayadn depends upon these Gems:
|
@@ -46,4 +56,4 @@ Ayadn depends upon these Gems:
|
|
46
56
|
unicode_utils (text utilities)
|
47
57
|
daybreak (Ruby data store)
|
48
58
|
|
49
|
-
*Note: the "daybreak" dependency is only needed for 1.x to 2.x migrations.
|
59
|
+
*Note: the "daybreak" dependency is only needed for 1.x to 2.x migrations. Deprecated since Ayadn 3.0.*
|
data/doc/18-contact.md
CHANGED
data/lib/ayadn.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
begin
|
4
4
|
require_relative 'ayadn/version'
|
5
|
-
%w{rest_client json thor rainbow/ext/string terminal-table yaml logger fileutils io/console unicode_utils readline amalgalite
|
5
|
+
%w{rest_client json thor rainbow/ext/string terminal-table yaml logger fileutils io/console unicode_utils readline amalgalite}.each { |r| require "#{r}" }
|
6
6
|
Rainbow.enabled = true
|
7
7
|
require_relative 'ayadn/app'
|
8
8
|
rescue LoadError => e
|
data/lib/ayadn/action.rb
CHANGED
@@ -6,11 +6,12 @@ module Ayadn
|
|
6
6
|
# This class is the main initializer + dispatcher
|
7
7
|
# It responds to the CLI commands dispatcher, app.rb
|
8
8
|
|
9
|
+
require_relative "stream"
|
10
|
+
|
9
11
|
def initialize
|
10
12
|
@api = API.new
|
11
13
|
@view = View.new
|
12
14
|
@workers = Workers.new
|
13
|
-
@thor = Thor::Shell::Color.new
|
14
15
|
@status = Status.new
|
15
16
|
@check = Check.new
|
16
17
|
Settings.load_config
|
@@ -466,13 +467,19 @@ module Ayadn
|
|
466
467
|
response = details.call
|
467
468
|
@check.no_post(response, post_id)
|
468
469
|
resp = response['data']
|
470
|
+
|
471
|
+
if resp["is_deleted"] == true
|
472
|
+
@status.user_404(resp["id"])
|
473
|
+
Errors.global_error({error: "user 404", caller: caller, data: [post_id, options]})
|
474
|
+
end
|
475
|
+
|
469
476
|
response = @api.get_user("@#{resp['user']['username']}")
|
470
477
|
@check.no_user(response, response['data']['username'])
|
471
478
|
stream = response['data']
|
472
479
|
@status.post_info
|
473
480
|
@view.show_simple_post([resp], options)
|
474
481
|
puts "\n" if Settings.options[:timeline][:compact] == true
|
475
|
-
@
|
482
|
+
@status.say_info "author"
|
476
483
|
puts "\n" unless Settings.options[:timeline][:compact] == true
|
477
484
|
if response['data']['username'] == Settings.config[:identity][:username]
|
478
485
|
@view.show_userinfos(stream, @api.get_token_info['data'], true)
|
@@ -556,7 +563,7 @@ module Ayadn
|
|
556
563
|
Settings.options[:marker][:messages] = false
|
557
564
|
end
|
558
565
|
puts "\n"
|
559
|
-
@
|
566
|
+
@status.say_nocolor :searching, "channels with unread PMs"
|
560
567
|
response = @api.get_channels
|
561
568
|
unread_channels = []
|
562
569
|
response['data'].map do |ch|
|
@@ -570,7 +577,7 @@ module Ayadn
|
|
570
577
|
end
|
571
578
|
unread_messages = {}
|
572
579
|
unread_channels.reverse.each do |id|
|
573
|
-
@
|
580
|
+
@status.say_nocolor :downloading, "messages from channel #{id}"
|
574
581
|
since = Databases.find_last_id_from("channel:#{id}")
|
575
582
|
unless since.nil?
|
576
583
|
api_options = {count: 20, since_id: since}
|
@@ -593,9 +600,9 @@ module Ayadn
|
|
593
600
|
resp = @api.update_marker(name, v[1])
|
594
601
|
res = JSON.parse(resp)
|
595
602
|
if res['meta']['code'] != 200
|
596
|
-
@
|
603
|
+
@status.say_error "couldn't update channel #{k} as read"
|
597
604
|
else
|
598
|
-
@
|
605
|
+
@status.say_green :updated, "channel #{k} as read"
|
599
606
|
end
|
600
607
|
end
|
601
608
|
end
|
@@ -895,14 +902,6 @@ module Ayadn
|
|
895
902
|
end
|
896
903
|
end
|
897
904
|
|
898
|
-
def version
|
899
|
-
begin
|
900
|
-
@status.version
|
901
|
-
rescue => e
|
902
|
-
Errors.global_error({error: e, caller: caller, data: []})
|
903
|
-
end
|
904
|
-
end
|
905
|
-
|
906
905
|
private
|
907
906
|
|
908
907
|
def save_and_view(resp)
|
data/lib/ayadn/annotations.rb
CHANGED
data/lib/ayadn/api.rb
CHANGED
@@ -36,9 +36,14 @@ module Ayadn
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def get_explore(explore, options)
|
39
|
-
url =
|
40
|
-
|
41
|
-
|
39
|
+
url = case explore
|
40
|
+
when :trending
|
41
|
+
Endpoints.new.trending(options)
|
42
|
+
when :photos
|
43
|
+
Endpoints.new.photos(options)
|
44
|
+
when :conversations
|
45
|
+
Endpoints.new.conversations(options)
|
46
|
+
end
|
42
47
|
get_parsed_response(url)
|
43
48
|
end
|
44
49
|
|
data/lib/ayadn/app.rb
CHANGED
@@ -4,7 +4,7 @@ module Ayadn
|
|
4
4
|
package_name "Ayadn"
|
5
5
|
|
6
6
|
begin
|
7
|
-
%w{action
|
7
|
+
%w{action api descriptions endpoints cnx view workers settings post status extend databases fileops logs set alias errors blacklist mark nicerank debug check diagnostics}.each { |r| require_relative "#{r}" }
|
8
8
|
rescue Interrupt
|
9
9
|
puts "\nExit: stopped by user while launching\n\n"
|
10
10
|
exit
|
@@ -254,6 +254,7 @@ module Ayadn
|
|
254
254
|
option :force, aliases: "-f", type: :boolean, desc: Descriptions.options_force
|
255
255
|
option :compact, aliases: "-k", type: :boolean, desc: "Force the view to be compact if not already"
|
256
256
|
def hashtag(hashtag)
|
257
|
+
require_relative("search")
|
257
258
|
Action.new.hashtag(hashtag, options)
|
258
259
|
end
|
259
260
|
|
@@ -271,6 +272,7 @@ module Ayadn
|
|
271
272
|
option :channels, type: :boolean, desc: 'Search for App.net channels by searching WORD(S) in their description.'
|
272
273
|
option :annotations, type: :boolean, desc: 'Search for posts containing a specific App.net annotation.'
|
273
274
|
def search(*words)
|
275
|
+
require_relative("search")
|
274
276
|
Action.new.search(words.join(","), options)
|
275
277
|
end
|
276
278
|
|
@@ -304,6 +306,7 @@ module Ayadn
|
|
304
306
|
option :avatar, type: :array, desc: "Update your avatar picture"
|
305
307
|
option :cover, type: :array, desc: "Update your cover picture"
|
306
308
|
def userupdate
|
309
|
+
require_relative("profile")
|
307
310
|
Action.new.userupdate(options)
|
308
311
|
end
|
309
312
|
|
@@ -455,6 +458,7 @@ module Ayadn
|
|
455
458
|
long_desc Descriptions.pin
|
456
459
|
option :force, aliases: "-f", type: :boolean, desc: Descriptions.options_force
|
457
460
|
def pin(post_id, *tags)
|
461
|
+
require_relative("pinboard")
|
458
462
|
Action.new.pin(post_id, tags, options)
|
459
463
|
end
|
460
464
|
|
@@ -566,6 +570,7 @@ module Ayadn
|
|
566
570
|
option :text, aliases: "-t", type: :array, desc: "Add custom text"
|
567
571
|
option :compact, aliases: "-k", type: :boolean, desc: "Force the view to be compact if not already (after posting)"
|
568
572
|
def nowplaying
|
573
|
+
require_relative("nowplaying")
|
569
574
|
Action.new.nowplaying(options)
|
570
575
|
end
|
571
576
|
|
@@ -577,6 +582,7 @@ module Ayadn
|
|
577
582
|
option :alt, aliases: "-a", type: :boolean, desc: "Select an alternative response if the first didn't match"
|
578
583
|
option :compact, aliases: "-k", type: :boolean, desc: "Force the view to be compact if not already (after posting)"
|
579
584
|
def movie(*title)
|
585
|
+
require_relative("nowwatching")
|
580
586
|
Action.new.nowwatching(title, options)
|
581
587
|
end
|
582
588
|
|
@@ -587,6 +593,7 @@ module Ayadn
|
|
587
593
|
option :banner, aliases: "-b", type: :boolean, desc: "Inserts the show banner instead of the show poster"
|
588
594
|
option :compact, aliases: "-k", type: :boolean, desc: "Force the view to be compact if not already (after posting)"
|
589
595
|
def tvshow(*title)
|
596
|
+
require_relative("tvshow")
|
590
597
|
Action.new.tvshow(title, options)
|
591
598
|
end
|
592
599
|
|
@@ -602,9 +609,13 @@ module Ayadn
|
|
602
609
|
desc "authorize", "Authorize Ayadn (-AU)"
|
603
610
|
map "-auth" => :authorize
|
604
611
|
map "-AU" => :authorize
|
612
|
+
option :api, aliases: "-a", type: :array, desc: "Provide an alternative root URL for the API call."
|
613
|
+
option :token, aliases: "-t", type: :array, desc: "Provide the token directly (bypass the webpage)"
|
605
614
|
long_desc Descriptions.authorize
|
606
|
-
def authorize
|
607
|
-
|
615
|
+
def authorize()
|
616
|
+
require_relative("authorize")
|
617
|
+
require_relative("switch")
|
618
|
+
Authorize.new.authorize(options)
|
608
619
|
end
|
609
620
|
|
610
621
|
desc "unauthorize @USERNAME", "Unauthorize an Ayadn user account (-UA)"
|
@@ -613,6 +624,8 @@ module Ayadn
|
|
613
624
|
option :delete, aliases: "-D", type: :boolean, desc: "Deletes user folders (default: false)"
|
614
625
|
long_desc Descriptions.unauthorize
|
615
626
|
def unauthorize(*user)
|
627
|
+
require_relative("authorize")
|
628
|
+
require_relative("switch")
|
616
629
|
Authorize.new.unauthorize(user, options)
|
617
630
|
end
|
618
631
|
|
@@ -622,6 +635,7 @@ module Ayadn
|
|
622
635
|
option :list, aliases: "-l", type: :boolean, desc: "List authorized accounts"
|
623
636
|
long_desc Descriptions.switch
|
624
637
|
def switch(*username)
|
638
|
+
require_relative("switch")
|
625
639
|
unless options[:list]
|
626
640
|
Switch.new.switch(username)
|
627
641
|
else
|
@@ -632,16 +646,14 @@ module Ayadn
|
|
632
646
|
desc "version", "Show the current Ayadn version (-v)"
|
633
647
|
map "-v" => :version
|
634
648
|
def version
|
635
|
-
|
649
|
+
Status.new.version
|
636
650
|
end
|
637
651
|
|
638
|
-
desc "
|
639
|
-
map "
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
mig.all
|
644
|
-
end
|
652
|
+
desc "diagnostics", "Run diagnostics (-dg)"
|
653
|
+
map "-dg" => :diagnostics
|
654
|
+
map "check" => :diagnostics
|
655
|
+
map "test" => :diagnostics
|
656
|
+
subcommand "diagnostics", Diagnostics
|
645
657
|
|
646
658
|
end
|
647
659
|
end
|
data/lib/ayadn/authorize.rb
CHANGED
@@ -5,68 +5,88 @@ module Ayadn
|
|
5
5
|
def initialize
|
6
6
|
@thor = Thor::Shell::Color.new # local statuses
|
7
7
|
@status = Status.new # global statuses + utils
|
8
|
+
@baseURL = "https://api.app.net" # may be overriden
|
8
9
|
end
|
9
10
|
|
10
|
-
def authorize
|
11
|
+
def authorize(options)
|
11
12
|
puts "\n"
|
12
13
|
if File.exist?(Dir.home + "/ayadn/accounts.db")
|
13
|
-
@status.
|
14
|
+
@status.deprecated_ayadn
|
14
15
|
exit
|
15
16
|
end
|
17
|
+
api_file = Dir.home + "/ayadn/.api.yml"
|
18
|
+
# overrides the default value
|
19
|
+
if File.exist?(api_file)
|
20
|
+
@baseURL = YAML.load(File.read(api_file))[:root]
|
21
|
+
end
|
22
|
+
# overrides the config file
|
23
|
+
if options["api"]
|
24
|
+
@baseURL = options["api"]
|
25
|
+
end
|
16
26
|
puts "\e[H\e[2J"
|
17
27
|
show_link
|
18
|
-
token =
|
28
|
+
token = if options["token"]
|
29
|
+
options["token"][0]
|
30
|
+
else
|
31
|
+
get_token
|
32
|
+
end
|
33
|
+
# token = get_token
|
19
34
|
check_token(token)
|
20
35
|
puts "\e[H\e[2J"
|
21
|
-
@
|
36
|
+
@status.say_yellow :connexion, "downloading user info"
|
22
37
|
user = create_user_data(token, Dir.home + "/ayadn")
|
23
38
|
prepare(user)
|
24
|
-
@
|
39
|
+
@status.say_yellow :create, "configuration"
|
25
40
|
Settings.load_config
|
26
41
|
Logs.create_logger
|
27
42
|
install
|
28
|
-
@
|
43
|
+
@status.say_green :done, "user #{user.handle} is authorized"
|
29
44
|
Errors.info "#{user.handle} authorized."
|
30
|
-
@status.say { @
|
45
|
+
@status.say { @status.say_green :end, "Thank you for using Ayadn. Enjoy!" }
|
31
46
|
Switch.new.list
|
32
47
|
end
|
33
48
|
|
34
49
|
def unauthorize(user, options)
|
35
50
|
begin
|
36
51
|
@workers = Workers.new
|
37
|
-
if user.size
|
52
|
+
if user.size != 1
|
38
53
|
@status.one_username
|
39
54
|
exit
|
40
55
|
end
|
41
56
|
user = @workers.remove_arobase_if_present(user)[0]
|
42
57
|
puts "\e[H\e[2J"
|
43
58
|
if options[:delete]
|
44
|
-
sure = @thor.yes?("Are you sure you want to unauthorize user @#{user} and delete its folders
|
59
|
+
sure = @thor.yes?("Are you sure you want to unauthorize user @#{user} and delete its folders? [y/N]\n\n> ", :red)
|
45
60
|
else
|
46
|
-
sure = @thor.yes?("Are you sure you want to unauthorize user @#{user}
|
61
|
+
sure = @thor.yes?("Are you sure you want to unauthorize user @#{user} ? [y/N]\n\n> ", :red)
|
47
62
|
end
|
48
63
|
unless sure == true
|
49
64
|
Status.new.canceled
|
50
65
|
exit
|
51
66
|
end
|
52
67
|
puts "\e[H\e[2J"
|
53
|
-
@
|
68
|
+
@status.say_yellow :delete, "database entry for @#{user}"
|
69
|
+
|
54
70
|
db = Amalgalite::Database.new(Dir.home + "/ayadn/accounts.sqlite")
|
71
|
+
|
55
72
|
Databases.remove_from_accounts(db, user)
|
56
73
|
if options[:delete]
|
57
|
-
@
|
74
|
+
@status.say_yellow :delete, "@#{user} user folders"
|
58
75
|
FileUtils.remove_dir(Dir.home + "/ayadn/#{user}")
|
59
76
|
end
|
60
|
-
@
|
77
|
+
@status.say_green :done, "user @#{user} has been unauthorized"
|
61
78
|
remaining = Databases.all_accounts(db)
|
62
79
|
if remaining.flatten.empty?
|
63
|
-
@
|
80
|
+
@status.say_info "accounts database is now empty"
|
64
81
|
else
|
65
82
|
username = remaining[0][0]
|
66
83
|
Databases.set_active_account(db, username)
|
67
|
-
@
|
84
|
+
@status.say_info "user @#{username} is now the active user"
|
68
85
|
end
|
69
86
|
puts "\n"
|
87
|
+
rescue Amalgalite::SQLite3::Error => e
|
88
|
+
@status.not_authorized
|
89
|
+
exit
|
70
90
|
rescue Interrupt
|
71
91
|
Status.new.canceled
|
72
92
|
exit
|
@@ -76,11 +96,11 @@ module Ayadn
|
|
76
96
|
private
|
77
97
|
|
78
98
|
def prepare(user)
|
79
|
-
@
|
99
|
+
@status.say_yellow :create, "user folders"
|
80
100
|
create_config_folders(user)
|
81
|
-
@
|
101
|
+
@status.say_yellow :save, "user token"
|
82
102
|
create_token_file(user)
|
83
|
-
@
|
103
|
+
@status.say_yellow :create, "Ayadn account"
|
84
104
|
acc_db = Amalgalite::Database.new(Dir.home + "/ayadn/accounts.sqlite")
|
85
105
|
user_db = Amalgalite::Database.new("#{user.user_path}/db/ayadn.sqlite")
|
86
106
|
if user_db.schema.tables.empty?
|
@@ -93,7 +113,7 @@ module Ayadn
|
|
93
113
|
end
|
94
114
|
|
95
115
|
def install
|
96
|
-
@
|
116
|
+
@status.say_yellow :create, "api and config files"
|
97
117
|
Errors.info "Creating api and config files..."
|
98
118
|
Errors.info "Creating version file..."
|
99
119
|
Settings.init_config
|
@@ -111,7 +131,7 @@ module Ayadn
|
|
111
131
|
end
|
112
132
|
rescue => e
|
113
133
|
@status.say do
|
114
|
-
@
|
134
|
+
@status.say_error "can't create #{user.handle} account folders"
|
115
135
|
end
|
116
136
|
@status.say { puts "\nError: #{e}" }
|
117
137
|
exit
|
@@ -120,23 +140,23 @@ module Ayadn
|
|
120
140
|
|
121
141
|
def show_link
|
122
142
|
@status.say do
|
123
|
-
@
|
143
|
+
@status.say_yellow :please, "click or copy/paste this URL in a browser"
|
124
144
|
puts "\n"
|
125
145
|
puts "\t#{Endpoints.new.authorize_url}"
|
126
146
|
puts "\n"
|
127
|
-
@
|
128
|
-
@
|
129
|
-
@
|
147
|
+
@status.say_cyan :next, "log in to authorize Ayadn"
|
148
|
+
@status.say_center "you will be redirected to your 'user token'"
|
149
|
+
@status.say_yellow :please, "copy/paste the token here:"
|
130
150
|
end
|
131
151
|
print "\t> "
|
132
152
|
end
|
133
153
|
|
134
154
|
def get_user(token)
|
135
155
|
begin
|
136
|
-
JSON.parse(RestClient.get("
|
156
|
+
JSON.parse(RestClient.get("#{@baseURL}/users/me?access_token=#{token}", :verify_ssl => OpenSSL::SSL::VERIFY_NONE) {|response, request, result| response })
|
137
157
|
rescue Exception => e
|
138
158
|
@status.say do
|
139
|
-
@
|
159
|
+
@status.say_error "connection problem"
|
140
160
|
end
|
141
161
|
puts "#{e}"
|
142
162
|
end
|
@@ -154,7 +174,7 @@ module Ayadn
|
|
154
174
|
def check_token(token)
|
155
175
|
if token.empty? || token.nil?
|
156
176
|
@status.say do
|
157
|
-
@
|
177
|
+
@status.say_error "couldn't get the token"
|
158
178
|
end
|
159
179
|
exit
|
160
180
|
end
|