facebook-cli 1.4.3 → 1.4.9

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: cf36ad0d9d51e1b88c67ae240be6a9a17ccdb01b
4
- data.tar.gz: b40912f10326054e9ae2e9bb60ed960e22ab97ec
3
+ metadata.gz: 60c619d0469bcc50c00c8a968131e0609150ccf8
4
+ data.tar.gz: e710d5ec2df9539a36a72a6d07565110a9df222b
5
5
  SHA512:
6
- metadata.gz: 1644e40fc0d100d06d4edd4f40524ef5231469c08df1380033d4ba02a78661dde88c82660c99c10a8f1b00519a5633bb96232524c6b1fd8517136413a50e911c
7
- data.tar.gz: 942e7dc96aa50c2fd0a9a5cb580f0bd6b4ef350a33ba7192a04db033dc407f421ce0c8baca4f23ad94f95f6229116184d704b3fa1910dbdf048564b98eee16df
6
+ metadata.gz: 6115894a6a4f6a7c7288ad6bfbb1b8d04cea11d51fe9be61365f71f2cdd45ebd98a04814ba42758a365ed1054d2320f656b122bc747f0a9b6c474f0878fb2e1b
7
+ data.tar.gz: 1eea4da386c871b6885e110c82896235bc2e87d46895d5abd2f45bd1871fdf126e94180621d13584b520a8a37a9f395a5b7c98f09b091f58ad0df9fa40fb8480
data/lib/fbcli.rb CHANGED
@@ -1,16 +1,17 @@
1
1
  require 'gli'
2
2
  require 'yaml'
3
3
  require 'fbcli/auth'
4
+ require 'fbcli/version'
4
5
  require 'fbcli/facebook'
5
6
 
6
- APP_NAME = File.split($0)[1]
7
+ APP_NAME = File.basename($0, File.extname($0))
7
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.4.3'
14
+ version FBCLI::VERSION
14
15
 
15
16
  flag [:token], :desc => 'Provide Facebook access token', :required => false
16
17
  flag [:pages, :p], :desc => 'Max pages', :required => false, :type => Integer, :default_value => -1
@@ -24,10 +25,12 @@ def link_to_post(full_post_id)
24
25
  link "#{profile_id}/posts/#{post_id}"
25
26
  end
26
27
 
27
- # Facebook returns dates in ISO 8601 format, UTC time zone
28
- def date_str(fb_date)
28
+ # Facebook returns dates in ISO 8601 or unix timestamp format
29
+ def date_str(date)
30
+ t = (date.is_a? Integer) ? Time.at(date) : Time.parse(date).localtime
31
+
29
32
  # Convert to human friendly representation in user's time zone (almost RFC 2822)
30
- Time.parse(fb_date).localtime.strftime('%a, %-d %b %Y %H:%M:%S %Z')
33
+ t.strftime('%a, %-d %b %Y %H:%M:%S %Z')
31
34
  end
32
35
 
33
36
  def save_config
@@ -48,23 +51,23 @@ pre do |global_options, command|
48
51
  begin
49
52
  $config = YAML.load_file(CONFIG_FILE)
50
53
  rescue
51
- exit_now! %(
52
- It looks like you are running #{APP_NAME} for the first time.
54
+ exit_now! <<-EOM
55
+ It looks like you are running #{APP_NAME} for the first time.
53
56
 
54
- The following steps are necessary to use the Facebook API:
57
+ The following steps are necessary to use the Facebook API:
55
58
 
56
- - Create a new application at: https://developers.facebook.com/apps
57
- - In the Settings tab, set "Site URL" to "http://localhost" and
58
- then under "App Domains" add "localhost", and click "Save"
59
- - In the "App Review" tab, flip the switch to make your app live.
60
- - Save the App ID and App Secret by running:
59
+ - Create a new application at: https://developers.facebook.com/apps
60
+ - In the Settings tab, set "Site URL" to "http://localhost" and
61
+ then under "App Domains" add "localhost", and click "Save"
62
+ - In the "App Review" tab, flip the switch to make your app live.
63
+ - Save the App ID and App Secret by running:
61
64
 
62
- #{APP_NAME} config --appid=<app-id> --appsecret=<app-secret>
65
+ #{APP_NAME} config --appid=<app-id> --appsecret=<app-secret>
63
66
 
64
- After that, acquire an access token by running:
67
+ After that, acquire an access token by running:
65
68
 
66
- #{APP_NAME} login
67
- )
69
+ #{APP_NAME} login
70
+ EOM
68
71
  end
69
72
  end
70
73
 
@@ -103,19 +106,36 @@ end
103
106
  desc "Log into Facebook and receive an access token"
104
107
  command :login do |c|
105
108
  c.flag [:port], :desc => 'Local TCP port to serve Facebook login redirect page', :default_value => '3333'
109
+ c.switch [:info], :desc => 'Show information about the current access token and exit', :negatable => false
106
110
  c.action do |global_options, options|
107
- token, expiration = FBCLI::listen_for_auth_code(options['port'], $config['app_id'], $config['app_secret'])
111
+ if options['info']
112
+ begin
113
+ FBCLI::request_token_info do |data|
114
+ puts "Your access token was issued on: #{date_str(data['issued_at'])}"
115
+ puts
116
+ puts "It is valid until: #{date_str(data['expires_at'])}"
117
+ puts
118
+ puts "Permissions:\n - #{data['scopes'].join("\n - ")}"
119
+ end
120
+ rescue
121
+ puts "Your access token does not appear to be valid for this application."
122
+ end
123
+ else
124
+ token = FBCLI::listen_for_auth_code(options['port'], $config['app_id'], $config['app_secret'])
108
125
 
109
- if not token.nil?
110
- $config['access_token'] = token
126
+ if not token.nil?
127
+ $config['access_token'] = token
111
128
 
112
- save_config
129
+ save_config
113
130
 
114
- puts "Your access token: #{token}"
115
- puts
116
- puts "Expires in: #{FBCLI::expiration_str(expiration.to_i)}"
117
- puts
118
- puts "Have fun!"
131
+ puts "Your access token: #{token}"
132
+ puts
133
+ puts "To find out when it is scheduled to expire, run:"
134
+ puts
135
+ puts " #{APP_NAME} login --info"
136
+ puts
137
+ puts "Have fun!"
138
+ end
119
139
  end
120
140
  end
121
141
  end
data/lib/fbcli/auth.rb CHANGED
@@ -59,12 +59,6 @@ module FBCLI
59
59
  res = Net::HTTP.get_response(URI.parse(auth_uri))
60
60
  res = JSON.parse(res.body)
61
61
 
62
- [res["access_token"], res["expires_in"]]
63
- end
64
-
65
- def self.expiration_str(seconds)
66
- h, m = seconds.divmod(60 * 3600)
67
-
68
- "#{h} hours and #{m.div 3600} minutes"
62
+ res["access_token"]
69
63
  end
70
64
  end
@@ -36,6 +36,14 @@ module FBCLI
36
36
  api_call lambda { |api| api.delete_object("me/permissions") }
37
37
  end
38
38
 
39
+ def self.request_token_info
40
+ api_call lambda { |api|
41
+ api.debug_token $config['access_token'] do |res|
42
+ yield res['data']
43
+ end
44
+ }
45
+ end
46
+
39
47
  def self.request_object(id, options = {})
40
48
  api_call lambda { |api|
41
49
  api.get_object(id, options) do |data|
@@ -0,0 +1,3 @@
1
+ module FBCLI
2
+ VERSION = '1.4.9'
3
+ end
metadata CHANGED
@@ -1,15 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facebook-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.4.9
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-10-08 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2016-10-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: koala
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: gli
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.14'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.14'
13
55
  description: A limited command line interface to Facebook
14
56
  email: specious@gmail.com
15
57
  executables:
@@ -21,6 +63,7 @@ files:
21
63
  - lib/fbcli.rb
22
64
  - lib/fbcli/auth.rb
23
65
  - lib/fbcli/facebook.rb
66
+ - lib/fbcli/version.rb
24
67
  homepage: https://github.com/specious/facebook-cli
25
68
  licenses:
26
69
  - MIT
@@ -33,7 +76,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
33
76
  requirements:
34
77
  - - ">="
35
78
  - !ruby/object:Gem::Version
36
- version: '2.3'
79
+ version: '0'
37
80
  required_rubygems_version: !ruby/object:Gem::Requirement
38
81
  requirements:
39
82
  - - ">="