codeclimate-services 1.1.0 → 1.2.0

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: c0054c90b880e5234b968e1d7b22d6e8ce96f6ba
4
- data.tar.gz: 7da2b030334e81ed263492809232d5a5eac4f999
3
+ metadata.gz: 62974a5f010b848b43edd501e04b3fd7e7efcc81
4
+ data.tar.gz: 6bf203a29ac168df6c9e420c47b180b9bca13660
5
5
  SHA512:
6
- metadata.gz: 073441465b05c723b544409b507af2a5309d558657ff959e1d6317ebc2f393340bb67c9b72903dc860dcb996fba2d3b8ea6348f6cc5be18b30dc7f77c579b8fd
7
- data.tar.gz: ab3e9b5ed0e03521974c27e810e5121f895157ce6096af705c86b2faac124e5189dda5aebe2b4486159f2d3999fbb51a4bc3ddf5731015dcfbd1f83686c618bd
6
+ metadata.gz: 2a0eb59655aff194805a6ec28ffb5275d2f038585cdbb0df9cd3e927808e6ea67fa61603fcbd46bdd66aa7e1617e3cf8d6a18f6ecd532465a06a1dc824fcd21c
7
+ data.tar.gz: cfb76a9402d0ee2edb54378b2a4735b8f01586b37739281cd507b9e6844289ecb19a6fe378bae4241553f2f4f1de42b7b2b0dd218d9a42b79adc136ac6536d6b
@@ -1 +1 @@
1
- ruby-2.0.0-p353
1
+ ruby-2.2.2
@@ -4,6 +4,8 @@ require "cc/service/response_check"
4
4
  module CC::Service::HTTP
5
5
  extend ActiveSupport::Concern
6
6
 
7
+ REDIRECT_CODES = [302, 307]
8
+
7
9
  module ClassMethods
8
10
  def default_http_options
9
11
  @@default_http_options ||= {
@@ -20,15 +22,19 @@ module CC::Service::HTTP
20
22
  end
21
23
 
22
24
  def service_post(url, body = nil, headers = nil, &block)
23
- block ||= lambda{|*args| Hash.new }
25
+ block ||= lambda{|*_args| Hash.new }
24
26
  response = raw_post(url, body, headers)
25
- {
26
- ok: response.success?,
27
- params: body.as_json,
28
- endpoint_url: url,
29
- status: response.status,
30
- message: "Success"
31
- }.merge(block.call(response))
27
+ formatted_post_response(response, url, body).merge(block.call(response))
28
+ end
29
+
30
+ def service_post_with_redirects(url, body = nil, headers = nil, &block)
31
+ block ||= lambda{|*_args| Hash.new }
32
+ response = raw_post(url, body, headers)
33
+ if REDIRECT_CODES.include?(response.status)
34
+ response = raw_post(response.headers["location"], body, headers)
35
+ end
36
+
37
+ formatted_post_response(response, url, body).merge(block.call(response))
32
38
  end
33
39
 
34
40
  def raw_get(url = nil, params = nil, headers = nil)
@@ -84,4 +90,13 @@ module CC::Service::HTTP
84
90
  @ca_file ||= ENV.fetch("CODECLIMATE_CA_FILE", File.expand_path('../../../../config/cacert.pem', __FILE__))
85
91
  end
86
92
 
93
+ def formatted_post_response(response, url, body)
94
+ {
95
+ ok: response.success?,
96
+ params: body.as_json,
97
+ endpoint_url: url,
98
+ status: response.status,
99
+ message: "Success",
100
+ }
101
+ end
87
102
  end
@@ -1,5 +1,5 @@
1
1
  module CC
2
2
  module Services
3
- VERSION = "1.1.0"
3
+ VERSION = "1.2.0"
4
4
  end
5
5
  end
@@ -43,6 +43,14 @@ class CC::Service::TestCase < Test::Unit::TestCase
43
43
  ).service_post(*args)
44
44
  end
45
45
 
46
+ def service_post_with_redirects(*args)
47
+ service(
48
+ CC::Service,
49
+ { data: "my data" },
50
+ event(:quality, to: "D", from: "C")
51
+ ).service_post_with_redirects(*args)
52
+ end
53
+
46
54
  def stub_http(url, response = nil, &block)
47
55
  block ||= lambda{|*args| response }
48
56
  @stubs.post(url, &block)
@@ -45,6 +45,21 @@ class TestService < CC::Service::TestCase
45
45
  assert_equal 200, response[:status]
46
46
  end
47
47
 
48
+ def test_post_redirect_success
49
+ stub_http("/my/test/url", [307, {"Location" => "/my/redirect/url"}, '{"ok": false, "redirect": true}'])
50
+ stub_http("/my/redirect/url", [200, {}, '{"ok": true, "thing": "123"}'])
51
+
52
+ response = service_post_with_redirects("/my/test/url", {token: "1234"}.to_json, {}) do |response|
53
+ body = JSON.parse(response.body)
54
+ { thing: body["thing"] }
55
+ end
56
+
57
+ assert_true response[:ok]
58
+ assert_equal '{"token":"1234"}', response[:params]
59
+ assert_equal "/my/test/url", response[:endpoint_url]
60
+ assert_equal 200, response[:status]
61
+ end
62
+
48
63
  def test_post_http_failure
49
64
  stub_http("/my/wrong/url", [404, {}, ""])
50
65
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codeclimate-services
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryan Helmkamp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-29 00:00:00.000000000 Z
11
+ date: 2016-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -42,98 +42,98 @@ dependencies:
42
42
  name: nokogiri
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: 1.6.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.6.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: activemodel
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '3.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: activesupport
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '3.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: bundler
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: 1.6.2
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.6.2
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: test-unit
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: mocha
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  description: Service classes for Code Climate
@@ -143,9 +143,9 @@ executables: []
143
143
  extensions: []
144
144
  extra_rdoc_files: []
145
145
  files:
146
- - .gitignore
147
- - .ruby-version
148
- - .travis.yml
146
+ - ".gitignore"
147
+ - ".ruby-version"
148
+ - ".travis.yml"
149
149
  - Gemfile
150
150
  - LICENSE.txt
151
151
  - README.md
@@ -227,17 +227,17 @@ require_paths:
227
227
  - lib
228
228
  required_ruby_version: !ruby/object:Gem::Requirement
229
229
  requirements:
230
- - - '>='
230
+ - - ">="
231
231
  - !ruby/object:Gem::Version
232
232
  version: '0'
233
233
  required_rubygems_version: !ruby/object:Gem::Requirement
234
234
  requirements:
235
- - - '>='
235
+ - - ">="
236
236
  - !ruby/object:Gem::Version
237
237
  version: '0'
238
238
  requirements: []
239
239
  rubyforge_project:
240
- rubygems_version: 2.0.14
240
+ rubygems_version: 2.4.5
241
241
  signing_key:
242
242
  specification_version: 4
243
243
  summary: Service classes for Code Climate