facebook-cli 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/fbcli.rb +79 -29
  3. data/lib/fbcli/facebook.rb +2 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bf355c2240f7b7be619e73de13c23b91bc464b12
4
- data.tar.gz: 8fac877170cfebfadd4bc0b9c4ae66d59c5e9138
3
+ metadata.gz: 85e2fd8af22474966be9457355cc77a65c17d9a8
4
+ data.tar.gz: a2bef3fc01f49f721a2a35e8ea44130493a83cda
5
5
  SHA512:
6
- metadata.gz: 2687e272aed37d79b35eb51126977aa1047b1751fdac8483c6b80c84d325b49dea3c814d990b065e8abf24c88697758a61095d717f301ddbb996b371506ecae0
7
- data.tar.gz: 0fe2391fd1f630b93ebdb23370449ebef5742798d897564292b5199d4f8b1664e4915167896cecd86cb843ae5a4fd6b7bfe3efffe18bb4a67dd7a0955208e549
6
+ metadata.gz: 4e4fb9deef5f748bb72d23f088bd1f8d2e1c8bb032709cb9c57717fb7bbe88339c3d0ca6e23ab950e7be74540799df3494559d07a6584778fa206da5be430329
7
+ data.tar.gz: 6a6dfbd622ada5a5627e00729ec08a0c315344bb34cf97985a2063c4df3a7b11ae67237e8da7f709e60fe9599296373758c425a0cd8fdc38a1e05a796a5196fa
@@ -4,45 +4,84 @@ require 'fbcli/auth'
4
4
  require 'fbcli/format'
5
5
  require 'fbcli/facebook'
6
6
 
7
- CONFIG_FILE = "config.yml"
7
+ APP_NAME = File.split($0)[1]
8
+ CONFIG_FILE = File.join(ENV['HOME'], ".#{APP_NAME}rc")
8
9
 
9
10
  include GLI::App
10
11
 
11
12
  program_desc "Facebook command line interface"
12
13
 
13
- version '1.0.0'
14
+ version '1.1.0'
14
15
 
15
16
  flag [:token], :desc => 'Provide Facebook access token', :required => false
16
17
  flag [:format], :desc => 'Output format (values: text, html)', :default_value => "text"
17
18
 
19
+ def print_header
20
+ if $format == 'html'
21
+ puts <<~EOM
22
+ <!doctype html>
23
+ <html lang=en>
24
+ <head>
25
+ <meta charset=utf-8>
26
+ </head>
27
+ <body>
28
+ EOM
29
+ end
30
+ end
31
+
32
+ def print_footer
33
+ if $format == 'html'
34
+ puts <<~EOM
35
+ </body>
36
+ </html>
37
+ EOM
38
+ end
39
+ end
40
+
41
+ formattable_commands = [
42
+ :me,
43
+ :likes,
44
+ :feed,
45
+ :friends,
46
+ :photos,
47
+ :photosof
48
+ ]
49
+
50
+ def save_config
51
+ File.open(CONFIG_FILE, 'w') do |f|
52
+ f.write $config.to_yaml
53
+ end
54
+ end
55
+
18
56
  pre do |global_options,command|
19
- $config = YAML.load_file(CONFIG_FILE)
57
+ if command.name == :config
58
+ $config = {}
59
+ else
60
+ begin
61
+ $config = YAML.load_file(CONFIG_FILE)
62
+ rescue
63
+ exit_now! <<~EOM
64
+ It looks like you are running #{APP_NAME} for the first time.
20
65
 
21
- if $config['app_id'].nil? or $config['app_secret'].nil?
22
- exit_now! <<~EOM
23
- It looks like you are running #{$0} for the first time.
66
+ The following steps are necessary to use the Facebook API:
24
67
 
25
- The following steps are necessary to use the Facebook API:
68
+ - Create a new application at: https://developers.facebook.com/apps
69
+ - In the Settings tab, add "localhost" to the App Domains
70
+ - Save the App ID and App Secret by running:
26
71
 
27
- - Create a new application at: https://developers.facebook.com/apps
28
- - In the Settings tab, add "localhost" to the App Domains
29
- - Save the App ID and App Secret in "config.yml"
72
+ #{APP_NAME} config --appid=<app-id> --appsecret=<app-secret>
30
73
 
31
- After that, run: #{$0} login
32
- EOM
74
+ After that, acquire an access token by running:
75
+
76
+ #{APP_NAME} login
77
+ EOM
78
+ end
33
79
  end
34
80
 
35
81
  $format = global_options[:format]
36
82
 
37
- if $format == "html" and command.name != :login
38
- puts <<~EOM
39
- <!doctype html>
40
- <html lang=en>
41
- <head>
42
- <meta charset=utf-8>
43
- </head>
44
- <body>
45
- EOM
83
+ if formattable_commands.include?(command.name)
84
+ print_header
46
85
  end
47
86
 
48
87
  # Success
@@ -50,11 +89,8 @@ pre do |global_options,command|
50
89
  end
51
90
 
52
91
  post do |global_options,command|
53
- if $format == "html" and command.name != :login
54
- puts <<~EOM
55
- </body>
56
- </html>
57
- EOM
92
+ if formattable_commands.include?(command.name)
93
+ print_footer
58
94
  end
59
95
  end
60
96
 
@@ -65,6 +101,22 @@ on_error do |exception|
65
101
  false
66
102
  end
67
103
 
104
+ desc "Save Facebook application ID and secret"
105
+ command :config do |c|
106
+ c.flag [:appid], :desc => 'Facebook application ID'
107
+ c.flag [:appsecret], :desc => 'Facebook application secret'
108
+ c.action do |global_options,options,args|
109
+ $config['app_id'] = options['appid'].to_i
110
+ $config['app_secret'] = options['appsecret']
111
+
112
+ save_config
113
+
114
+ puts "Configuration saved to #{CONFIG_FILE}"
115
+ puts
116
+ puts "To acquire a Facebook access token, run: #{APP_NAME} login"
117
+ end
118
+ end
119
+
68
120
  desc "Log into Facebook and receive an access token"
69
121
  command :login do |c|
70
122
  c.flag [:port], :desc => 'Local TCP port to serve Facebook login redirect page', :default_value => '3333'
@@ -74,9 +126,7 @@ command :login do |c|
74
126
  if not token.nil?
75
127
  $config['access_token'] = token
76
128
 
77
- File.open(CONFIG_FILE,'w') do |f|
78
- f.write $config.to_yaml
79
- end
129
+ save_config
80
130
 
81
131
  puts "Your access token: #{token}"
82
132
  puts
@@ -2,12 +2,13 @@ require 'koala'
2
2
 
3
3
  module FBCLI
4
4
  def self.init_api(global_options)
5
+ # Access token passed from the command line takes precedence
5
6
  if not global_options[:token].nil?
6
7
  $config['access_token'] = global_options[:token]
7
8
  end
8
9
 
9
10
  if $config['access_token'].nil? or $config['access_token'].empty?
10
- exit_now! "You must first acquire an access token; run: #{$0} login"
11
+ exit_now! "You must first acquire an access token; run: #{APP_NAME} login"
11
12
  end
12
13
 
13
14
  Koala::Facebook::API.new($config['access_token'])
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facebook-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ildar Sagdejev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-21 00:00:00.000000000 Z
11
+ date: 2016-09-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A limited command line interface to the Facebook Graph API
14
14
  email: specious@gmail.com