td-client 0.8.81 → 0.8.82

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: f6639c3d87e9a018b4d8270c64165afc64ddb5c1
4
- data.tar.gz: f0d2a64b5cb60ec6bc0b43f53f6ea0f8136e236f
3
+ metadata.gz: bf42a2c04e997054b7071bd6dc6038738a8857a6
4
+ data.tar.gz: 360933ff5ee21f22dbb9fce7b5acab14a23006f4
5
5
  SHA512:
6
- metadata.gz: 7fe4f5336064479b42b5f867bd54014530aae360b175e3953aa3d82ee06822361d2c41219b9f64179791c08e918102de712ad323de39ef8f5e06ea2990d17e95
7
- data.tar.gz: dd8dffeca422ea5d9e57ece36ed2655b4a2b57ef072dcf697dddd6f6c01d8a8a8ba04fd1f946d442982242d1028101830a8c6aefed676350ce168708c8d90324
6
+ metadata.gz: ab861c2082d0eb19039a928c59e18414f64d31b15303ab4e11144f3290eeb9b29bacbd26ec721d2eb85f25b8935c571c3b0a27ae660885454756fddfae37fbdc
7
+ data.tar.gz: d562b950d3c9c09d2bf25cef45d2397212a5ea654fc7ca6bf002c403dd9cc76022a0a8db6203f9218ccf40457bfd4fe8c7134592d71875993a5c40181db1e6b4
@@ -592,18 +592,15 @@ private
592
592
  end
593
593
 
594
594
  def parse_error_response(res)
595
- error = {}
596
-
597
595
  begin
598
- js = JSON.load(res.body)
599
- if js.nil?
600
- error['message'] = res.reason
596
+ error = JSON.load(res.body)
597
+ if error
598
+ error['message'] = error['error'] unless error['message']
601
599
  else
602
- error['message'] = js['message'] || js['error']
603
- error['stacktrace'] = js['stacktrace']
600
+ error = {'message' => res.reason}
604
601
  end
605
602
  rescue JSON::ParserError
606
- error['message'] = res.body[0,1000].dump
603
+ error = {'message' => res.body}
607
604
  end
608
605
 
609
606
  error
@@ -625,6 +622,7 @@ private
625
622
  when "404"
626
623
  NotFoundError
627
624
  when "409"
625
+ message = "#{message}: conflicts_with job:#{error["details"]["conflicts_with"]}" if error["details"] && error["details"]["conflicts_with"]
628
626
  AlreadyExistsError
629
627
  when "401"
630
628
  AuthError
@@ -636,11 +634,15 @@ private
636
634
  end
637
635
  end
638
636
 
639
- if error_class.method_defined?(:api_backtrace)
640
- raise error_class.new(message, error['stacktrace'])
637
+ exc = nil
638
+ if error_class.method_defined?(:conflicts_with) && error["details"] && error["details"]["conflicts_with"]
639
+ exc = error_class.new(message, error['stacktrace'], error["details"]["conflicts_with"])
640
+ elsif error_class.method_defined?(:api_backtrace)
641
+ exc = error_class.new(message, error['stacktrace'])
641
642
  else
642
- raise error_class, message
643
+ exc = error_class.new(message)
643
644
  end
645
+ raise exc
644
646
  end
645
647
 
646
648
  if ''.respond_to?(:encode)
@@ -23,6 +23,11 @@ end
23
23
 
24
24
  # 409 API errors
25
25
  class AlreadyExistsError < APIError
26
+ attr_reader :conflicts_with
27
+ def initialize(error_message = nil, api_backtrace = nil, conflicts_with=nil)
28
+ super(error_message, api_backtrace)
29
+ @conflicts_with = conflicts_with
30
+ end
26
31
  end
27
32
 
28
33
  # 404 API errors
@@ -1,5 +1,5 @@
1
1
  module TreasureData
2
2
  class Client
3
- VERSION = '0.8.81'
3
+ VERSION = '0.8.82'
4
4
  end
5
5
  end
@@ -0,0 +1,77 @@
1
+ require 'spec_helper'
2
+
3
+ describe APIError do
4
+ let (:message){ 'message' }
5
+ let (:api_backtrace){ double('api_backtrace') }
6
+ describe 'new' do
7
+ context '' do
8
+ it do
9
+ exc = APIError.new(message, api_backtrace)
10
+ expect(exc).to be_an(APIError)
11
+ expect(exc.message).to eq message
12
+ expect(exc.api_backtrace).to eq api_backtrace
13
+ end
14
+ end
15
+ context 'api_backtrace is ""' do
16
+ let (:api_backtrace){ '' }
17
+ it do
18
+ exc = APIError.new(message, api_backtrace)
19
+ expect(exc).to be_an(APIError)
20
+ expect(exc.message).to eq message
21
+ expect(exc.api_backtrace).to be_nil
22
+ end
23
+ end
24
+ context 'api_backtrace is nil' do
25
+ let (:api_backtrace){ nil }
26
+ it do
27
+ exc = APIError.new(message, api_backtrace)
28
+ expect(exc).to be_an(APIError)
29
+ expect(exc.message).to eq message
30
+ expect(exc.api_backtrace).to be_nil
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ describe AlreadyExistsError do
37
+ let (:message){ 'message' }
38
+ let (:api_backtrace){ double('api_backtrace') }
39
+ let (:conflicts_with){ '12345' }
40
+ describe 'new' do
41
+ context '' do
42
+ it do
43
+ exc = AlreadyExistsError.new(message, api_backtrace)
44
+ expect(exc).to be_an(AlreadyExistsError)
45
+ expect(exc.message).to eq message
46
+ expect(exc.api_backtrace).to eq api_backtrace
47
+ end
48
+ end
49
+ context 'api_backtrace is ""' do
50
+ let (:api_backtrace){ '' }
51
+ it do
52
+ exc = AlreadyExistsError.new(message, api_backtrace)
53
+ expect(exc).to be_an(AlreadyExistsError)
54
+ expect(exc.message).to eq message
55
+ expect(exc.api_backtrace).to be_nil
56
+ end
57
+ end
58
+ context 'api_backtrace is nil' do
59
+ let (:api_backtrace){ nil }
60
+ it do
61
+ exc = AlreadyExistsError.new(message, api_backtrace)
62
+ expect(exc).to be_an(AlreadyExistsError)
63
+ expect(exc.message).to eq message
64
+ expect(exc.api_backtrace).to be_nil
65
+ end
66
+ end
67
+ context 'conflict' do
68
+ it do
69
+ exc = AlreadyExistsError.new(message, api_backtrace, conflicts_with)
70
+ expect(exc).to be_an(AlreadyExistsError)
71
+ expect(exc.message).to eq message
72
+ expect(exc.api_backtrace).to eq api_backtrace
73
+ expect(exc.conflicts_with).to eq conflicts_with
74
+ end
75
+ end
76
+ end
77
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: td-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.81
4
+ version: 0.8.82
5
5
  platform: ruby
6
6
  authors:
7
7
  - Treasure Data, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-03 00:00:00.000000000 Z
11
+ date: 2016-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -226,6 +226,7 @@ files:
226
226
  - spec/spec_helper.rb
227
227
  - spec/td/client/access_control_api_spec.rb
228
228
  - spec/td/client/account_api_spec.rb
229
+ - spec/td/client/api_error_spec.rb
229
230
  - spec/td/client/api_spec.rb
230
231
  - spec/td/client/api_ssl_connection_spec.rb
231
232
  - spec/td/client/bulk_import_spec.rb
@@ -271,6 +272,7 @@ summary: Treasure Data API library for Ruby
271
272
  test_files:
272
273
  - spec/td/client/access_control_api_spec.rb
273
274
  - spec/td/client/account_api_spec.rb
275
+ - spec/td/client/api_error_spec.rb
274
276
  - spec/td/client/api_spec.rb
275
277
  - spec/td/client/api_ssl_connection_spec.rb
276
278
  - spec/td/client/bulk_import_spec.rb