gnip_api 1.2.3 → 1.2.4

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