marketplace_opportunity_scraper 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (23) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +1 -0
  3. data/Gemfile.lock +3 -3
  4. data/README.md +7 -1
  5. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/gets_data_that_is_not_on_the_homepage.yml +273 -1542
  6. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/gets_the_correct_opportunity_data.yml +273 -1546
  7. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/returns_all_open_opportunities.yml +272 -1545
  8. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/when_status_is_specified/returns_the_correct_opportunities.yml +7578 -0
  9. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/when_type_is_specified/returns_the_correct_opportunities.yml +275 -271
  10. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_awarded_to/when_an_opportunity_has_been_awarded/1_4_1_1.yml +78 -0
  11. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_awarded_to/when_an_opportunity_has_not_been_awarded/1_4_2_1.yml +78 -0
  12. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_awarded_to/when_an_opportunity_is_still_open/1_4_3_1.yml +78 -0
  13. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_find/gets_the_correct_opportunity_data.yml +13 -11
  14. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_status/when_an_opportunity_has_been_awarded/1_3_4_1.yml +78 -0
  15. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_status/when_an_opportunity_is_awaiting/1_3_2_1.yml +78 -0
  16. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_status/when_an_opportunity_is_cancelled/1_3_3_1.yml +78 -0
  17. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_status/when_an_opportunity_is_still_open/1_3_1_1.yml +78 -0
  18. data/lib/marketplace_opportunity_scraper.rb +2 -0
  19. data/lib/marketplace_opportunity_scraper/opportunity.rb +71 -65
  20. data/lib/marketplace_opportunity_scraper/utils.rb +54 -0
  21. data/lib/marketplace_opportunity_scraper/version.rb +1 -1
  22. metadata +11 -3
  23. data/fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/when_and_invalid_type_is_specified/returns_the_correct_opportunities.yml +0 -78
@@ -0,0 +1,78 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://www.digitalmarketplace.service.gov.uk/digital-outcomes-and-specialists/opportunities/9242
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip,deflate,identity
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Mechanize/2.7.6 Ruby/2.6.0p0 (http://github.com/sparklemotion/mechanize/)
16
+ Accept-Charset:
17
+ - ISO-8859-1,utf-8;q=0.7,*;q=0.7
18
+ Accept-Language:
19
+ - en-us,en;q=0.5
20
+ Cookie:
21
+ - dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlLCJjc3JmX3Rva2VuIjoiZGIzMDQ4N2ZhYmVjYzYyNjk1ODQ1MGVhYzZjOTc5MGQ2YTJlZmUzMSJ9.D5Id2Q.exsXfavGo9E01IGyRg8w20YG-70
22
+ Host:
23
+ - www.digitalmarketplace.service.gov.uk
24
+ Connection:
25
+ - keep-alive
26
+ Keep-Alive:
27
+ - '300'
28
+ response:
29
+ status:
30
+ code: 200
31
+ message: OK
32
+ headers:
33
+ Content-Type:
34
+ - text/html; charset=utf-8
35
+ Transfer-Encoding:
36
+ - chunked
37
+ Connection:
38
+ - keep-alive
39
+ Content-Encoding:
40
+ - gzip
41
+ Date:
42
+ - Fri, 12 Apr 2019 13:02:17 GMT
43
+ Dm-Request-Id:
44
+ - e914551e9358152b
45
+ Server:
46
+ - nginx
47
+ Set-Cookie:
48
+ - dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlLCJjc3JmX3Rva2VuIjoiZGIzMDQ4N2ZhYmVjYzYyNjk1ODQ1MGVhYzZjOTc5MGQ2YTJlZmUzMSJ9.D5Id2Q.exsXfavGo9E01IGyRg8w20YG-70;
49
+ Expires=Fri, 12-Apr-2019 14:02:17 GMT; Secure; HttpOnly; Path=/
50
+ Strict-Transport-Security:
51
+ - max-age=31536000; includeSubdomains
52
+ Vary:
53
+ - Cookie
54
+ X-B3-Spanid:
55
+ - e914551e9358152b
56
+ X-B3-Traceid:
57
+ - e914551e9358152b
58
+ X-Content-Type-Options:
59
+ - nosniff
60
+ X-Frame-Options:
61
+ - DENY
62
+ X-Vcap-Request-Id:
63
+ - a8494c5b-ebea-4355-5cbe-f26f60256f5c
64
+ X-Xss-Protection:
65
+ - 1; mode=block
66
+ X-Cache:
67
+ - Miss from cloudfront
68
+ Via:
69
+ - 1.1 05b9970524a45c2b893693fc638118db.cloudfront.net (CloudFront)
70
+ X-Amz-Cf-Id:
71
+ - qS4ZT9h2mCVNtJOecTjoUYYYKvg348AuxAHFVcUAPgk8QwiBSGD1Sw==
72
+ body:
73
+ encoding: ASCII-8BIT
74
+ string: !binary |-
75
+ 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
76
+ http_version:
77
+ recorded_at: Fri, 12 Apr 2019 13:02:17 GMT
78
+ recorded_with: VCR 4.0.0
@@ -0,0 +1,78 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://www.digitalmarketplace.service.gov.uk/digital-outcomes-and-specialists/opportunities/9482
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip,deflate,identity
12
+ Accept:
13
+ - "*/*"
14
+ User-Agent:
15
+ - Mechanize/2.7.6 Ruby/2.6.0p0 (http://github.com/sparklemotion/mechanize/)
16
+ Accept-Charset:
17
+ - ISO-8859-1,utf-8;q=0.7,*;q=0.7
18
+ Accept-Language:
19
+ - en-us,en;q=0.5
20
+ Cookie:
21
+ - dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlLCJjc3JmX3Rva2VuIjoiZGIzMDQ4N2ZhYmVjYzYyNjk1ODQ1MGVhYzZjOTc5MGQ2YTJlZmUzMSJ9.D5ISVQ.kL-w03ukoywqBuz-lixqpeGOKrE
22
+ Host:
23
+ - www.digitalmarketplace.service.gov.uk
24
+ Connection:
25
+ - keep-alive
26
+ Keep-Alive:
27
+ - '300'
28
+ response:
29
+ status:
30
+ code: 200
31
+ message: OK
32
+ headers:
33
+ Content-Type:
34
+ - text/html; charset=utf-8
35
+ Transfer-Encoding:
36
+ - chunked
37
+ Connection:
38
+ - keep-alive
39
+ Content-Encoding:
40
+ - gzip
41
+ Date:
42
+ - Fri, 12 Apr 2019 13:02:16 GMT
43
+ Dm-Request-Id:
44
+ - ff3bbda81e54fb33
45
+ Server:
46
+ - nginx
47
+ Set-Cookie:
48
+ - dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlLCJjc3JmX3Rva2VuIjoiZGIzMDQ4N2ZhYmVjYzYyNjk1ODQ1MGVhYzZjOTc5MGQ2YTJlZmUzMSJ9.D5Id2A.ELCsMvk1q7QMR5W9pBBMs9EwcQc;
49
+ Expires=Fri, 12-Apr-2019 14:02:16 GMT; Secure; HttpOnly; Path=/
50
+ Strict-Transport-Security:
51
+ - max-age=31536000; includeSubdomains
52
+ Vary:
53
+ - Cookie
54
+ X-B3-Spanid:
55
+ - ff3bbda81e54fb33
56
+ X-B3-Traceid:
57
+ - ff3bbda81e54fb33
58
+ X-Content-Type-Options:
59
+ - nosniff
60
+ X-Frame-Options:
61
+ - DENY
62
+ X-Vcap-Request-Id:
63
+ - b48b1df0-8a78-4c20-6b9f-a73188f79a48
64
+ X-Xss-Protection:
65
+ - 1; mode=block
66
+ X-Cache:
67
+ - Miss from cloudfront
68
+ Via:
69
+ - 1.1 ca1303affdca7d63f1f154f36f5c79b4.cloudfront.net (CloudFront)
70
+ X-Amz-Cf-Id:
71
+ - rq5wjK6yhkBpZvmDZ31XqtLVRfDdCRfDaCp_lV-OUIkwXntPu70xKg==
72
+ body:
73
+ encoding: ASCII-8BIT
74
+ string: !binary |-
75
+ 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
76
+ http_version:
77
+ recorded_at: Fri, 12 Apr 2019 13:02:16 GMT
78
+ recorded_with: VCR 4.0.0
@@ -2,7 +2,9 @@
2
2
 
3
3
  require 'mechanize'
4
4
 
5
+ require 'marketplace_opportunity_scraper/utils'
5
6
  require 'marketplace_opportunity_scraper/opportunity'
6
7
 
7
8
  module MarketplaceOpportunityScraper
9
+ BASE_URL = 'https://www.digitalmarketplace.service.gov.uk'
8
10
  end
@@ -2,7 +2,8 @@
2
2
 
3
3
  module MarketplaceOpportunityScraper
4
4
  class Opportunity
5
- BASE_URL = 'https://www.digitalmarketplace.service.gov.uk'
5
+ extend Utils
6
+
6
7
  ATTRIBUTES = %i[
7
8
  id
8
9
  url
@@ -25,93 +26,98 @@ module MarketplaceOpportunityScraper
25
26
  @page = attrs[:page]
26
27
  end
27
28
 
28
- def budget
29
- text_from_label('Budget range')
30
- end
31
-
32
- def skills
33
- list = find_by_label('Essential skills and experience').search('li')
34
- list.map { |li| li.text.strip }
35
- end
29
+ class << self
30
+ def all(type: nil, status: 'open')
31
+ url = build_url(type, status)
32
+ page = mechanize.get(url)
33
+ opportunities = page.search('.search-result')
36
34
 
37
- def self.all(type = nil)
38
- check_type(type)
39
- url = BASE_URL + '/digital-outcomes-and-specialists/opportunities?q=&statusOpenClosed=open'
40
- url += "&lot=#{type}" unless type.nil?
41
- page = mechanize.get(url)
42
- opportunities = page.search('.search-result')
35
+ opportunities.map { |o| opportunity_from_search_result(o) }
36
+ end
43
37
 
44
- opportunities.map { |o| opportunity_from_search_result(o) }
45
- end
38
+ def find(id)
39
+ opportunity_from_id(id)
40
+ end
46
41
 
47
- def self.find(id)
48
- opportunity_from_id(id)
49
- end
42
+ def mechanize
43
+ @@mechanize ||= Mechanize.new
44
+ end
50
45
 
51
- def self.mechanize
52
- @@mechanize ||= Mechanize.new
53
- end
46
+ private
47
+
48
+ def opportunity_from_id(id)
49
+ url = BASE_URL + '/digital-outcomes-and-specialists/opportunities/' + id.to_s
50
+ page = mechanize.get(url)
51
+
52
+ title = page.at('h1')
53
+
54
+ attrs = {
55
+ page: page,
56
+ id: id,
57
+ title: title.text.strip,
58
+ url: url,
59
+ buyer: page.at('.context').text,
60
+ location: text_from_label(page, 'Location'),
61
+ published: date_from_label(page, 'Published'),
62
+ question_deadline: date_from_label(page, 'Deadline for asking questions'),
63
+ closing: date_from_label(page, 'Closing date for applications'),
64
+ expected_start_date: date_from_label(page, 'Latest start date'),
65
+ description: text_from_label(page, 'Summary of the work')
66
+ }
67
+
68
+ new(attrs)
69
+ end
54
70
 
55
- private
71
+ def opportunity_from_search_result(element)
72
+ title = element.at('.search-result-title')
73
+ url = BASE_URL + title.at('a').attributes['href'].value
56
74
 
57
- def self.check_type(type)
58
- return if type.nil?
59
- raise(ArgumentError, "#{type} is not a valid type. Must be one of #{valid_types.join(' ')}") unless valid_types.include?(type)
75
+ opportunity_from_id(url.split('/').last.to_i)
76
+ end
60
77
  end
61
78
 
62
- def self.valid_types
63
- ['digital-outcomes', 'digital-specialists', 'user-research-participants']
79
+ def budget
80
+ text_from_label('Budget range')
64
81
  end
65
82
 
66
- def self.opportunity_from_id(id)
67
- url = BASE_URL + '/digital-outcomes-and-specialists/opportunities/' + id.to_s
68
- page = mechanize.get(url)
69
-
70
- title = page.at('h1')
71
-
72
- attrs = {
73
- page: page,
74
- id: id,
75
- title: title.text.strip,
76
- url: url,
77
- buyer: page.at('.context').text,
78
- location: text_from_label(page, 'Location'),
79
- published: Date.parse(text_from_label(page, 'Published')),
80
- question_deadline: Date.parse(text_from_label(page, 'Deadline for asking questions')),
81
- closing: Date.parse(text_from_label(page, 'Closing date for applications')),
82
- expected_start_date: Date.parse(text_from_label(page, 'Latest start date')),
83
- description: text_from_label(page, 'Summary of the work')
84
- }
85
-
86
- new(attrs)
83
+ def skills
84
+ list = find_by_label('Essential skills and experience').search('li')
85
+ list.map { |li| li.text.strip }
87
86
  end
88
87
 
89
- def self.opportunity_from_search_result(element)
90
- title = element.at('.search-result-title')
91
- url = BASE_URL + title.at('a').attributes['href'].value
92
-
93
- opportunity_from_id(url.split('/').last.to_i)
88
+ def find_by_label(label)
89
+ self.class.send(:find_by_label, page, label)
94
90
  end
95
91
 
96
- def self.text_from_label(page, label)
97
- find_by_label(page, label).text.strip
92
+ def text_from_label(label)
93
+ self.class.send(:text_from_label, page, label)
98
94
  end
99
95
 
100
- def self.find_by_label(page, label)
101
- selector = "//td[@class='summary-item-field-first']/span[text()='#{label}']/../../td[@class='summary-item-field']"
102
- page.search(selector)
103
- end
96
+ def status
97
+ return 'open' if banner.nil?
98
+ return 'cancelled' if banner.text =~ /cancelled/
99
+ return 'awaiting' if banner.text =~ /closed for applications/
104
100
 
105
- def find_by_label(label)
106
- self.class.send(:find_by_label, page, label)
101
+ 'awarded'
107
102
  end
108
103
 
109
- def text_from_label(label)
110
- self.class.send(:text_from_label, page, label)
104
+ def awarded_to
105
+ return if banner.nil?
106
+
107
+ text = banner.at('h2').text
108
+ return unless text =~ /Awarded to/
109
+
110
+ text.gsub('Awarded to ', '').strip
111
111
  end
112
112
 
113
113
  def page
114
114
  @page ||= @@mechanize.get(@url)
115
115
  end
116
+
117
+ private
118
+
119
+ def banner
120
+ @banner ||= page.at('.banner-temporary-message-without-action')
121
+ end
116
122
  end
117
123
  end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MarketplaceOpportunityScraper
4
+ module Utils
5
+ private
6
+
7
+ def build_url(type, status)
8
+ check_type(type)
9
+ check_status(status)
10
+ url = BASE_URL + '/digital-outcomes-and-specialists/opportunities'
11
+ h = { type: type, statusOpenClosed: status }.reject { |_k, v| v.nil? }
12
+ params = URI.encode_www_form(h)
13
+ "#{url}?#{params}"
14
+ end
15
+
16
+ def check_params(param, type)
17
+ return if param.nil?
18
+
19
+ valid_array = send("valid_#{type}")
20
+ raise(ArgumentError, "#{param} is not a valid #{type}. Must be one of #{valid_array.join(' ')}") unless valid_array.include?(param)
21
+ end
22
+
23
+ def check_type(type)
24
+ check_params(type, 'types')
25
+ end
26
+
27
+ def check_status(status)
28
+ check_params(status, 'statuses')
29
+ end
30
+
31
+ def valid_types
32
+ %w[digital-outcomes digital-specialists user-research-participants]
33
+ end
34
+
35
+ def valid_statuses
36
+ %w[open closed]
37
+ end
38
+
39
+ def text_from_label(page, label)
40
+ find_by_label(page, label).text.strip
41
+ end
42
+
43
+ def date_from_label(page, label)
44
+ Date.parse(text_from_label(page, label))
45
+ rescue ArgumentError
46
+ nil
47
+ end
48
+
49
+ def find_by_label(page, label)
50
+ selector = "//td[@class='summary-item-field-first']/span[text()='#{label}']/../../td[@class='summary-item-field']"
51
+ page.search(selector)
52
+ end
53
+ end
54
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MarketplaceOpportunityScraper
4
- VERSION = '0.0.3'
4
+ VERSION = '0.1.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marketplace_opportunity_scraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stuart Harrison
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-22 00:00:00.000000000 Z
11
+ date: 2019-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -144,11 +144,19 @@ files:
144
144
  - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/gets_data_that_is_not_on_the_homepage.yml
145
145
  - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/gets_the_correct_opportunity_data.yml
146
146
  - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/returns_all_open_opportunities.yml
147
- - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/when_and_invalid_type_is_specified/returns_the_correct_opportunities.yml
147
+ - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/when_status_is_specified/returns_the_correct_opportunities.yml
148
148
  - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_all/when_type_is_specified/returns_the_correct_opportunities.yml
149
+ - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_awarded_to/when_an_opportunity_has_been_awarded/1_4_1_1.yml
150
+ - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_awarded_to/when_an_opportunity_has_not_been_awarded/1_4_2_1.yml
151
+ - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_awarded_to/when_an_opportunity_is_still_open/1_4_3_1.yml
149
152
  - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_find/gets_the_correct_opportunity_data.yml
153
+ - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_status/when_an_opportunity_has_been_awarded/1_3_4_1.yml
154
+ - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_status/when_an_opportunity_is_awaiting/1_3_2_1.yml
155
+ - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_status/when_an_opportunity_is_cancelled/1_3_3_1.yml
156
+ - fixtures/cassettes/MarketplaceOpportunityScraper_Opportunity/_status/when_an_opportunity_is_still_open/1_3_1_1.yml
150
157
  - lib/marketplace_opportunity_scraper.rb
151
158
  - lib/marketplace_opportunity_scraper/opportunity.rb
159
+ - lib/marketplace_opportunity_scraper/utils.rb
152
160
  - lib/marketplace_opportunity_scraper/version.rb
153
161
  - marketplace_opportunity_scraper.gemspec
154
162
  homepage: https://github.com/dxw/marketplace_opportunity_scraper
@@ -1,78 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: get
5
- uri: https://www.digitalmarketplace.service.gov.uk/digital-outcomes-and-specialists/opportunities?lot=not-a-type&q=&statusOpenClosed=open
6
- body:
7
- encoding: US-ASCII
8
- string: ''
9
- headers:
10
- Accept-Encoding:
11
- - gzip,deflate,identity
12
- Accept:
13
- - "*/*"
14
- User-Agent:
15
- - Mechanize/2.7.6 Ruby/2.6.0p0 (http://github.com/sparklemotion/mechanize/)
16
- Accept-Charset:
17
- - ISO-8859-1,utf-8;q=0.7,*;q=0.7
18
- Accept-Language:
19
- - en-us,en;q=0.5
20
- Cookie:
21
- - dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlLCJjc3JmX3Rva2VuIjoiOTVjNjM4ODM4NDdjMzhhMDc0ZDg2NzlkNzJhMzZiMWJiMzY1MDJjZSJ9.D3ZEjw.ylvMEx_SZpW9j0BoWs9-tVeHFpA
22
- Host:
23
- - www.digitalmarketplace.service.gov.uk
24
- Connection:
25
- - keep-alive
26
- Keep-Alive:
27
- - '300'
28
- response:
29
- status:
30
- code: 200
31
- message: OK
32
- headers:
33
- Content-Type:
34
- - text/html; charset=utf-8
35
- Transfer-Encoding:
36
- - chunked
37
- Connection:
38
- - keep-alive
39
- Content-Encoding:
40
- - gzip
41
- Date:
42
- - Fri, 22 Mar 2019 10:07:34 GMT
43
- Dm-Request-Id:
44
- - 0bf2605f40e83721
45
- Server:
46
- - nginx
47
- Set-Cookie:
48
- - dm_session=eyJfZnJlc2giOmZhbHNlLCJfcGVybWFuZW50Ijp0cnVlLCJjc3JmX3Rva2VuIjoiOTVjNjM4ODM4NDdjMzhhMDc0ZDg2NzlkNzJhMzZiMWJiMzY1MDJjZSJ9.D3ZFZg.2T50ain_fevKLgv1JDHzKxa9S0U;
49
- Expires=Fri, 22-Mar-2019 11:07:34 GMT; Secure; HttpOnly; Path=/
50
- Strict-Transport-Security:
51
- - max-age=31536000; includeSubdomains
52
- Vary:
53
- - Cookie
54
- X-B3-Spanid:
55
- - 0bf2605f40e83721
56
- X-B3-Traceid:
57
- - 0bf2605f40e83721
58
- X-Content-Type-Options:
59
- - nosniff
60
- X-Frame-Options:
61
- - DENY
62
- X-Vcap-Request-Id:
63
- - a7bdb592-3e8e-4f19-407f-79eba5c61217
64
- X-Xss-Protection:
65
- - 1; mode=block
66
- X-Cache:
67
- - Miss from cloudfront
68
- Via:
69
- - 1.1 17800a2a8b6ee084f4a303d100211edb.cloudfront.net (CloudFront)
70
- X-Amz-Cf-Id:
71
- - 2xc0bVtrnWw2or9aY-WhimLwmc5Np94WraVj59lFX5ntsm1JlDAlxg==
72
- body:
73
- encoding: ASCII-8BIT
74
- string: !binary |-
75
- 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
76
- http_version:
77
- recorded_at: Fri, 22 Mar 2019 10:07:34 GMT
78
- recorded_with: VCR 4.0.0