Class: Socialcast::CommandLine::CLI

Inherits:
Thor
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/socialcast/command_line/cli.rb

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ CLI

Returns a new instance of CLI.



19
# File 'lib/socialcast/command_line/cli.rb', line 19

def initialize(*args); super; end

Instance Method Details

#authenticateObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/socialcast/command_line/cli.rb', line 35

def authenticate
  user = options[:user] || ask('Socialcast login (email address): ')
  password = options[:password] || HighLine.new.ask("Socialcast password: ") { |q| q.echo = false }.to_s

  params = { :email => user, :password => password }
  response = Socialcast::CommandLine::Authenticate.new(:user, options, params).request
  communities = JSON.parse(response.body.to_s)['communities']
  domain = communities.detect { |c| c['domain'] == options[:domain] } ? options[:domain] : communities.first['domain']

  Socialcast::CommandLine.credentials = {
    :user => user,
    :password => password,
    :domain => domain
  }
  say "Authentication successful for #{domain}"
end

#authenticate_external_systemObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/socialcast/command_line/cli.rb', line 57

def authenticate_external_system
  api_client_identifier = options[:api_client_identifier] || ask("Socialcast external system identifier: ")
  api_client_secret = options[:api_client_secret] || ask("Socialcast external system API secret: ")

  headers = {
    :headers => {
      :Authorization => "SocialcastApiClient #{api_client_identifier}:#{api_client_secret}"
    }
  }

  Socialcast::CommandLine::Authenticate.new(:external_system, options, {}, headers).request

  Socialcast::CommandLine.credentials = {
    :api_client_identifier => api_client_identifier,
    :api_client_secret => api_client_secret,
  }
end

#infoObject



23
24
25
26
27
# File 'lib/socialcast/command_line/cli.rb', line 23

def info
  if options["version"]
    say "Socialcast Command Line #{Socialcast::CommandLine::VERSION}"
  end
end

#provisionObject



115
116
117
118
119
120
121
122
123
# File 'lib/socialcast/command_line/cli.rb', line 115

def provision
  config = ldap_config options
  load_plugins options

  Socialcast::CommandLine::ProvisionUser.new(config, options).provision

rescue Socialcast::CommandLine::ProvisionUser::ProvisionError => e
  Kernel.abort e.message
end

#share(message = nil) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/socialcast/command_line/cli.rb', line 80

def share(message = nil)
  message ||= $stdin.read_nonblock(100_000) rescue nil

  attachment_ids = []
  options[:attachments].each do |path|
    Dir[File.expand_path(path)].each do |attachment|
      say "Uploading attachment #{attachment}..."
      uploader = Socialcast::CommandLine.resource_for_path '/api/attachments', {}, options[:trace]
      uploader.post({:attachment => File.new(attachment)}, {:accept => :json}) do |response, request, result|
        if response.code == 201
          attachment_ids << JSON.parse(response.body)['attachment']['id']
        else
          say "Error uploading attachment: #{response.body}"
        end
      end
    end
  end

  Socialcast::CommandLine::Message.with_debug options[:trace] do
    Socialcast::CommandLine::Message.create :body => message, :url => options[:url], :message_type => options[:message_type], :attachment_ids => attachment_ids, :group_id => options[:group_id]
  end
  say "Message has been shared"
end

#sync_photosObject



128
129
130
131
132
# File 'lib/socialcast/command_line/cli.rb', line 128

def sync_photos
  config = ldap_config options

  Socialcast::CommandLine::ProvisionPhoto.new(config, options).sync
end