gnip_api 1.2.3 → 1.2.4

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: 03b14ac2afa5946ca2801970eaa521fa0763664d
4
- data.tar.gz: 01b6f881f339617348e818c71a1a747abf46e99d
3
+ metadata.gz: ab4d673ead43c52c3bb125dcd7bd2a5927e578c8
4
+ data.tar.gz: a0b428bc819c7f56a7b114966e29ca16c6fa45b2
5
5
  SHA512:
6
- metadata.gz: bd9eb46fa645ea6e13b9b54f4eb36ceeb4f740fb3c2234a75fcb6cdeaebb6323fa8a822ea56d729d67206d57513e7a7f0d7d4f0162c1732b9c59de83d5e25ca9
7
- data.tar.gz: 8b68c3d84b54e42ab2533b423ed58dbfc0e4c586d8466ad40311c0a85e48d24eaad131ecf290275d603b9546d743474d10bb785b42d4b4657f4889c9425053b1
6
+ metadata.gz: 98cdb218678d65ce2b92e120f100f5d6512aa3f42a108b86bc4683046b4be22c89ec1fd67673523bc6269f2dcb4aba1cfbe73760bfaf10e6bfce20f9e5e79184
7
+ data.tar.gz: a759e42169fd8655a30aac8529be5801f7ed56b5a0890cd2a06f0a1009d76a96c1ed92bceda4468287b2d5496b6fcac46ab2829b92b5b39b9e5e5e55aaac3325
@@ -1 +1 @@
1
- ruby-2.2.5
1
+ ruby-2.2.10
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gnip_api (1.2.3)
4
+ gnip_api (1.2.4)
5
5
  addressable
6
6
  httparty
7
7
  yajl-ruby
@@ -74,4 +74,4 @@ DEPENDENCIES
74
74
  timecop
75
75
 
76
76
  BUNDLED WITH
77
- 1.16.0
77
+ 1.16.3
@@ -15,6 +15,7 @@ module GnipApi
15
15
 
16
16
  module Adapter
17
17
  class RequestError < StandardError; end
18
+ class InvalidInput < StandardError; end
18
19
 
19
20
  class RateLimitError < StandardError
20
21
  def initialize msg='Exceded rate limits'
@@ -27,11 +27,20 @@ module GnipApi
27
27
  def error_message
28
28
  if @body && !@body.empty?
29
29
  parsed = GnipApi::JsonParser.new.parse(@body)
30
- message = parsed['error']['message']
31
- message += " - TID: #{parsed['error']['transactionId']}" if parsed['error']['transactionId']
32
- return message
30
+ if rules_summary? parsed
31
+ created = parsed["summary"]["created"]
32
+ failed = parsed["summary"]["not_created"]
33
+ timstamp = parsed["sent"]
34
+ log_rule_failures(parsed)
35
+ return "Invalid rules: created #{created}, failed #{failed} verify and try again"
36
+ elsif generic_error? parsed
37
+ message = parsed['error']['message']
38
+ message += " - TID: #{parsed['error']['transactionId']}" if parsed['error']['transactionId']
39
+ return message
40
+ else
41
+ return "Unknown error"
42
+ end
33
43
  end
34
- return nil
35
44
  end
36
45
 
37
46
  def check_for_errors!
@@ -49,9 +58,28 @@ module GnipApi
49
58
  GnipApi.logger.debug "Request payload -> #{request.payload.inspect}"
50
59
  raise GnipApi::Errors::Adapter::GnipSoftwareError.new error_message if status == 503
51
60
  raise GnipApi::Errors::Adapter::RateLimitError.new error_message if status == 429
61
+ raise GnipApi::Errors::Adapter::InvalidInput.new(error_message) if status == 422
52
62
  raise GnipApi::Errors::Adapter::RequestError.new("Status #{status} #{error_message}")
53
63
  end
54
64
  end
55
65
 
66
+ private
67
+ def log_rule_failures data
68
+ message = "Invalid rules (422):\n"
69
+ data["detail"].each do |rule|
70
+ message += "Rule: #{rule['value']}\n"
71
+ message += "Reason: #{rule['message']}\n\n"
72
+ end
73
+ GnipApi.logger.error message
74
+ end
75
+
76
+ def rules_summary? data
77
+ data.keys.include? "summary"
78
+ end
79
+
80
+ def generic_error? data
81
+ data.keys.include? "error"
82
+ end
83
+
56
84
  end
57
85
  end
@@ -1,3 +1,3 @@
1
1
  module GnipApi
2
- VERSION = "1.2.3"
2
+ VERSION = "1.2.4"
3
3
  end
@@ -8,6 +8,27 @@ describe GnipApi::Response do
8
8
  end
9
9
 
10
10
  describe '#error_message' do
11
+ context 'when 422 for rules' do
12
+ let(:request) { GnipApi::Response.new(GnipApi::Request.new, 422, "{\"summary\":{\"created\":0,\"not_created\":1},\"detail\":[{\"rule\":{\"value\":\"keyword\",\"tag\":\"123\"},\"created\":false,\"message\":\"some message\"}],\"sent\":\"2018-07-26T15:25:33.483Z\"}", {}) }
13
+ it "parses body errors and returns minimal info" do
14
+ expect(request.error_message).to eq("Invalid rules: created 0, failed 1 verify and try again")
15
+ end
16
+ end
17
+
18
+ context 'when 422 for everything else' do
19
+ let(:request) { GnipApi::Response.new(GnipApi::Request.new, 422, "{\"error\":{\"message\":\"Generic error\",\"sent\":\"2018-02-06T16:35:03+00:00\",\"transactionId\":\"000ea40b00c3da1e\"}}", {}) }
20
+ it "parses body errors and returns message" do
21
+ expect(request.error_message).to eq("Generic error - TID: 000ea40b00c3da1e")
22
+ end
23
+ end
24
+
25
+ context 'when 422 with nothing' do
26
+ let(:request) { GnipApi::Response.new(GnipApi::Request.new, 422, "{\"asd\":\"asd\"}", {}) }
27
+ it "returns unknown" do
28
+ expect(request.error_message).to eq("Unknown error")
29
+ end
30
+ end
31
+
11
32
  context 'when 429' do
12
33
  let(:request) { GnipApi::Response.new(GnipApi::Request.new, 429, "{\"error\":{\"message\":\"Exceeded rate limit\",\"sent\":\"2018-02-06T16:35:03+00:00\",\"transactionId\":\"000ea40b00c3da1e\"}}", {}) }
13
34
  it 'parses the body and returns message' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gnip_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rayko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-07 00:00:00.000000000 Z
11
+ date: 2018-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler