bugsnag-api 1.0.3 → 2.0.0

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