redmine-client 0.1.1 → 0.1.2

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