shelly 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4b85bcd0e7111d1a7bdaf59a47384141a49fb347
4
- data.tar.gz: c0279a7748d978b1cb427240b4b0c9a49dbbd039
3
+ metadata.gz: d3108d5cd82ebb8ac69e5fd386eb9411449723c8
4
+ data.tar.gz: 16d0a5f75fc68e4126726035ffd456f29806add9
5
5
  SHA512:
6
- metadata.gz: 72a140d37c0f1027109b1a066e9ac6b9c4e8c785be895e46c3225b8b9c92f166b15ba72fc85439137bb3f0de2c18cfd0489d76b8a82085fe8d9bafd05a12409d
7
- data.tar.gz: a9c4dc381a59cd781993d8a319767552ea013eea3aace1fead433a14a369cbe58f636baadc2db18cc5d3ce32ad156e2dce5868a62f49011ab5bed84e6165f6f5
6
+ metadata.gz: 25ab6d5221843cef3dae2a38b1d6f3864c8a4c5b2af71d1b0bc0afc4708347faab21dacb51e4b9d7bedd9fad7eccb81e9477cc3d72f751f8cd39afdc30268b8c
7
+ data.tar.gz: c4fb2607b1c07cb6c0d7e67211a006c5d3e6a922cfba831ff6bf7c21230ab9630ef2ccbaf5a12773152570f06e85552f52a6cf7bd85cfb622a4bc6f7c42159b0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 0.5.1 / 2015-02-01
2
+
3
+ * [improvement] shelly logout --key option
4
+ * [bugfix] Show proper error message when log file does not exist
5
+ * [bugfix] Catch 404s when updating and deleting endpoints. API resource
6
+ certificate changed to endpoint
7
+
1
8
  ## 0.5.0 / 2015-01-02
2
9
 
3
10
  * [bugfix] Catch Conflict 409 when creating or updating endpoints
@@ -143,7 +143,7 @@ module Shelly
143
143
  rescue Client::ConflictException => e
144
144
  say_error e['message']
145
145
  rescue Client::NotFoundException => e
146
- raise unless e.resource == :certificate
146
+ raise unless e.resource == :endpoint
147
147
  say_error "Endpoint not found"
148
148
  end
149
149
 
@@ -160,7 +160,7 @@ module Shelly
160
160
  say "Endpoint was deleted"
161
161
  end
162
162
  rescue Client::NotFoundException => e
163
- raise unless e.resource == :certificate
163
+ raise unless e.resource == :endpoint
164
164
  say_error "Endpoint not found"
165
165
  end
166
166
 
@@ -43,8 +43,9 @@ module Shelly
43
43
 
44
44
  say_new_line
45
45
  say "Log file saved to #{attributes["filename"]}", :green
46
- rescue RestClient::ResourceNotFound => e
47
- say_error "Log file not found", :with_exit => false
46
+ rescue Client::NotFoundException => e
47
+ bar.clear
48
+ say_error "Log file for #{date} not found", :with_exit => false
48
49
  rescue Client::ValidationException => e
49
50
  e.each_error { |error| say_error error, :with_exit => false }
50
51
  end
@@ -283,9 +283,15 @@ Wait until cloud is in 'turned off' state and try again.}
283
283
  end
284
284
 
285
285
  desc "logout", "Logout from Shelly Cloud"
286
+ method_option :key, :alias => :k, :desc => "Path to specific SSH key",
287
+ :default => nil
286
288
  def logout
287
289
  user = Shelly::User.new
288
- say "Your public SSH key has been removed from Shelly Cloud" if user.ssh_keys.destroy
290
+ key = Shelly::SshKey.new(options[:key]) if options[:key]
291
+ if (key || user.ssh_keys).destroy
292
+ say "Your public SSH key has been removed from Shelly Cloud"
293
+ end
294
+
289
295
  say "You have been successfully logged out" if user.logout
290
296
  end
291
297
 
data/lib/shelly/client.rb CHANGED
@@ -53,8 +53,10 @@ module Shelly
53
53
  def download_file(cloud, filename, url, progress_callback = nil)
54
54
  File.open(filename, "wb") do |out|
55
55
  process_response = lambda do |response|
56
+ raise_error_for_400_to_599(response.code.to_i)
56
57
 
57
58
  total_size = response.to_hash['file-size'].first.to_i if response.to_hash['file-size']
59
+
58
60
  response.read_body do |chunk|
59
61
  out.write(chunk)
60
62
 
@@ -110,8 +112,14 @@ module Shelly
110
112
  def process_response(response)
111
113
  body = JSON.parse(response.body) rescue JSON::ParserError && {}
112
114
  code = response.code
115
+ raise_error_for_400_to_599(code, body, response)
116
+ response.return!
117
+ body
118
+ end
119
+
120
+ def raise_error_for_400_to_599(code, body = nil, response = nil)
113
121
  if (400..599).include?(code)
114
- exception_class = case response.code
122
+ exception_class = case code
115
123
  when 401; UnauthorizedException
116
124
  when 403; ForbiddenException
117
125
  when 404; NotFoundException
@@ -122,10 +130,9 @@ module Shelly
122
130
  when 504; GatewayTimeoutException
123
131
  else; APIException
124
132
  end
125
- raise exception_class.new(body, code, response.headers[:x_request_id])
133
+ request_id = response.headers[:x_request_id] if response.respond_to?(:headers)
134
+ raise exception_class.new(body, code, request_id)
126
135
  end
127
- response.return!
128
- body
129
136
  end
130
137
  end
131
138
  end
@@ -1,3 +1,3 @@
1
1
  module Shelly
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
3
  end
@@ -124,9 +124,10 @@ describe Shelly::CLI::Logs do
124
124
 
125
125
  context "on log file not found" do
126
126
  it "should display error message" do
127
- exception = RestClient::ResourceNotFound.new
127
+ exception = Shelly::Client::NotFoundException.new
128
128
  @client.stub(:download_file).and_raise(exception)
129
- $stdout.should_receive(:puts).with(red "Log file not found")
129
+ @bar.should_receive(:clear)
130
+ $stdout.should_receive(:puts).with(red "Log file for 2013-05-31 not found")
130
131
  invoke(@cli_logs, :get, "2013-05-31")
131
132
  end
132
133
  end
@@ -1508,6 +1508,17 @@ Wait until cloud is in 'turned off' state and try again.")
1508
1508
  user.ssh_keys.should_receive(:destroy)
1509
1509
  invoke(@main, :logout)
1510
1510
  end
1511
+
1512
+ context "option key" do
1513
+ it "should be removed" do
1514
+ sshkey = mock
1515
+ Shelly::SshKey.should_receive(:new).with('path/sshkey.pub').and_return(sshkey)
1516
+ $stdout.should_receive(:puts).with("Your public SSH key has been removed from Shelly Cloud")
1517
+ sshkey.should_receive(:destroy).and_return(true)
1518
+ @main.options = {:key => "path/sshkey.pub"}
1519
+ invoke(@main, :logout)
1520
+ end
1521
+ end
1511
1522
  end
1512
1523
 
1513
1524
  describe "#rake" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shelly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shelly Cloud team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-02 00:00:00.000000000 Z
11
+ date: 2015-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -359,7 +359,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
359
359
  version: '0'
360
360
  requirements: []
361
361
  rubyforge_project: shelly
362
- rubygems_version: 2.4.5
362
+ rubygems_version: 2.4.3
363
363
  signing_key:
364
364
  specification_version: 4
365
365
  summary: Shelly Cloud command line tool