bugsnag-api 1.0.3 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +14 -3
  3. data/CHANGELOG.md +32 -0
  4. data/CONTRIBUTING.md +40 -0
  5. data/README.md +126 -111
  6. data/bugsnag-api.gemspec +4 -3
  7. data/lib/bugsnag/api/client.rb +18 -9
  8. data/lib/bugsnag/api/client/collaborators.rb +87 -0
  9. data/lib/bugsnag/api/client/comments.rb +31 -40
  10. data/lib/bugsnag/api/client/currentuser.rb +33 -0
  11. data/lib/bugsnag/api/client/errors.rb +45 -51
  12. data/lib/bugsnag/api/client/eventfields.rb +50 -0
  13. data/lib/bugsnag/api/client/events.rb +38 -32
  14. data/lib/bugsnag/api/client/organizations.rb +46 -0
  15. data/lib/bugsnag/api/client/pivots.rb +43 -0
  16. data/lib/bugsnag/api/client/projects.rb +37 -63
  17. data/lib/bugsnag/api/client/trends.rb +38 -0
  18. data/lib/bugsnag/api/error.rb +4 -0
  19. data/lib/bugsnag/api/version.rb +1 -1
  20. data/spec/bugsnag/api/client/collaborators_spec.rb +101 -0
  21. data/spec/bugsnag/api/client/comments_spec.rb +42 -30
  22. data/spec/bugsnag/api/client/currentuser_spec.rb +57 -0
  23. data/spec/bugsnag/api/client/errors_spec.rb +44 -41
  24. data/spec/bugsnag/api/client/eventfields_spec.rb +56 -0
  25. data/spec/bugsnag/api/client/events_spec.rb +41 -29
  26. data/spec/bugsnag/api/client/organizations_spec.rb +53 -0
  27. data/spec/bugsnag/api/client/pivots_spec.rb +49 -0
  28. data/spec/bugsnag/api/client/projects_spec.rb +35 -59
  29. data/spec/bugsnag/api/client/trends_spec.rb +44 -0
  30. data/spec/bugsnag/api/client_spec.rb +8 -3
  31. data/spec/cassettes/Bugsnag_Api_Client/_get/handles_query_params.yml +45 -27
  32. data/spec/cassettes/Bugsnag_Api_Client/_last_response/caches_the_last_agent_response.yml +45 -27
  33. data/spec/cassettes/Bugsnag_Api_Client_Collaborators/_invitecollaborator/creates_and_returns_a_collaborator.yml +80 -0
  34. data/spec/cassettes/Bugsnag_Api_Client_Collaborators/_invitecollaborator/invites_multiple_collaborators.yml +80 -0
  35. data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_collaborator/returns_a_collaborator.yml +157 -0
  36. data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_collaborators/returns_a_list_of_all_organization_collaborators.yml +160 -0
  37. data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_collaborators/returns_a_list_of_all_project_collaborators.yml +160 -0
  38. data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_collaborators/throws_an_argument_error_if_neither_org_id_or_project_id_are_provided.yml +80 -0
  39. data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_delete_collaborator/deletes_a_collaborator.yml +80 -0
  40. data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_update_collaborator_permissions/updates_and_returns_the_collaborator.yml +157 -0
  41. data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_view_collaborator_projects/returns_a_list_of_projects_belonging_to_the_collaborator.yml +159 -0
  42. data/spec/cassettes/Bugsnag_Api_Client_Comments/_create_comment/creates_a_comment_on_the_error.yml +82 -0
  43. data/spec/cassettes/Bugsnag_Api_Client_Comments/given_a_comment_has_been_created/_comment/retrieves_the_comment_specified.yml +159 -0
  44. data/spec/cassettes/Bugsnag_Api_Client_Comments/given_a_comment_has_been_created/_comments/retrieves_all_comments_on_an_error.yml +161 -0
  45. data/spec/cassettes/Bugsnag_Api_Client_Comments/given_a_comment_has_been_created/_delete_comment/deletes_the_comment_and_returns_true.yml +82 -0
  46. data/spec/cassettes/Bugsnag_Api_Client_Comments/given_a_comment_has_been_created/_update_comment/updates_the_message_on_a_comment.yml +159 -0
  47. data/spec/cassettes/Bugsnag_Api_Client_CurrentUser/_list_organizations/when_using_auth_token/returns_the_organization_the_auth_token_belongs_to.yml +81 -0
  48. data/spec/cassettes/Bugsnag_Api_Client_CurrentUser/_list_organizations/when_using_user_credentials/returns_users_organizations.yml +85 -0
  49. data/spec/cassettes/Bugsnag_Api_Client_CurrentUser/_list_projects/when_using_auth_token/lists_current_user_s_projects_in_the_organization.yml +82 -0
  50. data/spec/cassettes/Bugsnag_Api_Client_CurrentUser/_list_projects/when_using_user_credentials/lists_current_user_s_projects_in_the_organization.yml +86 -0
  51. data/spec/cassettes/Bugsnag_Api_Client_Errors/_error/returns_a_single_error.yml +82 -0
  52. data/spec/cassettes/Bugsnag_Api_Client_Errors/_errors/returns_errors_on_the_project.yml +84 -0
  53. data/spec/cassettes/Bugsnag_Api_Client_Errors/_update_errors/updates_and_returns_the_updated_errors.yml +80 -0
  54. data/spec/cassettes/Bugsnag_Api_Client_Events/_error_events/lists_all_error_events.yml +84 -0
  55. data/spec/cassettes/Bugsnag_Api_Client_Events/_event/returns_the_specified_event.yml +253 -0
  56. data/spec/cassettes/Bugsnag_Api_Client_Events/_events/returns_the_a_list_of_project_errors.yml +84 -0
  57. data/spec/cassettes/Bugsnag_Api_Client_Events/_latest_event/returns_the_last_event_on_an_error.yml +253 -0
  58. data/spec/cassettes/Bugsnag_Api_Client_Organizations/_create_organization/creates_a_new_organization.yml +84 -0
  59. data/spec/cassettes/Bugsnag_Api_Client_Organizations/with_organization/_delete_organization/deletes_the_organization.yml +159 -0
  60. data/spec/cassettes/Bugsnag_Api_Client_Organizations/with_organization/_organization/returns_the_requested_organization.yml +165 -0
  61. data/spec/cassettes/Bugsnag_Api_Client_Organizations/with_organization/_update_organization/updates_and_returns_the_organization.yml +165 -0
  62. data/spec/cassettes/Bugsnag_Api_Client_Projects/_create_project/creates_a_new_project.yml +80 -0
  63. data/spec/cassettes/Bugsnag_Api_Client_Projects/given_a_project/_delete_project/deletes_the_project.yml +151 -0
  64. data/spec/cassettes/Bugsnag_Api_Client_Projects/given_a_project/_project/returns_the_requested_project.yml +157 -0
  65. data/spec/cassettes/Bugsnag_Api_Client_Projects/given_a_project/_regenerate_api_key/removes_the_current_api_key_and_replaces_it_with_a_new_api_key.yml +157 -0
  66. data/spec/cassettes/Bugsnag_Api_Client_Projects/given_a_project/_update_project/updates_and_returns_the_project.yml +157 -0
  67. data/spec/cassettes/Bugsnag_Api_Client_Trends/_trends_buckets/returns_a_list_of_error_trends_in_bucket_form.yml +80 -0
  68. data/spec/cassettes/Bugsnag_Api_Client_Trends/_trends_buckets/returns_a_list_of_project_trends_in_bucket_form.yml +80 -0
  69. data/spec/cassettes/Bugsnag_Api_Client_Trends/_trends_resolution/returns_a_list_of_project_trends_in_resolution_form.yml +80 -0
  70. data/spec/cassettes/Bugsnag_Api_Client_Trends/_trends_resolution/returns_a_list_of_trends_in_resolution_form.yml +80 -0
  71. data/spec/spec_helper.rb +29 -27
  72. metadata +124 -83
  73. data/lib/bugsnag/api/client/accounts.rb +0 -44
  74. data/lib/bugsnag/api/client/users.rb +0 -99
  75. data/spec/bugsnag/api/client/accounts_spec.rb +0 -45
  76. data/spec/bugsnag/api/client/users_spec.rb +0 -105
  77. data/spec/cassettes/Bugsnag_Api_Client_Accounts/_account/returns_the_requested_account.yml +0 -49
  78. data/spec/cassettes/Bugsnag_Api_Client_Accounts/_account/when_using_account_credentials/returns_the_account.yml +0 -51
  79. data/spec/cassettes/Bugsnag_Api_Client_Accounts/_accounts/returns_all_accounts.yml +0 -49
  80. data/spec/cassettes/Bugsnag_Api_Client_Comments/_comments/returns_all_comments_on_an_error.yml +0 -107
  81. data/spec/cassettes/Bugsnag_Api_Client_Comments/_create_comment/created_a_comment.yml +0 -51
  82. data/spec/cassettes/Bugsnag_Api_Client_Comments/with_comment/_comment/returns_a_comment.yml +0 -97
  83. data/spec/cassettes/Bugsnag_Api_Client_Comments/with_comment/_delete_comment/deletes_an_existing_comment.yml +0 -92
  84. data/spec/cassettes/Bugsnag_Api_Client_Comments/with_comment/_update_comment/updates_an_existing_comment.yml +0 -97
  85. data/spec/cassettes/Bugsnag_Api_Client_Errors/_errors/returns_all_errors_on_an_project.yml +0 -48
  86. data/spec/cassettes/Bugsnag_Api_Client_Errors/with_error/_error/returns_an_error.yml +0 -48
  87. data/spec/cassettes/Bugsnag_Api_Client_Errors/with_error/_reopen_error/reopens_the_error.yml +0 -48
  88. data/spec/cassettes/Bugsnag_Api_Client_Errors/with_error/_resolve_error/resolves_the_error.yml +0 -48
  89. data/spec/cassettes/Bugsnag_Api_Client_Errors/with_error/_update_error/updates_the_error.yml +0 -48
  90. data/spec/cassettes/Bugsnag_Api_Client_Events/_error_events/returns_all_events_on_an_error.yml +0 -64
  91. data/spec/cassettes/Bugsnag_Api_Client_Events/_project_events/returns_all_events_on_a_project.yml +0 -64
  92. data/spec/cassettes/Bugsnag_Api_Client_Events/with_event/_event/returns_an_event.yml +0 -56
  93. data/spec/cassettes/Bugsnag_Api_Client_Projects/_account_projects/returns_all_projects_on_an_account.yml +0 -61
  94. data/spec/cassettes/Bugsnag_Api_Client_Projects/_account_projects/when_using_account_credentials/returns_all_projects.yml +0 -63
  95. data/spec/cassettes/Bugsnag_Api_Client_Projects/_create_project/creates_a_project_on_an_account.yml +0 -50
  96. data/spec/cassettes/Bugsnag_Api_Client_Projects/_user_projects/returns_all_projects_for_a_user.yml +0 -61
  97. data/spec/cassettes/Bugsnag_Api_Client_Projects/with_project/_delete_project/deletes_an_existing_project.yml +0 -91
  98. data/spec/cassettes/Bugsnag_Api_Client_Projects/with_project/_project/returns_a_project.yml +0 -95
  99. data/spec/cassettes/Bugsnag_Api_Client_Projects/with_project/_update_project/updates_an_existing_project.yml +0 -95
  100. data/spec/cassettes/Bugsnag_Api_Client_Users/_account_users/returns_all_users_on_an_account.yml +0 -49
  101. data/spec/cassettes/Bugsnag_Api_Client_Users/_account_users/when_using_account_credentials/returns_all_users.yml +0 -51
  102. data/spec/cassettes/Bugsnag_Api_Client_Users/_invite_user/invites_a_user_to_an_account.yml +0 -48
  103. data/spec/cassettes/Bugsnag_Api_Client_Users/_project_users/returns_all_users_for_a_project.yml +0 -49
  104. data/spec/cassettes/Bugsnag_Api_Client_Users/_user/returns_a_user.yml +0 -48
  105. data/spec/cassettes/Bugsnag_Api_Client_Users/_user/when_using_user_credentials/returns_the_authed_user.yml +0 -48
  106. data/spec/cassettes/Bugsnag_Api_Client_Users/with_user/_remove_user/removes_a_user_from_an_account.yml +0 -89
  107. data/spec/cassettes/Bugsnag_Api_Client_Users/with_user/_update_user_permissions/updates_a_users_permissions.yml +0 -93
@@ -0,0 +1,82 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID/errors/BUGSNAG_ERROR_ID
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Bugsnag API Ruby Gem 1.0.3
12
+ Content-Type:
13
+ - application/json
14
+ X-Version:
15
+ - '2'
16
+ Authorization:
17
+ - token BUGSNAG_AUTH_TOKEN
18
+ Accept-Encoding:
19
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
+ Accept:
21
+ - "*/*"
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Server:
28
+ - nginx
29
+ Date:
30
+ - Mon, 09 Oct 2017 14:19:58 GMT
31
+ Content-Type:
32
+ - application/json; charset=utf-8
33
+ Etag:
34
+ - W/"1f9181cfb0d3b74882f2aea3e83df4c4"
35
+ Cache-Control:
36
+ - max-age=0, private, must-revalidate
37
+ X-Request-Id:
38
+ - fcd1f08e-2e34-40d4-a570-fa74572f577b
39
+ X-Runtime:
40
+ - '0.304700'
41
+ Vary:
42
+ - Origin
43
+ X-Ratelimit-Limit:
44
+ - '10'
45
+ X-Ratelimit-Remaining:
46
+ - '2'
47
+ Content-Security-Policy:
48
+ - 'default-src ''self''; child-src https://*.stripe.com headway-widget.net;
49
+ connect-src ''self'' https://api.bugsnag.com https://*.stripe.com https://bugsnag.zendesk.com
50
+ https://api.lever.co; font-src ''self'' https://maxcdn.bootstrapcdn.com; img-src
51
+ ''self'' data: https://notify.bugsnag.com https://*.stripe.com https://maxcdn.bootstrapcdn.com;
52
+ script-src ''self'' https://d2wy8f7a9ursnm.cloudfront.net https://*.stripe.com
53
+ https://maxcdn.bootstrapcdn.com https://code.jquery.com https://assets.zendesk.com
54
+ https://cdn.headwayapp.co; style-src ''self'' ''unsafe-inline'' https://maxcdn.bootstrapcdn.com'
55
+ X-Content-Type-Options:
56
+ - nosniff
57
+ X-Download-Options:
58
+ - noopen
59
+ X-Frame-Options:
60
+ - DENY
61
+ X-Permitted-Cross-Domain-Policies:
62
+ - none
63
+ X-Xss-Protection:
64
+ - 1; mode=block
65
+ X-Robots-Tag:
66
+ - noindex, nofollow
67
+ Strict-Transport-Security:
68
+ - max-age=31536000
69
+ Via:
70
+ - 1.1 google
71
+ Alt-Svc:
72
+ - clear
73
+ Transfer-Encoding:
74
+ - chunked
75
+ body:
76
+ encoding: ASCII-8BIT
77
+ string: '{"id":"BUGSNAG_ERROR_ID","project_id":"BUGSNAG_PROJECT_ID","error_class":"RuntimeError","message":"Bugsnag
78
+ Padrino demo says: It crashed! Go check bugsnag.com for a new notification!","context":"GET
79
+ /crash","severity":"error","original_severity":"error","overridden_severity":null,"events":1,"unthrottled_occurrence_count":1,"users":1,"first_seen":"2017-10-09T14:18:25.000Z","last_seen":"2017-10-09T14:18:25.000Z","first_seen_unfiltered":"2017-10-09T14:18:25.000Z","last_seen_unfiltered":"2017-10-09T14:18:25.176Z","status":"fixed","created_issue":{},"reopen_rules":null,"assigned_collaborator_id":null,"comment_count":0,"missing_dsyms":[],"release_stages":["development"],"grouping_reason":"frame-inner","grouping_fields":{"file":"/Users/amoinet/Desktop/libraries/bugsnag-ruby/example/padrino/app/app.rb","lineNumber":74,"errorClass":"RuntimeError"},"url":"https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID/errors/BUGSNAG_ERROR_ID","project_url":"https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID"}'
80
+ http_version:
81
+ recorded_at: Mon, 09 Oct 2017 14:19:57 GMT
82
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,84 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID/errors
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Bugsnag API Ruby Gem 1.0.3
12
+ Content-Type:
13
+ - application/json
14
+ X-Version:
15
+ - '2'
16
+ Authorization:
17
+ - token BUGSNAG_AUTH_TOKEN
18
+ Accept-Encoding:
19
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
+ Accept:
21
+ - "*/*"
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Server:
28
+ - nginx
29
+ Date:
30
+ - Mon, 09 Oct 2017 14:19:57 GMT
31
+ Content-Type:
32
+ - application/json; charset=utf-8
33
+ X-Total-Count:
34
+ - '1'
35
+ Etag:
36
+ - W/"fc7fc5baca3c032a291fe953d1d3094c"
37
+ Cache-Control:
38
+ - max-age=0, private, must-revalidate
39
+ X-Request-Id:
40
+ - 5d803477-6748-4729-9869-744d173aed30
41
+ X-Runtime:
42
+ - '0.266172'
43
+ Vary:
44
+ - Origin
45
+ X-Ratelimit-Limit:
46
+ - '10'
47
+ X-Ratelimit-Remaining:
48
+ - '3'
49
+ Content-Security-Policy:
50
+ - 'default-src ''self''; child-src https://*.stripe.com headway-widget.net;
51
+ connect-src ''self'' https://api.bugsnag.com https://*.stripe.com https://bugsnag.zendesk.com
52
+ https://api.lever.co; font-src ''self'' https://maxcdn.bootstrapcdn.com; img-src
53
+ ''self'' data: https://notify.bugsnag.com https://*.stripe.com https://maxcdn.bootstrapcdn.com;
54
+ script-src ''self'' https://d2wy8f7a9ursnm.cloudfront.net https://*.stripe.com
55
+ https://maxcdn.bootstrapcdn.com https://code.jquery.com https://assets.zendesk.com
56
+ https://cdn.headwayapp.co; style-src ''self'' ''unsafe-inline'' https://maxcdn.bootstrapcdn.com'
57
+ X-Content-Type-Options:
58
+ - nosniff
59
+ X-Download-Options:
60
+ - noopen
61
+ X-Frame-Options:
62
+ - DENY
63
+ X-Permitted-Cross-Domain-Policies:
64
+ - none
65
+ X-Xss-Protection:
66
+ - 1; mode=block
67
+ X-Robots-Tag:
68
+ - noindex, nofollow
69
+ Strict-Transport-Security:
70
+ - max-age=31536000
71
+ Via:
72
+ - 1.1 google
73
+ Alt-Svc:
74
+ - clear
75
+ Transfer-Encoding:
76
+ - chunked
77
+ body:
78
+ encoding: ASCII-8BIT
79
+ string: '[{"id":"BUGSNAG_ERROR_ID","project_id":"BUGSNAG_PROJECT_ID","error_class":"RuntimeError","message":"Bugsnag
80
+ Padrino demo says: It crashed! Go check bugsnag.com for a new notification!","context":"GET
81
+ /crash","severity":"error","original_severity":"error","overridden_severity":null,"events":1,"unthrottled_occurrence_count":1,"users":1,"first_seen":"2017-10-09T14:18:25.000Z","last_seen":"2017-10-09T14:18:25.000Z","first_seen_unfiltered":"2017-10-09T14:18:25.000Z","last_seen_unfiltered":"2017-10-09T14:18:25.176Z","status":"fixed","created_issue":{},"reopen_rules":null,"assigned_collaborator_id":null,"comment_count":0,"missing_dsyms":[],"release_stages":["development"],"grouping_reason":"frame-inner","grouping_fields":{"file":"/Users/amoinet/Desktop/libraries/bugsnag-ruby/example/padrino/app/app.rb","lineNumber":74,"errorClass":"RuntimeError"},"url":"https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID/errors/BUGSNAG_ERROR_ID","project_url":"https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID"}]'
82
+ http_version:
83
+ recorded_at: Mon, 09 Oct 2017 14:19:56 GMT
84
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,80 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: patch
5
+ uri: https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID/errors?error_ids=BUGSNAG_ERROR_ID
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"severity":"warn","operation":"fix"}'
9
+ headers:
10
+ User-Agent:
11
+ - Bugsnag API Ruby Gem 1.0.3
12
+ Content-Type:
13
+ - application/json
14
+ X-Version:
15
+ - '2'
16
+ Authorization:
17
+ - token BUGSNAG_AUTH_TOKEN
18
+ Accept-Encoding:
19
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
+ Accept:
21
+ - "*/*"
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Server:
28
+ - nginx
29
+ Date:
30
+ - Mon, 09 Oct 2017 14:19:57 GMT
31
+ Content-Type:
32
+ - application/json; charset=utf-8
33
+ Etag:
34
+ - W/"e6cc93de28b5cf22c1c149382ee16d61"
35
+ Cache-Control:
36
+ - max-age=0, private, must-revalidate
37
+ X-Request-Id:
38
+ - bb20172a-9970-4255-a412-dc332cf14665
39
+ X-Runtime:
40
+ - '0.232163'
41
+ Vary:
42
+ - Origin
43
+ X-Ratelimit-Limit:
44
+ - '10'
45
+ X-Ratelimit-Remaining:
46
+ - '4'
47
+ Content-Security-Policy:
48
+ - 'default-src ''self''; child-src https://*.stripe.com headway-widget.net;
49
+ connect-src ''self'' https://api.bugsnag.com https://*.stripe.com https://bugsnag.zendesk.com
50
+ https://api.lever.co; font-src ''self'' https://maxcdn.bootstrapcdn.com; img-src
51
+ ''self'' data: https://notify.bugsnag.com https://*.stripe.com https://maxcdn.bootstrapcdn.com;
52
+ script-src ''self'' https://d2wy8f7a9ursnm.cloudfront.net https://*.stripe.com
53
+ https://maxcdn.bootstrapcdn.com https://code.jquery.com https://assets.zendesk.com
54
+ https://cdn.headwayapp.co; style-src ''self'' ''unsafe-inline'' https://maxcdn.bootstrapcdn.com'
55
+ X-Content-Type-Options:
56
+ - nosniff
57
+ X-Download-Options:
58
+ - noopen
59
+ X-Frame-Options:
60
+ - DENY
61
+ X-Permitted-Cross-Domain-Policies:
62
+ - none
63
+ X-Xss-Protection:
64
+ - 1; mode=block
65
+ X-Robots-Tag:
66
+ - noindex, nofollow
67
+ Strict-Transport-Security:
68
+ - max-age=31536000
69
+ Via:
70
+ - 1.1 google
71
+ Alt-Svc:
72
+ - clear
73
+ Transfer-Encoding:
74
+ - chunked
75
+ body:
76
+ encoding: ASCII-8BIT
77
+ string: '{"operation":"fix","BUGSNAG_ERROR_ID":{"assigned_collaborator_id":null,"created_issue":{},"reopen_rules":null,"status":"fixed"}}'
78
+ http_version:
79
+ recorded_at: Mon, 09 Oct 2017 14:19:56 GMT
80
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,84 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID/errors/BUGSNAG_ERROR_ID/events
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Bugsnag API Ruby Gem 1.0.3
12
+ Content-Type:
13
+ - application/json
14
+ X-Version:
15
+ - '2'
16
+ Authorization:
17
+ - token BUGSNAG_AUTH_TOKEN
18
+ Accept-Encoding:
19
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
+ Accept:
21
+ - "*/*"
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Server:
28
+ - nginx
29
+ Date:
30
+ - Mon, 09 Oct 2017 14:23:13 GMT
31
+ Content-Type:
32
+ - application/json; charset=utf-8
33
+ X-Total-Count:
34
+ - '1'
35
+ Etag:
36
+ - W/"bf2feb969a8cf69c47e1491e2aec2a78"
37
+ Cache-Control:
38
+ - max-age=0, private, must-revalidate
39
+ X-Request-Id:
40
+ - 54415de3-4deb-42d1-a95e-f0fb701ac9d5
41
+ X-Runtime:
42
+ - '0.339926'
43
+ Vary:
44
+ - Origin
45
+ X-Ratelimit-Limit:
46
+ - '10'
47
+ X-Ratelimit-Remaining:
48
+ - '9'
49
+ Content-Security-Policy:
50
+ - 'default-src ''self''; child-src https://*.stripe.com headway-widget.net;
51
+ connect-src ''self'' https://api.bugsnag.com https://*.stripe.com https://bugsnag.zendesk.com
52
+ https://api.lever.co; font-src ''self'' https://maxcdn.bootstrapcdn.com; img-src
53
+ ''self'' data: https://notify.bugsnag.com https://*.stripe.com https://maxcdn.bootstrapcdn.com;
54
+ script-src ''self'' https://d2wy8f7a9ursnm.cloudfront.net https://*.stripe.com
55
+ https://maxcdn.bootstrapcdn.com https://code.jquery.com https://assets.zendesk.com
56
+ https://cdn.headwayapp.co; style-src ''self'' ''unsafe-inline'' https://maxcdn.bootstrapcdn.com'
57
+ X-Content-Type-Options:
58
+ - nosniff
59
+ X-Download-Options:
60
+ - noopen
61
+ X-Frame-Options:
62
+ - DENY
63
+ X-Permitted-Cross-Domain-Policies:
64
+ - none
65
+ X-Xss-Protection:
66
+ - 1; mode=block
67
+ X-Robots-Tag:
68
+ - noindex, nofollow
69
+ Strict-Transport-Security:
70
+ - max-age=31536000
71
+ Via:
72
+ - 1.1 google
73
+ Alt-Svc:
74
+ - clear
75
+ Transfer-Encoding:
76
+ - chunked
77
+ body:
78
+ encoding: ASCII-8BIT
79
+ string: '[{"id":"BUGSNAG_EVENT_ID","url":"https://api.bugsnag.com/events/BUGSNAG_EVENT_ID","project_url":"https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID","is_full_report":false,"error_id":"BUGSNAG_ERROR_ID","receivedAt":"2017-10-09T14:18:25.000Z","exceptions":[{"errorClass":"RuntimeError","message":"Bugsnag
80
+ Padrino demo says: It crashed! Go check bugsnag.com for a new notification!"}],"severity":"error","context":"GET
81
+ /crash","unhandled":true,"app":{"releaseStage":"development"}}]'
82
+ http_version:
83
+ recorded_at: Mon, 09 Oct 2017 14:23:12 GMT
84
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,253 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID/events/BUGSNAG_EVENT_ID
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Bugsnag API Ruby Gem 1.0.3
12
+ Content-Type:
13
+ - application/json
14
+ X-Version:
15
+ - '2'
16
+ Authorization:
17
+ - token BUGSNAG_AUTH_TOKEN
18
+ Accept-Encoding:
19
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
+ Accept:
21
+ - "*/*"
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Server:
28
+ - nginx
29
+ Date:
30
+ - Mon, 09 Oct 2017 14:20:05 GMT
31
+ Content-Type:
32
+ - application/json; charset=utf-8
33
+ Etag:
34
+ - W/"0401f7a63d242024c1b50e1c30154845"
35
+ Cache-Control:
36
+ - max-age=0, private, must-revalidate
37
+ X-Request-Id:
38
+ - 3cc47a54-26f6-47f5-bf03-d2fbbf449612
39
+ X-Runtime:
40
+ - '0.287969'
41
+ Vary:
42
+ - Origin
43
+ X-Ratelimit-Limit:
44
+ - '10'
45
+ X-Ratelimit-Remaining:
46
+ - '2'
47
+ Content-Security-Policy:
48
+ - 'default-src ''self''; child-src https://*.stripe.com headway-widget.net;
49
+ connect-src ''self'' https://api.bugsnag.com https://*.stripe.com https://bugsnag.zendesk.com
50
+ https://api.lever.co; font-src ''self'' https://maxcdn.bootstrapcdn.com; img-src
51
+ ''self'' data: https://notify.bugsnag.com https://*.stripe.com https://maxcdn.bootstrapcdn.com;
52
+ script-src ''self'' https://d2wy8f7a9ursnm.cloudfront.net https://*.stripe.com
53
+ https://maxcdn.bootstrapcdn.com https://code.jquery.com https://assets.zendesk.com
54
+ https://cdn.headwayapp.co; style-src ''self'' ''unsafe-inline'' https://maxcdn.bootstrapcdn.com'
55
+ X-Content-Type-Options:
56
+ - nosniff
57
+ X-Download-Options:
58
+ - noopen
59
+ X-Frame-Options:
60
+ - DENY
61
+ X-Permitted-Cross-Domain-Policies:
62
+ - none
63
+ X-Xss-Protection:
64
+ - 1; mode=block
65
+ X-Robots-Tag:
66
+ - noindex, nofollow
67
+ Strict-Transport-Security:
68
+ - max-age=31536000
69
+ Via:
70
+ - 1.1 google
71
+ Alt-Svc:
72
+ - clear
73
+ Transfer-Encoding:
74
+ - chunked
75
+ body:
76
+ encoding: ASCII-8BIT
77
+ string: '{"id":"BUGSNAG_EVENT_ID","url":"https://api.bugsnag.com/events/BUGSNAG_EVENT_ID","project_url":"https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID","is_full_report":true,"error_id":"BUGSNAG_ERROR_ID","received_at":"2017-10-09T14:18:25.000Z","exceptions":[{"error_class":"RuntimeError","message":"Bugsnag
78
+ Padrino demo says: It crashed! Go check bugsnag.com for a new notification!","stacktrace":[{"column_number":null,"in_project":null,"line_number":74,"method":"block
79
+ in \u003cclass:App\u003e","file":"/Users/amoinet/Desktop/libraries/bugsnag-ruby/example/padrino/app/app.rb","code":{"71":" end","72":"","73":" get
80
+ ''/crash'' do","74":" raise RuntimeError.new(''Bugsnag Padrino demo says:
81
+ It crashed! Go check '' +","75":" ''bugsnag.com for a new notification!'')","76":" end","77":""},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":735,"method":"call","file":"gems/padrino-core-0.12.2/lib/padrino-core/application/routing.rb","code":{"732":"","733":" block
82
+ = block.arity != 0 ?","734":" proc { |a,p| unbound_method.bind(a).call(*p)
83
+ } :","735":" proc { |a,p| unbound_method.bind(a).call }","736":"","737":" invoke_hook(:route_added,
84
+ verb, path, block)","738":""},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":735,"method":"block
85
+ in route","file":"gems/padrino-core-0.12.2/lib/padrino-core/application/routing.rb","code":{"732":"","733":" block
86
+ = block.arity != 0 ?","734":" proc { |a,p| unbound_method.bind(a).call(*p)
87
+ } :","735":" proc { |a,p| unbound_method.bind(a).call }","736":"","737":" invoke_hook(:route_added,
88
+ verb, path, block)","738":""},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":62,"method":"[]","file":"gems/padrino-core-0.12.2/lib/padrino-core/application/routing.rb","code":{"59":" (@route.before_filters
89
+ - settings.filters[:before]).each { |block| instance_eval(\u0026block) }","60":" @layout
90
+ = path.route.use_layout if path.route.use_layout","61":" @route.custom_conditions.each
91
+ { |block| pass if block.bind(self).call == false }","62":" halt_response =
92
+ catch(:halt) { route_eval { @route.dest[self, @block_params] } }","63":" @_response_buffer
93
+ = halt_response.is_a?(Array) ? halt_response.last : halt_response","64":" successful =
94
+ true","65":" halt halt_response"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":62,"method":"block
95
+ (3 levels) in process_destination_path","file":"gems/padrino-core-0.12.2/lib/padrino-core/application/routing.rb","code":{"59":" (@route.before_filters
96
+ - settings.filters[:before]).each { |block| instance_eval(\u0026block) }","60":" @layout
97
+ = path.route.use_layout if path.route.use_layout","61":" @route.custom_conditions.each
98
+ { |block| pass if block.bind(self).call == false }","62":" halt_response =
99
+ catch(:halt) { route_eval { @route.dest[self, @block_params] } }","63":" @_response_buffer
100
+ = halt_response.is_a?(Array) ? halt_response.last : halt_response","64":" successful =
101
+ true","65":" halt halt_response"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":994,"method":"route_eval","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"991":"","992":" #
102
+ Run a route block and throw :halt with the result.","993":" def route_eval","994":" throw
103
+ :halt, yield","995":" end","996":"","997":" # If the current request
104
+ matches pattern and conditions, fill params"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":62,"method":"block
105
+ (2 levels) in process_destination_path","file":"gems/padrino-core-0.12.2/lib/padrino-core/application/routing.rb","code":{"59":" (@route.before_filters
106
+ - settings.filters[:before]).each { |block| instance_eval(\u0026block) }","60":" @layout
107
+ = path.route.use_layout if path.route.use_layout","61":" @route.custom_conditions.each
108
+ { |block| pass if block.bind(self).call == false }","62":" halt_response =
109
+ catch(:halt) { route_eval { @route.dest[self, @block_params] } }","63":" @_response_buffer
110
+ = halt_response.is_a?(Array) ? halt_response.last : halt_response","64":" successful =
111
+ true","65":" halt halt_response"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":62,"method":"catch","file":"gems/padrino-core-0.12.2/lib/padrino-core/application/routing.rb","code":{"59":" (@route.before_filters
112
+ - settings.filters[:before]).each { |block| instance_eval(\u0026block) }","60":" @layout
113
+ = path.route.use_layout if path.route.use_layout","61":" @route.custom_conditions.each
114
+ { |block| pass if block.bind(self).call == false }","62":" halt_response =
115
+ catch(:halt) { route_eval { @route.dest[self, @block_params] } }","63":" @_response_buffer
116
+ = halt_response.is_a?(Array) ? halt_response.last : halt_response","64":" successful =
117
+ true","65":" halt halt_response"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":62,"method":"block
118
+ in process_destination_path","file":"gems/padrino-core-0.12.2/lib/padrino-core/application/routing.rb","code":{"59":" (@route.before_filters
119
+ - settings.filters[:before]).each { |block| instance_eval(\u0026block) }","60":" @layout
120
+ = path.route.use_layout if path.route.use_layout","61":" @route.custom_conditions.each
121
+ { |block| pass if block.bind(self).call == false }","62":" halt_response =
122
+ catch(:halt) { route_eval { @route.dest[self, @block_params] } }","63":" @_response_buffer
123
+ = halt_response.is_a?(Array) ? halt_response.last : halt_response","64":" successful =
124
+ true","65":" halt halt_response"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":37,"method":"instance_eval","file":"gems/padrino-core-0.12.2/lib/padrino-core/application/routing.rb","code":{"34":" def
125
+ rewrite_path_info(env, request); end","35":"","36":" def process_destination_path(path,
126
+ env)","37":" Thread.current[''padrino.instance''].instance_eval do","38":" request.route_obj
127
+ = path.route","39":" @_response_buffer = nil","40":" @route =
128
+ path.route"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":37,"method":"process_destination_path","file":"gems/padrino-core-0.12.2/lib/padrino-core/application/routing.rb","code":{"34":" def
129
+ rewrite_path_info(env, request); end","35":"","36":" def process_destination_path(path,
130
+ env)","37":" Thread.current[''padrino.instance''].instance_eval do","38":" request.route_obj
131
+ = path.route","39":" @_response_buffer = nil","40":" @route =
132
+ path.route"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":77,"method":"block
133
+ in call","file":"(eval)","code":null,"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":66,"method":"catch","file":"(eval)","code":null,"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":66,"method":"call","file":"(eval)","code":null,"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":288,"method":"raw_call","file":"gems/http_router-0.11.2/lib/http_router.rb","code":{"285":" @root.call(request,
134
+ \u0026blk)","286":" request","287":" else","288":" @root.call(request)
135
+ or no_response(request, env)","289":" end","290":" end","291":""},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":1169,"method":"route!","file":"gems/padrino-core-0.12.2/lib/padrino-core/application/routing.rb","code":{"1166":"","1167":" def
136
+ route!(base=settings, pass_block=nil)","1168":" Thread.current[''padrino.instance'']
137
+ = self","1169":" if base.compiled_router and match = base.compiled_router.call(@request.env)","1170":" if
138
+ match.respond_to?(:each)","1171":" route_eval do","1172":" match[1].each
139
+ { |k,v| response[k] = v }"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":1154,"method":"block
140
+ in dispatch!","file":"gems/padrino-core-0.12.2/lib/padrino-core/application/routing.rb","code":{"1151":" def
141
+ dispatch!","1152":" invoke do","1153":" static! if settings.static?
142
+ \u0026\u0026 (request.get? || request.head?)","1154":" route!","1155":" end","1156":" rescue
143
+ ::Exception =\u003e boom","1157":" filter! :before if boom.kind_of?
144
+ ::Sinatra::NotFound"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":1067,"method":"block
145
+ in invoke","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"1064":"","1065":" #
146
+ Run the block with ''throw :halt'' support and apply result to the response.","1066":" def
147
+ invoke","1067":" res = catch(:halt) { yield }","1068":" res = [res]
148
+ if Integer === res or String === res","1069":" if Array === res and Integer
149
+ === res.first","1070":" res = res.dup"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":1067,"method":"catch","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"1064":"","1065":" #
150
+ Run the block with ''throw :halt'' support and apply result to the response.","1066":" def
151
+ invoke","1067":" res = catch(:halt) { yield }","1068":" res = [res]
152
+ if Integer === res or String === res","1069":" if Array === res and Integer
153
+ === res.first","1070":" res = res.dup"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":1067,"method":"invoke","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"1064":"","1065":" #
154
+ Run the block with ''throw :halt'' support and apply result to the response.","1066":" def
155
+ invoke","1067":" res = catch(:halt) { yield }","1068":" res = [res]
156
+ if Integer === res or String === res","1069":" if Array === res and Integer
157
+ === res.first","1070":" res = res.dup"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":1152,"method":"dispatch!","file":"gems/padrino-core-0.12.2/lib/padrino-core/application/routing.rb","code":{"1149":" end","1150":"","1151":" def
158
+ dispatch!","1152":" invoke do","1153":" static! if settings.static?
159
+ \u0026\u0026 (request.get? || request.head?)","1154":" route!","1155":" end"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":907,"method":"block
160
+ in call!","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"904":" force_encoding(@params)","905":"","906":" @response[''Content-Type'']
161
+ = nil","907":" invoke { dispatch! }","908":" invoke { error_block!(response.status)
162
+ } unless @env[''sinatra.error'']","909":"","910":" unless @response[''Content-Type'']"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":1067,"method":"block
163
+ in invoke","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"1064":"","1065":" #
164
+ Run the block with ''throw :halt'' support and apply result to the response.","1066":" def
165
+ invoke","1067":" res = catch(:halt) { yield }","1068":" res = [res]
166
+ if Integer === res or String === res","1069":" if Array === res and Integer
167
+ === res.first","1070":" res = res.dup"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":1067,"method":"catch","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"1064":"","1065":" #
168
+ Run the block with ''throw :halt'' support and apply result to the response.","1066":" def
169
+ invoke","1067":" res = catch(:halt) { yield }","1068":" res = [res]
170
+ if Integer === res or String === res","1069":" if Array === res and Integer
171
+ === res.first","1070":" res = res.dup"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":1067,"method":"invoke","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"1064":"","1065":" #
172
+ Run the block with ''throw :halt'' support and apply result to the response.","1066":" def
173
+ invoke","1067":" res = catch(:halt) { yield }","1068":" res = [res]
174
+ if Integer === res or String === res","1069":" if Array === res and Integer
175
+ === res.first","1070":" res = res.dup"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":907,"method":"call!","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"904":" force_encoding(@params)","905":"","906":" @response[''Content-Type'']
176
+ = nil","907":" invoke { dispatch! }","908":" invoke { error_block!(response.status)
177
+ } unless @env[''sinatra.error'']","909":"","910":" unless @response[''Content-Type'']"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":895,"method":"call","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"892":"","893":" #
178
+ Rack call interface.","894":" def call(env)","895":" dup.call!(env)","896":" end","897":"","898":" def
179
+ call!(env) # :nodoc:"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":49,"method":"call","file":"gems/rack-protection-1.5.3/lib/rack/protection/base.rb","code":{"46":" instrument
180
+ env","47":" result = react env","48":" end","49":" result
181
+ or app.call(env)","50":" end","51":"","52":" def react(env)"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":18,"method":"call","file":"gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb","code":{"15":" default_options
182
+ :xss_mode =\u003e :block, :nosniff =\u003e true","16":"","17":" def call(env)","18":" status,
183
+ headers, body = @app.call(env)","19":" headers[''X-XSS-Protection''] ||=
184
+ \"1; mode=#{options[:xss_mode]}\" if html? headers","20":" headers[''X-Content-Type-Options'']
185
+ ||= ''nosniff'' if options[:nosniff]","21":" [status,
186
+ headers, body]"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":49,"method":"call","file":"gems/rack-protection-1.5.3/lib/rack/protection/base.rb","code":{"46":" instrument
187
+ env","47":" result = react env","48":" end","49":" result
188
+ or app.call(env)","50":" end","51":"","52":" def react(env)"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":49,"method":"call","file":"gems/rack-protection-1.5.3/lib/rack/protection/base.rb","code":{"46":" instrument
189
+ env","47":" result = react env","48":" end","49":" result
190
+ or app.call(env)","50":" end","51":"","52":" def react(env)"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":18,"method":"call","file":"gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb","code":{"15":"","16":" def
191
+ call(env)","17":" request = Request.new(env)","18":" status,
192
+ headers, body = app.call(env)","19":"","20":" if has_vector? request,
193
+ headers","21":" warn env, \"attack prevented by #{self.class}\""},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":49,"method":"call","file":"gems/rack-protection-1.5.3/lib/rack/protection/base.rb","code":{"46":" instrument
194
+ env","47":" result = react env","48":" end","49":" result
195
+ or app.call(env)","50":" end","51":"","52":" def react(env)"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":49,"method":"call","file":"gems/rack-protection-1.5.3/lib/rack/protection/base.rb","code":{"46":" instrument
196
+ env","47":" result = react env","48":" end","49":" result
197
+ or app.call(env)","50":" end","51":"","52":" def react(env)"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":31,"method":"call","file":"gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb","code":{"28":" end","29":"","30":" def
198
+ call(env)","31":" status, headers, body = @app.call(env)","32":" headers[''X-Frame-Options'']
199
+ ||= frame_options if html? headers","33":" [status, headers, body]","34":" end"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":13,"method":"call","file":"gems/rack-1.6.8/lib/rack/head.rb","code":{"10":" end","11":"","12":" def
200
+ call(env)","13":" status, headers, body = @app.call(env)","14":"","15":" if
201
+ env[REQUEST_METHOD] == HEAD","16":" ["},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":22,"method":"call","file":"gems/rack-1.6.8/lib/rack/methodoverride.rb","code":{"19":" end","20":" end","21":"","22":" @app.call(env)","23":" end","24":"","25":" def
202
+ method_override(env)"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":22,"method":"call","file":"gems/padrino-core-0.12.2/lib/padrino-core/reloader/rack.rb","code":{"19":" Thread.list.size
203
+ \u003e 1 ? Thread.exclusive { Padrino.reload! } : Padrino.reload!","20":" @last
204
+ = Time.now","21":" end","22":" @app.call(env)","23":" end","24":" end","25":" end"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":420,"method":"call","file":"gems/padrino-core-0.12.2/lib/padrino-core/logger.rb","code":{"417":" def
205
+ call(env)","418":" env[''rack.logger''] = Padrino.logger","419":" began_at
206
+ = Time.now","420":" status, header, body = @app.call(env)","421":" log(env,
207
+ status, header, began_at) if logger.debug?","422":" [status, header,
208
+ body]","423":" end"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":225,"method":"context","file":"gems/rack-1.6.8/lib/rack/session/abstract/id.rb","code":{"222":"","223":" def
209
+ context(env, app=@app)","224":" prepare_session(env)","225":" status,
210
+ headers, body = app.call(env)","226":" commit_session(env, status,
211
+ headers, body)","227":" end","228":""},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":220,"method":"call","file":"gems/rack-1.6.8/lib/rack/session/abstract/id.rb","code":{"217":" end","218":"","219":" def
212
+ call(env)","220":" context(env)","221":" end","222":"","223":" def
213
+ context(env, app=@app)"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":2013,"method":"call","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"2010":" end","2011":"","2012":" def
214
+ call(env)","2013":" @stack.call(env)","2014":" end","2015":"","2016":" def
215
+ inspect"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":1487,"method":"block
216
+ in call","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"1484":" end","1485":"","1486":" def
217
+ call(env)","1487":" synchronize { prototype.call(env) }","1488":" end","1489":"","1490":" #
218
+ Like Kernel#caller but excluding certain magic entries and without"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":1787,"method":"synchronize","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"1784":" if
219
+ lock?","1785":" @@mutex.synchronize(\u0026block)","1786":" else","1787":" yield","1788":" end","1789":" end","1790":""},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":1487,"method":"call","file":"gems/sinatra-1.4.8/lib/sinatra/base.rb","code":{"1484":" end","1485":"","1486":" def
220
+ call(env)","1487":" synchronize { prototype.call(env) }","1488":" end","1489":"","1490":" #
221
+ Like Kernel#caller but excluding certain magic entries and without"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":84,"method":"block
222
+ in call","file":"gems/padrino-core-0.12.2/lib/padrino-core/router.rb","code":{"81":"","82":" env[''SCRIPT_NAME'']
223
+ = script_name + path","83":" env[''PATH_INFO''] = rest","84":" last_result
224
+ = app.call(env)","85":"","86":" cascade_setting = app.respond_to?(:cascade)
225
+ ? app.cascade : true","87":" cascade_statuses = cascade_setting.respond_to?(:include?)
226
+ ? cascade_setting : Mounter::DEFAULT_CASCADE"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":75,"method":"each","file":"gems/padrino-core-0.12.2/lib/padrino-core/router.rb","code":{"72":" http_host
227
+ = env[''HTTP_HOST'']","73":" last_result = nil","74":"","75":" @mapping.each
228
+ do |host, path, match, app|","76":" next unless host.nil? || http_host
229
+ =~ host","77":" next unless path_info =~ match \u0026\u0026 rest =
230
+ $1","78":" next unless rest.empty? || rest[0] == ?/"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":75,"method":"call","file":"gems/padrino-core-0.12.2/lib/padrino-core/router.rb","code":{"72":" http_host
231
+ = env[''HTTP_HOST'']","73":" last_result = nil","74":"","75":" @mapping.each
232
+ do |host, path, match, app|","76":" next unless host.nil? || http_host
233
+ =~ host","77":" next unless path_info =~ match \u0026\u0026 rest =
234
+ $1","78":" next unless rest.empty? || rest[0] == ?/"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":88,"method":"service","file":"gems/rack-1.6.8/lib/rack/handler/webrick.rb","code":{"85":" end","86":" env[\"REQUEST_PATH\"]
235
+ ||= [env[\"SCRIPT_NAME\"], env[PATH_INFO]].join","87":"","88":" status,
236
+ headers, body = @app.call(env)","89":" begin","90":" res.status
237
+ = status.to_i","91":" headers.each { |k, vs|"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":138,"method":"service","file":"/Users/amoinet/.rbenv/versions/2.2.2/lib/ruby/2.2.0/webrick/httpserver.rb","code":{"135":" req.path_info
238
+ = path_info","136":" si = servlet.get_instance(self, *options)","137":" @logger.debug(format(\"%s
239
+ is invoked.\", si.class.name))","138":" si.service(req, res)","139":" end","140":"","141":" ##"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":94,"method":"run","file":"/Users/amoinet/.rbenv/versions/2.2.2/lib/ruby/2.2.0/webrick/httpserver.rb","code":{"91":" @logger.warn(msg)","92":" callback.call(req,
240
+ res)","93":" end","94":" server.service(req, res)","95":" rescue
241
+ HTTPStatus::EOFError, HTTPStatus::RequestTimeout =\u003e ex","96":" res.set_error(ex)","97":" rescue
242
+ HTTPStatus::Error =\u003e ex"},"macho_uuid":null,"source_control_link":null,"source_control_name":null},{"column_number":null,"in_project":null,"line_number":294,"method":"block
243
+ in start_thread","file":"/Users/amoinet/.rbenv/versions/2.2.2/lib/ruby/2.2.0/webrick/server.rb","code":{"291":" raise","292":" end","293":" call_callback(:AcceptCallback,
244
+ sock)","294":" block ? block.call(sock) : run(sock)","295":" rescue
245
+ Errno::ENOTCONN","296":" @logger.debug \"Errno::ENOTCONN raised\"","297":" rescue
246
+ ServerError =\u003e ex"},"macho_uuid":null,"source_control_link":null,"source_control_name":null}]}],"threads":[],"metaData":{"request":{"referer":null},"session":{"csrf":"6baa4072450acdd3cfbb968468124847","session_id":"97833d48752db206ba510e4497dd102fc02c432b6db242633c8e23c97a10e5a8","tracking":{"HTTP_USER_AGENT":"12a00762794c42b4c1ad20036160ad0eb7f7f6db","HTTP_ACCEPT_LANGUAGE":"3aafc5dab3eb0b9a53b22430a9c6325546c8ae04"}}},"customDiagnostics":{},"request":{"clientIp":"127.0.0.1","headers":{"Host":"localhost:3000","Connection":"keep-alive","User-Agent":"Mozilla/5.0
247
+ (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko)
248
+ Chrome/61.0.3163.100 Safari/537.36","Upgrade-Insecure-Requests":"1","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","Accept-Encoding":"gzip,
249
+ deflate, br","Accept-Language":"en-GB,en-US;q=0.8,en;q=0.6","Cookie":"[FILTERED]","Version":"HTTP/1.1"},"httpMethod":"GET","params":{},"url":"http://localhost:3000/crash"},"app":{"releaseStage":"development","type":"rack"},"device":{"hostname":"Alexanders-MacBook-Pro.local"},"user":{"id":"127.0.0.1"},"breadcrumbs":[],"context":"GET
250
+ /crash","severity":"error","unhandled":true,"derived":{"deploy":null}}'
251
+ http_version:
252
+ recorded_at: Mon, 09 Oct 2017 14:20:04 GMT
253
+ recorded_with: VCR 2.9.3