redmine-client 0.1.1 → 0.1.2

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: adbb91f6dc34d8288848b0d5993e78192b893994
4
- data.tar.gz: 8c8bdb5de742000034f4620ceb9e5ad3c6f7347b
3
+ metadata.gz: a1b6d8d4f3db8f3bc1d826eef346559d1110aa53
4
+ data.tar.gz: 70118cc8188b44bb98c2e9b5aa3273e5fdf81397
5
5
  SHA512:
6
- metadata.gz: 218af347d3929ef6e10013cbb9ba1979dae1d590ba97832d11cc2d3c0aafcd4831f748bf14b7c94a824d87b020b975f5923ca4e57bab19c162d8501aea41e2ca
7
- data.tar.gz: cee237756a2619472db0749909bc94085d399ed38567f816e57f34f694f600f1ea145f5d9b934b9edf94494df71a95bcb69f3083e8fe69969c312009c1d484cc
6
+ metadata.gz: 245f4112778b0c9afa3694cd8bd9d97563b10b64070cb40ba155befb7095dab84719aca44b062d891aaeef1b97209c8bab7ea1220851cd0db0c6cd4998ff3dd7
7
+ data.tar.gz: e646218f3364b589a5d4fc2b97488951960de2800bfee1728a51143cdd26bac70ea42c85546f11cb7f6c9da3b1e9c5d271ce04ad166ffaa8e28bcf306d439229
@@ -5,8 +5,29 @@ require 'redmine/client/authorization_token'
5
5
 
6
6
  module Redmine
7
7
  class Client
8
+ class ResponseError < StandardError
9
+ attr_reader :response
10
+ def initialize(response)
11
+ @response = response
12
+ end
13
+
14
+ def body
15
+ response.body
16
+ end
17
+
18
+ def message
19
+ "Error #{response.status}: #{response.body}"
20
+ end
21
+ end
22
+
8
23
  class << self
9
24
  attr_accessor :base_url
25
+ attr_writer :raise_on_error
26
+ def raise_on_error?
27
+ return @raise_on_error if defined?(@raise_on_error)
28
+
29
+ @raise_on_error = true
30
+ end
10
31
  end
11
32
 
12
33
  attr_reader :base_url, :access_key
@@ -33,21 +54,25 @@ module Redmine
33
54
  class_eval <<-EOF
34
55
  def create_#{singular}(params, full_response=false)
35
56
  resp = faraday.post("/#{plural}.json", {"#{singular}" => params})
57
+ check_errors(resp)
36
58
  full_response ? resp : resp.body
37
59
  end
38
60
 
39
61
  def find_#{singular}(id, full_response=false)
40
62
  resp = faraday.get("/#{plural}/\#{id}.json")
63
+ check_errors(resp)
41
64
  full_response ? resp : resp.body
42
65
  end
43
66
 
44
67
  def update_#{singular}(id, params, full_response=false)
45
68
  resp = faraday.put("/#{plural}/\#{id}.json", {"#{singular}" => params})
69
+ check_errors(resp)
46
70
  full_response ? resp : resp.body
47
71
  end
48
72
 
49
- def delete_#{singular}(id, full_response=false)
73
+ def delete_#{singular}(id, full_response=false, raise_on_error=true)
50
74
  resp = faraday.delete("/#{plural}/\#{id}.json")
75
+ check_errors(resp)
51
76
  full_response ? resp : resp.body
52
77
  end
53
78
  EOF
@@ -65,5 +90,14 @@ module Redmine
65
90
  "role_ids" => Array(role_ids),
66
91
  }})
67
92
  end
93
+
94
+ def check_errors(response)
95
+ return if response.success?
96
+ $stderr.puts "REDMINE ERROR (#{response.status}): #{response.body}"
97
+
98
+ if self.class.raise_on_error?
99
+ raise ResponseError.new(response)
100
+ end
101
+ end
68
102
  end
69
103
  end
@@ -1,5 +1,5 @@
1
1
  module Redmine
2
2
  class Client
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redmine-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Delcambre
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-20 00:00:00.000000000 Z
11
+ date: 2015-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler