stitches 4.0.0 → 4.0.1

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
  SHA256:
3
- metadata.gz: 3ea8633778064ab7646860c9a0682a7290bfbea3d6f3f091c290f50d22f97de2
4
- data.tar.gz: 0eb1d04f15fc37ab0b0484ae6a73f953426cc5dd1b9efd056e42300caa4c2d04
3
+ metadata.gz: 1224843bf19c711e4058e54025f2507fe4dd0085fb5afdd57d5d383bf8d1b03e
4
+ data.tar.gz: 8f2c1f7f053d711e6419b8e19c23cc123ce7164513b7cb3978091d081612001a
5
5
  SHA512:
6
- metadata.gz: f854d4c3feca2e48b6edfde3174564112b2c0c1d6cb6b93bed960985cc779c1119bcf5ddb65d43d85d3c349d9f440b61e14b1cef27aa6f8c1701768ab5ac1dd5
7
- data.tar.gz: b19d1b967d4a5e0dc57265475683bbfd8e9f255d15ee0af1a8130832d16e73e54b52b7e34fc025fe170a4322cb30cbddb6f2e631f7c81521953e4e48514bb547
6
+ metadata.gz: f16b168bf89994f06816661fb0dda066c248a3c55a22bdeebebf32d4a0e784368b41a460f25a84c9e0c4a694b37d372a24cf739171191925f31df7df7a562be6
7
+ data.tar.gz: 053d0ae0e44945437218bc87206038029065b0ff8b6f8321bbad8b878024bddb16432b0f23136286e6019805a716d541a37a2d5382479b9216a9cde0104bf5d9
@@ -3,9 +3,33 @@
3
3
  ---
4
4
  version: 2
5
5
  jobs:
6
+ generate-and-push-docs:
7
+ docker:
8
+ - image: circleci/ruby:2.7.2
9
+ auth:
10
+ username: "$DOCKERHUB_USERNAME"
11
+ password: "$DOCKERHUB_PASSWORD"
12
+ steps:
13
+ - checkout
14
+ - run: bundle config stitchfix01.jfrog.io $ARTIFACTORY_USER:$ARTIFACTORY_TOKEN
15
+ - run: bundle install --full-index
16
+ - run:
17
+ name: Generate documentation
18
+ command: ' if [[ $(bundle exec rake -T docs:generate:custom) ]]; then echo
19
+ "Generating docs using rake task docs:generate:custom" ; bundle exec rake
20
+ docs:generate:custom ; elif [[ $(bundle exec rake -T docs:generate) ]];
21
+ then echo "Generating docs using rake task docs:generate" ; bundle exec
22
+ rake docs:generate ; else echo "Skipping doc generation" ; exit 0 ; fi '
23
+ - run:
24
+ name: Push documentation to Unwritten
25
+ command: if [[ $(bundle exec rake -T docs:push) ]]; then bundle exec rake
26
+ docs:push; fi
6
27
  release:
7
28
  docker:
8
- - image: circleci/ruby:2.7.1
29
+ - image: circleci/ruby:2.7.2
30
+ auth:
31
+ username: "$DOCKERHUB_USERNAME"
32
+ password: "$DOCKERHUB_PASSWORD"
9
33
  steps:
10
34
  - checkout
11
35
  - run: bundle config stitchfix01.jfrog.io $ARTIFACTORY_USER:$ARTIFACTORY_TOKEN
@@ -17,14 +41,22 @@ jobs:
17
41
  - run:
18
42
  name: Build/release gem to artifactory
19
43
  command: bundle exec rake push_artifactory
20
- ruby-2.7.1-rails-6.0:
44
+ ruby-2.7.2-rails-6.0:
21
45
  docker:
22
- - image: circleci/ruby:2.7.1
46
+ - image: circleci/ruby:2.7.2
47
+ auth:
48
+ username: "$DOCKERHUB_USERNAME"
49
+ password: "$DOCKERHUB_PASSWORD"
23
50
  environment:
24
51
  BUNDLE_GEMFILE: Gemfile.rails-6.0
25
52
  working_directory: "~/stitches"
26
53
  steps:
27
54
  - checkout
55
+ - run:
56
+ name: Check for Gemfile.lock presence
57
+ command: ' if (test -f Gemfile.lock) then echo "Dont commit Gemfile.lock (see
58
+ https://github.com/stitchfix/eng-wiki/blob/master/architecture-decisions/0009-rubygem-dependencies-will-be-managed-more-explicitly.md)"
59
+ 1>&2 ; exit 1 ; else exit 0 ; fi '
28
60
  - run: bundle config stitchfix01.jfrog.io $ARTIFACTORY_USER:$ARTIFACTORY_TOKEN
29
61
  - run: bundle install --full-index
30
62
  - run: bundle exec rspec --format RspecJunitFormatter --out /tmp/test-results/rspec.xml
@@ -42,11 +74,19 @@ jobs:
42
74
  ruby-2.6.6-rails-6.0:
43
75
  docker:
44
76
  - image: circleci/ruby:2.6.6
77
+ auth:
78
+ username: "$DOCKERHUB_USERNAME"
79
+ password: "$DOCKERHUB_PASSWORD"
45
80
  environment:
46
81
  BUNDLE_GEMFILE: Gemfile.rails-6.0
47
82
  working_directory: "~/stitches"
48
83
  steps:
49
84
  - checkout
85
+ - run:
86
+ name: Check for Gemfile.lock presence
87
+ command: ' if (test -f Gemfile.lock) then echo "Dont commit Gemfile.lock (see
88
+ https://github.com/stitchfix/eng-wiki/blob/master/architecture-decisions/0009-rubygem-dependencies-will-be-managed-more-explicitly.md)"
89
+ 1>&2 ; exit 1 ; else exit 0 ; fi '
50
90
  - run: bundle config stitchfix01.jfrog.io $ARTIFACTORY_USER:$ARTIFACTORY_TOKEN
51
91
  - run: bundle install --full-index
52
92
  - run: bundle exec rspec --format RspecJunitFormatter --out /tmp/test-results/rspec.xml
@@ -61,14 +101,22 @@ jobs:
61
101
  when: on_fail
62
102
  - store_test_results:
63
103
  path: "/tmp/test-results"
64
- ruby-2.7.1-rails-5.2:
104
+ ruby-2.7.2-rails-5.2:
65
105
  docker:
66
- - image: circleci/ruby:2.7.1
106
+ - image: circleci/ruby:2.7.2
107
+ auth:
108
+ username: "$DOCKERHUB_USERNAME"
109
+ password: "$DOCKERHUB_PASSWORD"
67
110
  environment:
68
111
  BUNDLE_GEMFILE: Gemfile.rails-5.2
69
112
  working_directory: "~/stitches"
70
113
  steps:
71
114
  - checkout
115
+ - run:
116
+ name: Check for Gemfile.lock presence
117
+ command: ' if (test -f Gemfile.lock) then echo "Dont commit Gemfile.lock (see
118
+ https://github.com/stitchfix/eng-wiki/blob/master/architecture-decisions/0009-rubygem-dependencies-will-be-managed-more-explicitly.md)"
119
+ 1>&2 ; exit 1 ; else exit 0 ; fi '
72
120
  - run: bundle config stitchfix01.jfrog.io $ARTIFACTORY_USER:$ARTIFACTORY_TOKEN
73
121
  - run: bundle install --full-index
74
122
  - run: bundle exec rspec --format RspecJunitFormatter --out /tmp/test-results/rspec.xml
@@ -86,11 +134,19 @@ jobs:
86
134
  ruby-2.6.6-rails-5.2:
87
135
  docker:
88
136
  - image: circleci/ruby:2.6.6
137
+ auth:
138
+ username: "$DOCKERHUB_USERNAME"
139
+ password: "$DOCKERHUB_PASSWORD"
89
140
  environment:
90
141
  BUNDLE_GEMFILE: Gemfile.rails-5.2
91
142
  working_directory: "~/stitches"
92
143
  steps:
93
144
  - checkout
145
+ - run:
146
+ name: Check for Gemfile.lock presence
147
+ command: ' if (test -f Gemfile.lock) then echo "Dont commit Gemfile.lock (see
148
+ https://github.com/stitchfix/eng-wiki/blob/master/architecture-decisions/0009-rubygem-dependencies-will-be-managed-more-explicitly.md)"
149
+ 1>&2 ; exit 1 ; else exit 0 ; fi '
94
150
  - run: bundle config stitchfix01.jfrog.io $ARTIFACTORY_USER:$ARTIFACTORY_TOKEN
95
151
  - run: bundle install --full-index
96
152
  - run: bundle exec rspec --format RspecJunitFormatter --out /tmp/test-results/rspec.xml
@@ -112,16 +168,25 @@ workflows:
112
168
  - release:
113
169
  context: org-global
114
170
  requires:
115
- - ruby-2.7.1-rails-6.0
171
+ - ruby-2.7.2-rails-6.0
116
172
  - ruby-2.6.6-rails-6.0
117
- - ruby-2.7.1-rails-5.2
173
+ - ruby-2.7.2-rails-5.2
118
174
  - ruby-2.6.6-rails-5.2
119
175
  filters:
120
176
  tags:
121
- only: /^[0-9]+\.[0-9]+\.[0-9]+(\.?(RC|rc)[-\.]?\d*)?$/
177
+ only: /^[0-9]+\.[0-9]+\.[0-9]+(\.?(RC|rc)[-\.]?\w*)?$/
178
+ branches:
179
+ ignore: /.*/
180
+ - generate-and-push-docs:
181
+ context: org-global
182
+ requires:
183
+ - release
184
+ filters:
185
+ tags:
186
+ only: /^[0-9]+\.[0-9]+\.[0-9]+(\.?(RC|rc)[-\.]?\w*)?$/
122
187
  branches:
