shelly 0.5.0 → 0.5.1

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: 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