socialcast 0.1.2 → 0.2.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.2.0
data/bin/socialcast CHANGED
@@ -3,32 +3,59 @@
3
3
  require 'rubygems'
4
4
  require 'commander/import'
5
5
  require 'rest_client'
6
+ require 'fileutils'
7
+ require 'json'
8
+ require 'lib/socialcast'
9
+ include Socialcast
6
10
 
7
11
  program :version, File.read(File.join(File.dirname(__FILE__), '..', 'VERSION')).strip
8
12
  program :description, 'command line interface to the socialcast api'
9
13
 
14
+ command :authenticate do |c|
15
+ c.syntax = 'socialcast authenticate [options]'
16
+ c.summary = 'authenticate your Socialcast credentials'
17
+ c.description = 'verify that your credentials are valid'
18
+ c.example 'socialcast authenticate -u emily@socialcast.com', 'default usage'
19
+ c.option '-u', '--user STRING', String, 'Socialcast account username/email'
20
+ c.option '--domain STRING', String, 'Socialcast community domain'
21
+ c.action do |args, options|
22
+ options.default :domain => 'api.socialcast.com'
23
+
24
+ options.user = ask('Socialcast username: ') unless options.user
25
+ options.password = password
26
+
27
+ say "Authenticating #{options.user}"
28
+ url = ['https://', options.domain, '/api/authentication.json'].join
29
+ params = {:email => options.user, :password => options.password }
30
+ resource = RestClient::Resource.new url
31
+ resource.post params do |response|
32
+ say "API response:" if options.trace
33
+ puts response.body.to_s if options.trace
34
+ communities = JSON.parse(response.body.to_s)['communities']
35
+ options.domain = communities.detect {|c| c['domain'] == options.domain} ? options.domain : communities.first['domain']
36
+ end
37
+
38
+ save_credentials :user => options.user, :password => options.password, :domain => options.domain
39
+ say "Authentication successful for #{options.domain}"
40
+ end
41
+ end
42
+
43
+
10
44
  command :share do |c|
11
45
  c.syntax = 'socialcast share <message> [options]'
12
46
  c.summary = 'share a message'
13
47
  c.description = 'post a message into your socialcast stream'
14
- c.example 'description', 'command example'
15
- c.option '-u', '--user STRING', String, 'Socialcast account username'
16
- c.option '--domain STRING', String, 'Socialcast community domain'
48
+ c.example 'socialcast share "some text"', 'basic usage'
17
49
  c.action do |args, options|
18
50
  message = args.first
19
- options.user = ask('Socialcast username: ') unless options.user
20
- options.password = password
21
- options.domain = ask('Socialcast domain: ') unless options.domain
22
-
23
- # options.default :domain => 'demo.socialcast.local', :user => user, :password => password
24
51
 
25
- url = ['https://', options.domain, '/api/messages.json'].join
26
- say "Posting message to: #{url}"
27
- resource = RestClient::Resource.new url, :user => options.user, :password => options.password, :verify_ssl => OpenSSL::SSL::VERIFY_NONE
52
+ url = ['https://', credentials[:domain], '/api/messages.json'].join
53
+ say "Posting message from #{credentials[:user]} to: #{url}"
54
+ resource = RestClient::Resource.new url, :user => credentials[:user], :password => credentials[:password]
28
55
  params = {:message => {:body => message}}
29
56
  resource.post params do |response|
30
57
  say "API response:" if options.trace
31
- puts response.body if options.trace #FIXME: why doesn't say work here?
58
+ say response.body.to_s if options.trace
32
59
  end
33
60
  say "Message has been shared" #FIXME: use notify_ok to show growl
34
61
  end
data/lib/socialcast.rb CHANGED
@@ -0,0 +1,20 @@
1
+ module Socialcast
2
+ def config_dir
3
+ config_dir = File.expand_path '~/.socialcast'
4
+ FileUtils.mkdir config_dir, :mode => 0700 unless File.exist?(config_dir)
5
+ config_dir
6
+ end
7
+ def credentials_file
8
+ File.join config_dir, 'credentials.yml'
9
+ end
10
+ def save_credentials(options)
11
+ File.open(credentials_file, "w") do |f|
12
+ f.write(options.to_yaml)
13
+ end
14
+ File.chmod 0600, credentials_file
15
+ end
16
+ def credentials
17
+ raise 'Unknown Socialcast credentials. Run `socialcast authenticate` to initialize' unless File.exist?(credentials_file)
18
+ YAML.load_file(credentials_file)
19
+ end
20
+ end
data/socialcast.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{socialcast}
8
- s.version = "0.1.2"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ryan Sonnek"]
12
- s.date = %q{2010-06-11}
12
+ s.date = %q{2010-11-14}
13
13
  s.default_executable = %q{socialcast}
14
14
  s.description = %q{publish messages to your stream from a command line interface}
15
15
  s.email = %q{ryan@socialcast.com}
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: socialcast
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
8
  - 2
10
- version: 0.1.2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Sonnek
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-06-11 00:00:00 -05:00
18
+ date: 2010-11-14 00:00:00 -06:00
19
19
  default_executable: socialcast
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency