td-client 0.8.81 → 0.8.82

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