123
188
  ignore: /.*/
124
- - ruby-2.7.1-rails-6.0:
189
+ - ruby-2.7.2-rails-6.0:
125
190
  context: org-global
126
191
  filters:
127
192
  tags:
@@ -131,7 +196,7 @@ workflows:
131
196
  filters:
132
197
  tags:
133
198
  only: *1
134
- - ruby-2.7.1-rails-5.2:
199
+ - ruby-2.7.2-rails-5.2:
135
200
  context: org-global
136
201
  filters:
137
202
  tags:
@@ -150,11 +215,11 @@ workflows:
150
215
  only:
151
216
  - master
152
217
  jobs:
153
- - ruby-2.7.1-rails-6.0:
218
+ - ruby-2.7.2-rails-6.0:
154
219
  context: org-global
155
220
  - ruby-2.6.6-rails-6.0:
156
221
  context: org-global
157
- - ruby-2.7.1-rails-5.2:
222
+ - ruby-2.7.2-rails-5.2:
158
223
  context: org-global
159
224
  - ruby-2.6.6-rails-5.2:
160
225
  context: org-global
@@ -1 +1 @@
1
- 2.7.1
1
+ 2.7.2
@@ -1,19 +1,26 @@
1
1
  require_relative 'allowlist_middleware'
2
2
  module Stitches
3
- # A middleware that requires all API calls to be for versioned JSON. This means that the Accept
4
- # header (available to Rack apps as HTTP_ACCEPT) should be like so:
3
+ # A middleware that requires all API calls to be for versioned JSON or Protobuf.
4
+ #
5
+ # This means that the Accept header (available to Rack apps as HTTP_ACCEPT) should be like so:
5
6
  #
6
7
  # application/json; version=1
7
8
  #
8
9
  # This just checks that you've specified some numeric version. ApiVersionConstraint should be used
9
10
  # to "lock down" the versions you accept.
11
+ #
12
+ # Or in the case of a protobuf encoded payload the header should be like so:
13
+ #
14
+ # application/protobuf
15
+ #
16
+ # There isn't an accepted standard for protobuf encoded payloads but this form is common.
10
17
  class ValidMimeType < Stitches::AllowlistMiddleware
11
18
 
12
19
  protected
13
20
 
14
21
  def do_call(env)
15
22
  accept = String(env["HTTP_ACCEPT"])
16
- if accept =~ %r{application/json} && accept =~ %r{version=\d+}
23
+ if (accept =~ %r{application/json} && accept =~ %r{version=\d+}) || accept =~ %r{application/protobuf}
17
24
  @app.call(env)
18
25
  else
19
26
  not_acceptable_response(accept)
@@ -24,7 +31,7 @@ module Stitches
24
31
 
25
32
  def not_acceptable_response(accept_header)
26
33
  status = 406
27
- body = "Not Acceptable - '#{accept_header}' didn't have the right mime type or version number. We only accept application/json with a version"
34
+ body = "Not Acceptable - '#{accept_header}' didn't have the right mime type or version number. We only accept application/json with a version or application/protobuf"
28
35
  header = { "WWW-Authenticate" => accept_header }
29
36
  Rack::Response.new(body, status, header).finish
30
37
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Stitches
4
- VERSION = '4.0.0'
4
+ VERSION = '4.0.1'
5
5
  end
@@ -132,6 +132,22 @@ describe Stitches::ValidMimeType do
132
132
  end
133
133
  end
134
134
 
135
+ context "protbuf mime type" do
136
+ let(:env) {
137
+ {
138
+ "PATH_INFO" => "/api/ping",
139
+ "HTTP_ACCEPT" => "application/protobuf",
140
+ }
141
+ }
142
+
143
+ before do
144
+ @response = middleware.call(env)
145
+ end
146
+ it "calls through to the rest of the chain" do
147
+ expect(app).to have_received(:call).with(env)
148
+ end
149
+ end
150
+
135
151
  context "unacceptable responses" do
136
152
  before do
137
153
  @response = middleware.call(env)
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stitches
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stitch Fix Engineering
8
8
  - Andrew Peterson
9
9
  - Dave Copeland
10
10
  - Jonathan Dean
11
- autorequire:
11
+ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2020-07-27 00:00:00.000000000 Z
14
+ date: 2020-11-12 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -184,7 +184,7 @@ homepage: https://github.com/stitchfix/stitches
184
184
  licenses:
185
185
  - MIT
186
186
  metadata: {}
187
- post_install_message:
187
+ post_install_message:
188
188
  rdoc_options: []
189
189
  require_paths:
190
190
  - lib
@@ -199,8 +199,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
199
  - !ruby/object:Gem::Version
200
200
  version: '0'
201
201
  requirements: []
202
- rubygems_version: 3.1.2
203
- signing_key:
202
+ rubygems_version: 3.1.4
203
+ signing_key:
204
204
  specification_version: 4
205
205
  summary: You'll be in stitches at how easy it is to create a service at Stitch Fix
206
206
  test_files: