apimatic-semgrep-sdk 0.0.1
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.
- checksums.yaml +7 -0
- data/LICENSE +28 -0
- data/README.md +205 -0
- data/bin/console +15 -0
- data/lib/semgrep_web_app/api_helper.rb +10 -0
- data/lib/semgrep_web_app/apis/base_api.rb +67 -0
- data/lib/semgrep_web_app/apis/deployments_service_api.rb +29 -0
- data/lib/semgrep_web_app/apis/findings_service_api.rb +107 -0
- data/lib/semgrep_web_app/apis/misc_service_api.rb +47 -0
- data/lib/semgrep_web_app/apis/policies_service_api.rb +97 -0
- data/lib/semgrep_web_app/apis/projects_service_api.rb +238 -0
- data/lib/semgrep_web_app/apis/scans_service_api.rb +65 -0
- data/lib/semgrep_web_app/apis/secrets_service_api.rb +55 -0
- data/lib/semgrep_web_app/apis/supply_chain_service_api.rb +154 -0
- data/lib/semgrep_web_app/apis/ticketing_service_api.rb +144 -0
- data/lib/semgrep_web_app/apis/triage_service_api.rb +43 -0
- data/lib/semgrep_web_app/client.rb +136 -0
- data/lib/semgrep_web_app/configuration.rb +178 -0
- data/lib/semgrep_web_app/exceptions/api_exception.rb +21 -0
- data/lib/semgrep_web_app/http/api_response.rb +19 -0
- data/lib/semgrep_web_app/http/auth/semgrep_admin_jwt.rb +53 -0
- data/lib/semgrep_web_app/http/auth/semgrep_jwt.rb +53 -0
- data/lib/semgrep_web_app/http/auth/semgrep_web_token.rb +53 -0
- data/lib/semgrep_web_app/http/http_call_back.rb +10 -0
- data/lib/semgrep_web_app/http/http_method_enum.rb +10 -0
- data/lib/semgrep_web_app/http/http_request.rb +10 -0
- data/lib/semgrep_web_app/http/http_response.rb +10 -0
- data/lib/semgrep_web_app/http/proxy_settings.rb +22 -0
- data/lib/semgrep_web_app/logging/configuration/api_logging_configuration.rb +186 -0
- data/lib/semgrep_web_app/logging/sdk_logger.rb +17 -0
- data/lib/semgrep_web_app/models/add_project_tags_request.rb +96 -0
- data/lib/semgrep_web_app/models/add_project_tags_response.rb +73 -0
- data/lib/semgrep_web_app/models/ai_powered_scan_finding.rb +426 -0
- data/lib/semgrep_web_app/models/ai_sast_findings.rb +85 -0
- data/lib/semgrep_web_app/models/api_v1_deployments_findings_response.rb +87 -0
- data/lib/semgrep_web_app/models/assistant.rb +127 -0
- data/lib/semgrep_web_app/models/autofix.rb +98 -0
- data/lib/semgrep_web_app/models/autotriage.rb +98 -0
- data/lib/semgrep_web_app/models/autotriage_verdict.rb +36 -0
- data/lib/semgrep_web_app/models/autotriage_verdict2.rb +38 -0
- data/lib/semgrep_web_app/models/base_model.rb +110 -0
- data/lib/semgrep_web_app/models/bulk_triage_request.rb +393 -0
- data/lib/semgrep_web_app/models/bulk_triage_response.rb +83 -0
- data/lib/semgrep_web_app/models/click_to_fix_failure.rb +95 -0
- data/lib/semgrep_web_app/models/click_to_fix_pr.rb +95 -0
- data/lib/semgrep_web_app/models/click_to_fix_pr_state.rb +38 -0
- data/lib/semgrep_web_app/models/component.rb +95 -0
- data/lib/semgrep_web_app/models/confidence.rb +42 -0
- data/lib/semgrep_web_app/models/confidence1.rb +40 -0
- data/lib/semgrep_web_app/models/confidence2.rb +40 -0
- data/lib/semgrep_web_app/models/confidence3.rb +40 -0
- data/lib/semgrep_web_app/models/confidence7.rb +41 -0
- data/lib/semgrep_web_app/models/confidence8.rb +42 -0
- data/lib/semgrep_web_app/models/create_sbom_export_request.rb +176 -0
- data/lib/semgrep_web_app/models/create_sbom_export_response.rb +74 -0
- data/lib/semgrep_web_app/models/create_ticket_request.rb +393 -0
- data/lib/semgrep_web_app/models/cyclonedx_version.rb +48 -0
- data/lib/semgrep_web_app/models/delete_project_response.rb +74 -0
- data/lib/semgrep_web_app/models/delete_project_tags_response.rb +73 -0
- data/lib/semgrep_web_app/models/deployment.rb +102 -0
- data/lib/semgrep_web_app/models/ecosystem.rb +91 -0
- data/lib/semgrep_web_app/models/ecosystem1.rb +92 -0
- data/lib/semgrep_web_app/models/ecosystem2.rb +76 -0
- data/lib/semgrep_web_app/models/endpoint_reference.rb +72 -0
- data/lib/semgrep_web_app/models/epss_probability.rb +45 -0
- data/lib/semgrep_web_app/models/epss_score.rb +95 -0
- data/lib/semgrep_web_app/models/exposures.rb +50 -0
- data/lib/semgrep_web_app/models/exposures2.rb +51 -0
- data/lib/semgrep_web_app/models/external_ticket.rb +116 -0
- data/lib/semgrep_web_app/models/finding_location.rb +126 -0
- data/lib/semgrep_web_app/models/finding_repository.rb +95 -0
- data/lib/semgrep_web_app/models/finding_rule.rb +158 -0
- data/lib/semgrep_web_app/models/fix_recommendation.rb +95 -0
- data/lib/semgrep_web_app/models/float_range.rb +85 -0
- data/lib/semgrep_web_app/models/format.rb +27 -0
- data/lib/semgrep_web_app/models/found_dependency.rb +128 -0
- data/lib/semgrep_web_app/models/get_project_response.rb +73 -0
- data/lib/semgrep_web_app/models/get_sbom_export_response.rb +100 -0
- data/lib/semgrep_web_app/models/guidance.rb +98 -0
- data/lib/semgrep_web_app/models/issue_type.rb +40 -0
- data/lib/semgrep_web_app/models/issue_type1.rb +40 -0
- data/lib/semgrep_web_app/models/issue_type2.rb +42 -0
- data/lib/semgrep_web_app/models/license_policy_settings.rb +42 -0
- data/lib/semgrep_web_app/models/link_ticket_request.rb +93 -0
- data/lib/semgrep_web_app/models/list_dependencies_request.rb +108 -0
- data/lib/semgrep_web_app/models/list_dependencies_response.rb +102 -0
- data/lib/semgrep_web_app/models/list_findings_response.rb +100 -0
- data/lib/semgrep_web_app/models/list_lockfiles_for_dependencies_request.rb +118 -0
- data/lib/semgrep_web_app/models/list_lockfiles_for_dependencies_response.rb +103 -0
- data/lib/semgrep_web_app/models/list_project.rb +145 -0
- data/lib/semgrep_web_app/models/list_projects_response.rb +82 -0
- data/lib/semgrep_web_app/models/list_repositories_for_dependencies_request.rb +107 -0
- data/lib/semgrep_web_app/models/list_repositories_for_dependencies_response.rb +103 -0
- data/lib/semgrep_web_app/models/managed_scan_config.rb +85 -0
- data/lib/semgrep_web_app/models/metadata_component_type.rb +101 -0
- data/lib/semgrep_web_app/models/mode.rb +48 -0
- data/lib/semgrep_web_app/models/new_triage_reason.rb +48 -0
- data/lib/semgrep_web_app/models/new_triage_state.rb +48 -0
- data/lib/semgrep_web_app/models/policy.rb +118 -0
- data/lib/semgrep_web_app/models/policy_mode.rb +48 -0
- data/lib/semgrep_web_app/models/policy_mode1.rb +40 -0
- data/lib/semgrep_web_app/models/policy_mode3.rb +51 -0
- data/lib/semgrep_web_app/models/policy_reference.rb +105 -0
- data/lib/semgrep_web_app/models/product_type.rb +38 -0
- data/lib/semgrep_web_app/models/products.rb +46 -0
- data/lib/semgrep_web_app/models/project.rb +157 -0
- data/lib/semgrep_web_app/models/protos_ai_v1_autotriage.rb +154 -0
- data/lib/semgrep_web_app/models/protos_ai_v1_autotriage_feedback.rb +98 -0
- data/lib/semgrep_web_app/models/protos_common_v1_review_comment.rb +90 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response.rb +123 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response_ticket_creation_failed.rb +85 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response_ticket_creation_skipped.rb +85 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_create_ticket_response_ticket_creation_success.rb +106 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_delete_ticket_response.rb +76 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_diff_scan.rb +75 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_full_scan.rb +75 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_get_bootstrap_sms_vpc_response.rb +130 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_get_scan_response.rb +168 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_get_scan_response_scan_meta.rb +256 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_link_ticket_response.rb +119 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_list_deployments_response.rb +85 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_list_policies_response.rb +84 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_list_policy_rules_response.rb +104 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_list_secrets_path_response.rb +104 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_search_scans_response.rb +94 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_unlink_ticket_response.rb +77 -0
- data/lib/semgrep_web_app/models/protos_openapi_v1_update_policy_response.rb +88 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_code_location.rb +144 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_dependency.rb +87 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_dependency_filter.rb +199 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_found_dependency.rb +174 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_lockfile_dependency_summary.rb +87 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_package_filter.rb +124 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_repository_dependency_summary.rb +111 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_sbom_format_version.rb +109 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_sbom_metadata_contact.rb +95 -0
- data/lib/semgrep_web_app/models/protos_sca_v1_sbom_metadata_supplier.rb +95 -0
- data/lib/semgrep_web_app/models/protos_scan_v1_scan_findings_counts.rb +105 -0
- data/lib/semgrep_web_app/models/protos_scan_v1_scan_public.rb +228 -0
- data/lib/semgrep_web_app/models/protos_secrets_v1_historical_info.rb +116 -0
- data/lib/semgrep_web_app/models/protos_secrets_v1_secrets_finding.rb +320 -0
- data/lib/semgrep_web_app/models/protos_secrets_v1_secrets_finding_repository.rb +121 -0
- data/lib/semgrep_web_app/models/protos_ticketing_v1_external_ticket.rb +106 -0
- data/lib/semgrep_web_app/models/rating.rb +38 -0
- data/lib/semgrep_web_app/models/reachability.rb +48 -0
- data/lib/semgrep_web_app/models/repository_visibility.rb +40 -0
- data/lib/semgrep_web_app/models/review_comment.rb +100 -0
- data/lib/semgrep_web_app/models/risk.rb +40 -0
- data/lib/semgrep_web_app/models/rule.rb +292 -0
- data/lib/semgrep_web_app/models/rule_explanation.rb +98 -0
- data/lib/semgrep_web_app/models/sast_finding.rb +426 -0
- data/lib/semgrep_web_app/models/sast_findings.rb +84 -0
- data/lib/semgrep_web_app/models/sbom_output_format.rb +37 -0
- data/lib/semgrep_web_app/models/sca_finding.rb +458 -0
- data/lib/semgrep_web_app/models/sca_findings.rb +85 -0
- data/lib/semgrep_web_app/models/scm_type.rb +70 -0
- data/lib/semgrep_web_app/models/search_scans_request.rb +202 -0
- data/lib/semgrep_web_app/models/severities.rb +44 -0
- data/lib/semgrep_web_app/models/severities2.rb +45 -0
- data/lib/semgrep_web_app/models/severity.rb +46 -0
- data/lib/semgrep_web_app/models/severity1.rb +45 -0
- data/lib/semgrep_web_app/models/severity4.rb +46 -0
- data/lib/semgrep_web_app/models/severity5.rb +48 -0
- data/lib/semgrep_web_app/models/source.rb +42 -0
- data/lib/semgrep_web_app/models/state.rb +42 -0
- data/lib/semgrep_web_app/models/status.rb +55 -0
- data/lib/semgrep_web_app/models/status1.rb +52 -0
- data/lib/semgrep_web_app/models/status3.rb +44 -0
- data/lib/semgrep_web_app/models/status6.rb +55 -0
- data/lib/semgrep_web_app/models/status7.rb +59 -0
- data/lib/semgrep_web_app/models/status8.rb +61 -0
- data/lib/semgrep_web_app/models/status9.rb +55 -0
- data/lib/semgrep_web_app/models/statuses.rb +63 -0
- data/lib/semgrep_web_app/models/toggle_project_managed_scan_request.rb +108 -0
- data/lib/semgrep_web_app/models/toggle_project_managed_scan_response.rb +73 -0
- data/lib/semgrep_web_app/models/transitivities.rb +40 -0
- data/lib/semgrep_web_app/models/transitivities2.rb +42 -0
- data/lib/semgrep_web_app/models/transitivity.rb +41 -0
- data/lib/semgrep_web_app/models/transitivity1.rb +42 -0
- data/lib/semgrep_web_app/models/transitivity2.rb +40 -0
- data/lib/semgrep_web_app/models/triage_reason.rb +48 -0
- data/lib/semgrep_web_app/models/triage_reasons.rb +48 -0
- data/lib/semgrep_web_app/models/triage_reasons2.rb +50 -0
- data/lib/semgrep_web_app/models/triage_state.rb +54 -0
- data/lib/semgrep_web_app/models/unlink_ticket_request.rb +83 -0
- data/lib/semgrep_web_app/models/update_policy_request.rb +113 -0
- data/lib/semgrep_web_app/models/update_project_request.rb +121 -0
- data/lib/semgrep_web_app/models/update_project_response.rb +73 -0
- data/lib/semgrep_web_app/models/usage.rb +99 -0
- data/lib/semgrep_web_app/models/validation_state.rb +45 -0
- data/lib/semgrep_web_app/models/validation_state2.rb +47 -0
- data/lib/semgrep_web_app/models/validation_state3.rb +48 -0
- data/lib/semgrep_web_app/models/verdict.rb +41 -0
- data/lib/semgrep_web_app/models/verdict1.rb +38 -0
- data/lib/semgrep_web_app/models/visibility.rb +42 -0
- data/lib/semgrep_web_app/utilities/date_time_helper.rb +11 -0
- data/lib/semgrep_web_app/utilities/file_wrapper.rb +28 -0
- data/lib/semgrep_web_app/utilities/union_type_lookup.rb +34 -0
- data/lib/semgrep_web_app.rb +245 -0
- metadata +283 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
require 'date'
|
|
7
|
+
module SemgrepWebApp
|
|
8
|
+
# SearchScansRequest Model.
|
|
9
|
+
class SearchScansRequest < BaseModel
|
|
10
|
+
SKIP = Object.new
|
|
11
|
+
private_constant :SKIP
|
|
12
|
+
|
|
13
|
+
# Only get scans from the specified branch
|
|
14
|
+
# @return [String]
|
|
15
|
+
attr_accessor :branch
|
|
16
|
+
|
|
17
|
+
# Cursor to paginate through the results
|
|
18
|
+
# @return [String]
|
|
19
|
+
attr_accessor :cursor
|
|
20
|
+
|
|
21
|
+
# Deployment ID (numeric). Example: `123`. Can be found at `/deployments`,
|
|
22
|
+
# or in your Settings in the web UI.
|
|
23
|
+
# @return [String]
|
|
24
|
+
attr_accessor :deployment_id
|
|
25
|
+
|
|
26
|
+
# Only get scans that are full scans (if false, only get diff scans)
|
|
27
|
+
# @return [Integer]
|
|
28
|
+
attr_accessor :is_full_scan
|
|
29
|
+
|
|
30
|
+
# Page size to paginate through the results (default is 100, max is 500)
|
|
31
|
+
# @return [Integer]
|
|
32
|
+
attr_accessor :limit
|
|
33
|
+
|
|
34
|
+
# Only get scans that have these enabled products
|
|
35
|
+
# | value | description |
|
|
36
|
+
# |-------|---------------|
|
|
37
|
+
# | PRODUCT_SAST | |
|
|
38
|
+
# | PRODUCT_SCA | |
|
|
39
|
+
# | PRODUCT_SECRETS | |
|
|
40
|
+
# | PRODUCT_AI_SAST | |
|
|
41
|
+
# @return [Products]
|
|
42
|
+
attr_accessor :products
|
|
43
|
+
|
|
44
|
+
# Only get scans for this repo
|
|
45
|
+
# @return [Integer]
|
|
46
|
+
attr_accessor :repository_id
|
|
47
|
+
|
|
48
|
+
# Only get scans created after this time. Provide time in ISO 8601 format.
|
|
49
|
+
# @return [DateTime]
|
|
50
|
+
attr_accessor :since
|
|
51
|
+
|
|
52
|
+
# Only get scans that have one of these statuses
|
|
53
|
+
# | value | description |
|
|
54
|
+
# |-------|---------------|
|
|
55
|
+
# | SCAN_STATUS_RUNNING | The scan is currently running |
|
|
56
|
+
# | SCAN_STATUS_COMPLETED | The scan has completed successfully (0 or 1 exit
|
|
57
|
+
# code) |
|
|
58
|
+
# | SCAN_STATUS_PENDING | The scan is queued and waiting to start |
|
|
59
|
+
# | SCAN_STATUS_CANCELLED | The scan was cancelled before completion |
|
|
60
|
+
# | SCAN_STATUS_ERROR | The scan has exited with a failure (exit code not 0
|
|
61
|
+
# or 1) |
|
|
62
|
+
# | SCAN_STATUS_NEVER_FINISHED | The scan did not report an error or success
|
|
63
|
+
# after over an hour |
|
|
64
|
+
# @return [Statuses]
|
|
65
|
+
attr_accessor :statuses
|
|
66
|
+
|
|
67
|
+
# Only get scans that have one of these statuses
|
|
68
|
+
# | value | description |
|
|
69
|
+
# |-------|---------------|
|
|
70
|
+
# | SCAN_STATUS_RUNNING | The scan is currently running |
|
|
71
|
+
# | SCAN_STATUS_COMPLETED | The scan has completed successfully (0 or 1 exit
|
|
72
|
+
# code) |
|
|
73
|
+
# | SCAN_STATUS_PENDING | The scan is queued and waiting to start |
|
|
74
|
+
# | SCAN_STATUS_CANCELLED | The scan was cancelled before completion |
|
|
75
|
+
# | SCAN_STATUS_ERROR | The scan has exited with a failure (exit code not 0
|
|
76
|
+
# or 1) |
|
|
77
|
+
# | SCAN_STATUS_NEVER_FINISHED | The scan did not report an error or success
|
|
78
|
+
# after over an hour |
|
|
79
|
+
# @return [FloatRange]
|
|
80
|
+
attr_accessor :total_time
|
|
81
|
+
|
|
82
|
+
# A mapping from model property names to API property names.
|
|
83
|
+
def self.names
|
|
84
|
+
@_hash = {} if @_hash.nil?
|
|
85
|
+
@_hash['branch'] = 'branch'
|
|
86
|
+
@_hash['cursor'] = 'cursor'
|
|
87
|
+
@_hash['deployment_id'] = 'deploymentId'
|
|
88
|
+
@_hash['is_full_scan'] = 'is_full_scan'
|
|
89
|
+
@_hash['limit'] = 'limit'
|
|
90
|
+
@_hash['products'] = 'products'
|
|
91
|
+
@_hash['repository_id'] = 'repository_id'
|
|
92
|
+
@_hash['since'] = 'since'
|
|
93
|
+
@_hash['statuses'] = 'statuses'
|
|
94
|
+
@_hash['total_time'] = 'total_time'
|
|
95
|
+
@_hash
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# An array for optional fields
|
|
99
|
+
def self.optionals
|
|
100
|
+
%w[
|
|
101
|
+
branch
|
|
102
|
+
cursor
|
|
103
|
+
is_full_scan
|
|
104
|
+
limit
|
|
105
|
+
products
|
|
106
|
+
repository_id
|
|
107
|
+
since
|
|
108
|
+
statuses
|
|
109
|
+
total_time
|
|
110
|
+
]
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# An array for nullable fields
|
|
114
|
+
def self.nullables
|
|
115
|
+
[]
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def initialize(deployment_id:, branch: SKIP, cursor: SKIP,
|
|
119
|
+
is_full_scan: SKIP, limit: SKIP, products: SKIP,
|
|
120
|
+
repository_id: SKIP, since: SKIP, statuses: SKIP,
|
|
121
|
+
total_time: SKIP, additional_properties: nil)
|
|
122
|
+
# Add additional model properties to the instance
|
|
123
|
+
additional_properties = {} if additional_properties.nil?
|
|
124
|
+
|
|
125
|
+
@branch = branch unless branch == SKIP
|
|
126
|
+
@cursor = cursor unless cursor == SKIP
|
|
127
|
+
@deployment_id = deployment_id
|
|
128
|
+
@is_full_scan = is_full_scan unless is_full_scan == SKIP
|
|
129
|
+
@limit = limit unless limit == SKIP
|
|
130
|
+
@products = products unless products == SKIP
|
|
131
|
+
@repository_id = repository_id unless repository_id == SKIP
|
|
132
|
+
@since = since unless since == SKIP
|
|
133
|
+
@statuses = statuses unless statuses == SKIP
|
|
134
|
+
@total_time = total_time unless total_time == SKIP
|
|
135
|
+
@additional_properties = additional_properties
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# Creates an instance of the object from a hash.
|
|
139
|
+
def self.from_hash(hash)
|
|
140
|
+
return nil unless hash
|
|
141
|
+
|
|
142
|
+
# Extract variables from the hash.
|
|
143
|
+
deployment_id = hash.key?('deploymentId') ? hash['deploymentId'] : nil
|
|
144
|
+
branch = hash.key?('branch') ? hash['branch'] : SKIP
|
|
145
|
+
cursor = hash.key?('cursor') ? hash['cursor'] : SKIP
|
|
146
|
+
is_full_scan = hash.key?('is_full_scan') ? hash['is_full_scan'] : SKIP
|
|
147
|
+
limit = hash.key?('limit') ? hash['limit'] : SKIP
|
|
148
|
+
products = hash.key?('products') ? hash['products'] : SKIP
|
|
149
|
+
repository_id = hash.key?('repository_id') ? hash['repository_id'] : SKIP
|
|
150
|
+
since = if hash.key?('since')
|
|
151
|
+
(DateTimeHelper.from_rfc3339(hash['since']) if hash['since'])
|
|
152
|
+
else
|
|
153
|
+
SKIP
|
|
154
|
+
end
|
|
155
|
+
statuses = hash.key?('statuses') ? hash['statuses'] : SKIP
|
|
156
|
+
total_time = FloatRange.from_hash(hash['total_time']) if hash['total_time']
|
|
157
|
+
|
|
158
|
+
# Create a new hash for additional properties, removing known properties.
|
|
159
|
+
new_hash = hash.reject { |k, _| names.value?(k) }
|
|
160
|
+
|
|
161
|
+
additional_properties = APIHelper.get_additional_properties(
|
|
162
|
+
new_hash, proc { |value| value }
|
|
163
|
+
)
|
|
164
|
+
|
|
165
|
+
# Create object from extracted values.
|
|
166
|
+
SearchScansRequest.new(deployment_id: deployment_id,
|
|
167
|
+
branch: branch,
|
|
168
|
+
cursor: cursor,
|
|
169
|
+
is_full_scan: is_full_scan,
|
|
170
|
+
limit: limit,
|
|
171
|
+
products: products,
|
|
172
|
+
repository_id: repository_id,
|
|
173
|
+
since: since,
|
|
174
|
+
statuses: statuses,
|
|
175
|
+
total_time: total_time,
|
|
176
|
+
additional_properties: additional_properties)
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def to_custom_since
|
|
180
|
+
DateTimeHelper.to_rfc3339(since)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# Provides a human-readable string representation of the object.
|
|
184
|
+
def to_s
|
|
185
|
+
class_name = self.class.name.split('::').last
|
|
186
|
+
"<#{class_name} branch: #{@branch}, cursor: #{@cursor}, deployment_id: #{@deployment_id},"\
|
|
187
|
+
" is_full_scan: #{@is_full_scan}, limit: #{@limit}, products: #{@products}, repository_id:"\
|
|
188
|
+
" #{@repository_id}, since: #{@since}, statuses: #{@statuses}, total_time: #{@total_time},"\
|
|
189
|
+
" additional_properties: #{@additional_properties}>"
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# Provides a debugging-friendly string with detailed object information.
|
|
193
|
+
def inspect
|
|
194
|
+
class_name = self.class.name.split('::').last
|
|
195
|
+
"<#{class_name} branch: #{@branch.inspect}, cursor: #{@cursor.inspect}, deployment_id:"\
|
|
196
|
+
" #{@deployment_id.inspect}, is_full_scan: #{@is_full_scan.inspect}, limit:"\
|
|
197
|
+
" #{@limit.inspect}, products: #{@products.inspect}, repository_id:"\
|
|
198
|
+
" #{@repository_id.inspect}, since: #{@since.inspect}, statuses: #{@statuses.inspect},"\
|
|
199
|
+
" total_time: #{@total_time.inspect}, additional_properties: #{@additional_properties}>"
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# List of severities to filter by
|
|
8
|
+
class Severities
|
|
9
|
+
SEVERITIES = [
|
|
10
|
+
# TODO: Write general description for LOW
|
|
11
|
+
LOW = 'low'.freeze,
|
|
12
|
+
|
|
13
|
+
# TODO: Write general description for MEDIUM
|
|
14
|
+
MEDIUM = 'medium'.freeze,
|
|
15
|
+
|
|
16
|
+
# TODO: Write general description for HIGH
|
|
17
|
+
HIGH = 'high'.freeze,
|
|
18
|
+
|
|
19
|
+
# TODO: Write general description for CRITICAL
|
|
20
|
+
CRITICAL = 'critical'.freeze
|
|
21
|
+
].freeze
|
|
22
|
+
|
|
23
|
+
def self.validate(value)
|
|
24
|
+
return false if value.nil?
|
|
25
|
+
|
|
26
|
+
SEVERITIES.include?(value)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.from_value(value, default_value = LOW)
|
|
30
|
+
return default_value if value.nil?
|
|
31
|
+
|
|
32
|
+
str = value.to_s.strip
|
|
33
|
+
|
|
34
|
+
case str.downcase
|
|
35
|
+
when 'low' then LOW
|
|
36
|
+
when 'medium' then MEDIUM
|
|
37
|
+
when 'high' then HIGH
|
|
38
|
+
when 'critical' then CRITICAL
|
|
39
|
+
else
|
|
40
|
+
default_value
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# What severities of issues do you want to include? If not specified, returns
|
|
8
|
+
# all. Valid values: low, medium, high, critical
|
|
9
|
+
class Severities2
|
|
10
|
+
SEVERITIES2 = [
|
|
11
|
+
# TODO: Write general description for LOW
|
|
12
|
+
LOW = 'low'.freeze,
|
|
13
|
+
|
|
14
|
+
# TODO: Write general description for MEDIUM
|
|
15
|
+
MEDIUM = 'medium'.freeze,
|
|
16
|
+
|
|
17
|
+
# TODO: Write general description for HIGH
|
|
18
|
+
HIGH = 'high'.freeze,
|
|
19
|
+
|
|
20
|
+
# TODO: Write general description for CRITICAL
|
|
21
|
+
CRITICAL = 'critical'.freeze
|
|
22
|
+
].freeze
|
|
23
|
+
|
|
24
|
+
def self.validate(value)
|
|
25
|
+
return false if value.nil?
|
|
26
|
+
|
|
27
|
+
SEVERITIES2.include?(value)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.from_value(value, default_value = LOW)
|
|
31
|
+
return default_value if value.nil?
|
|
32
|
+
|
|
33
|
+
str = value.to_s.strip
|
|
34
|
+
|
|
35
|
+
case str.downcase
|
|
36
|
+
when 'low' then LOW
|
|
37
|
+
when 'medium' then MEDIUM
|
|
38
|
+
when 'high' then HIGH
|
|
39
|
+
when 'critical' then CRITICAL
|
|
40
|
+
else
|
|
41
|
+
default_value
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# Severity level ("seriousness" of the finding) | value | description |
|
|
8
|
+
# |-------|---------------| | SEVERITY_HIGH | | | SEVERITY_MEDIUM | | |
|
|
9
|
+
# SEVERITY_LOW | | | SEVERITY_CRITICAL | |
|
|
10
|
+
class Severity
|
|
11
|
+
SEVERITY = [
|
|
12
|
+
# TODO: Write general description for SEVERITY_HIGH
|
|
13
|
+
SEVERITY_HIGH = 'SEVERITY_HIGH'.freeze,
|
|
14
|
+
|
|
15
|
+
# TODO: Write general description for SEVERITY_MEDIUM
|
|
16
|
+
SEVERITY_MEDIUM = 'SEVERITY_MEDIUM'.freeze,
|
|
17
|
+
|
|
18
|
+
# TODO: Write general description for SEVERITY_LOW
|
|
19
|
+
SEVERITY_LOW = 'SEVERITY_LOW'.freeze,
|
|
20
|
+
|
|
21
|
+
# TODO: Write general description for SEVERITY_CRITICAL
|
|
22
|
+
SEVERITY_CRITICAL = 'SEVERITY_CRITICAL'.freeze
|
|
23
|
+
].freeze
|
|
24
|
+
|
|
25
|
+
def self.validate(value)
|
|
26
|
+
return false if value.nil?
|
|
27
|
+
|
|
28
|
+
SEVERITY.include?(value)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.from_value(value, default_value = SEVERITY_HIGH)
|
|
32
|
+
return default_value if value.nil?
|
|
33
|
+
|
|
34
|
+
str = value.to_s.strip
|
|
35
|
+
|
|
36
|
+
case str.downcase
|
|
37
|
+
when 'severity_high' then SEVERITY_HIGH
|
|
38
|
+
when 'severity_medium' then SEVERITY_MEDIUM
|
|
39
|
+
when 'severity_low' then SEVERITY_LOW
|
|
40
|
+
when 'severity_critical' then SEVERITY_CRITICAL
|
|
41
|
+
else
|
|
42
|
+
default_value
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# Severity of the finding, derived from the rule that triggered it. Low is
|
|
8
|
+
# equivalent to INFO, Medium to WARNING, and High to ERROR
|
|
9
|
+
class Severity1
|
|
10
|
+
SEVERITY1 = [
|
|
11
|
+
# TODO: Write general description for LOW
|
|
12
|
+
LOW = 'low'.freeze,
|
|
13
|
+
|
|
14
|
+
# TODO: Write general description for MEDIUM
|
|
15
|
+
MEDIUM = 'medium'.freeze,
|
|
16
|
+
|
|
17
|
+
# TODO: Write general description for HIGH
|
|
18
|
+
HIGH = 'high'.freeze,
|
|
19
|
+
|
|
20
|
+
# TODO: Write general description for CRITICAL
|
|
21
|
+
CRITICAL = 'critical'.freeze
|
|
22
|
+
].freeze
|
|
23
|
+
|
|
24
|
+
def self.validate(value)
|
|
25
|
+
return false if value.nil?
|
|
26
|
+
|
|
27
|
+
SEVERITY1.include?(value)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.from_value(value, default_value = LOW)
|
|
31
|
+
return default_value if value.nil?
|
|
32
|
+
|
|
33
|
+
str = value.to_s.strip
|
|
34
|
+
|
|
35
|
+
case str.downcase
|
|
36
|
+
when 'low' then LOW
|
|
37
|
+
when 'medium' then MEDIUM
|
|
38
|
+
when 'high' then HIGH
|
|
39
|
+
when 'critical' then CRITICAL
|
|
40
|
+
else
|
|
41
|
+
default_value
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# Severity of the finding. | value | description | |-------|---------------| |
|
|
8
|
+
# SEVERITY_HIGH | | | SEVERITY_MEDIUM | | | SEVERITY_LOW | | |
|
|
9
|
+
# SEVERITY_CRITICAL | |
|
|
10
|
+
class Severity4
|
|
11
|
+
SEVERITY4 = [
|
|
12
|
+
# TODO: Write general description for SEVERITY_HIGH
|
|
13
|
+
SEVERITY_HIGH = 'SEVERITY_HIGH'.freeze,
|
|
14
|
+
|
|
15
|
+
# TODO: Write general description for SEVERITY_MEDIUM
|
|
16
|
+
SEVERITY_MEDIUM = 'SEVERITY_MEDIUM'.freeze,
|
|
17
|
+
|
|
18
|
+
# TODO: Write general description for SEVERITY_LOW
|
|
19
|
+
SEVERITY_LOW = 'SEVERITY_LOW'.freeze,
|
|
20
|
+
|
|
21
|
+
# TODO: Write general description for SEVERITY_CRITICAL
|
|
22
|
+
SEVERITY_CRITICAL = 'SEVERITY_CRITICAL'.freeze
|
|
23
|
+
].freeze
|
|
24
|
+
|
|
25
|
+
def self.validate(value)
|
|
26
|
+
return false if value.nil?
|
|
27
|
+
|
|
28
|
+
SEVERITY4.include?(value)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.from_value(value, default_value = SEVERITY_HIGH)
|
|
32
|
+
return default_value if value.nil?
|
|
33
|
+
|
|
34
|
+
str = value.to_s.strip
|
|
35
|
+
|
|
36
|
+
case str.downcase
|
|
37
|
+
when 'severity_high' then SEVERITY_HIGH
|
|
38
|
+
when 'severity_medium' then SEVERITY_MEDIUM
|
|
39
|
+
when 'severity_low' then SEVERITY_LOW
|
|
40
|
+
when 'severity_critical' then SEVERITY_CRITICAL
|
|
41
|
+
else
|
|
42
|
+
default_value
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# severity5.
|
|
8
|
+
class Severity5
|
|
9
|
+
SEVERITY5 = [
|
|
10
|
+
# TODO: Write general description for SEVERITY_UNSPECIFIED
|
|
11
|
+
SEVERITY_UNSPECIFIED = 'SEVERITY_UNSPECIFIED'.freeze,
|
|
12
|
+
|
|
13
|
+
# TODO: Write general description for SEVERITY_HIGH
|
|
14
|
+
SEVERITY_HIGH = 'SEVERITY_HIGH'.freeze,
|
|
15
|
+
|
|
16
|
+
# TODO: Write general description for SEVERITY_MEDIUM
|
|
17
|
+
SEVERITY_MEDIUM = 'SEVERITY_MEDIUM'.freeze,
|
|
18
|
+
|
|
19
|
+
# TODO: Write general description for SEVERITY_LOW
|
|
20
|
+
SEVERITY_LOW = 'SEVERITY_LOW'.freeze,
|
|
21
|
+
|
|
22
|
+
# TODO: Write general description for SEVERITY_CRITICAL
|
|
23
|
+
SEVERITY_CRITICAL = 'SEVERITY_CRITICAL'.freeze
|
|
24
|
+
].freeze
|
|
25
|
+
|
|
26
|
+
def self.validate(value)
|
|
27
|
+
return false if value.nil?
|
|
28
|
+
|
|
29
|
+
SEVERITY5.include?(value)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.from_value(value, default_value = SEVERITY_UNSPECIFIED)
|
|
33
|
+
return default_value if value.nil?
|
|
34
|
+
|
|
35
|
+
str = value.to_s.strip
|
|
36
|
+
|
|
37
|
+
case str.downcase
|
|
38
|
+
when 'severity_unspecified' then SEVERITY_UNSPECIFIED
|
|
39
|
+
when 'severity_high' then SEVERITY_HIGH
|
|
40
|
+
when 'severity_medium' then SEVERITY_MEDIUM
|
|
41
|
+
when 'severity_low' then SEVERITY_LOW
|
|
42
|
+
when 'severity_critical' then SEVERITY_CRITICAL
|
|
43
|
+
else
|
|
44
|
+
default_value
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# Source of the Rule | value | description | |-------|---------------| |
|
|
8
|
+
# SOURCE_PRO | From Pro rules | | SOURCE_COMMUNITY | From Semgrep Community
|
|
9
|
+
# rules | | SOURCE_CUSTOM | From Custom rules |
|
|
10
|
+
class Source
|
|
11
|
+
SOURCE = [
|
|
12
|
+
# TODO: Write general description for SOURCE_PRO
|
|
13
|
+
SOURCE_PRO = 'SOURCE_PRO'.freeze,
|
|
14
|
+
|
|
15
|
+
# TODO: Write general description for SOURCE_COMMUNITY
|
|
16
|
+
SOURCE_COMMUNITY = 'SOURCE_COMMUNITY'.freeze,
|
|
17
|
+
|
|
18
|
+
# TODO: Write general description for SOURCE_CUSTOM
|
|
19
|
+
SOURCE_CUSTOM = 'SOURCE_CUSTOM'.freeze
|
|
20
|
+
].freeze
|
|
21
|
+
|
|
22
|
+
def self.validate(value)
|
|
23
|
+
return false if value.nil?
|
|
24
|
+
|
|
25
|
+
SOURCE.include?(value)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.from_value(value, default_value = SOURCE_PRO)
|
|
29
|
+
return default_value if value.nil?
|
|
30
|
+
|
|
31
|
+
str = value.to_s.strip
|
|
32
|
+
|
|
33
|
+
case str.downcase
|
|
34
|
+
when 'source_pro' then SOURCE_PRO
|
|
35
|
+
when 'source_community' then SOURCE_COMMUNITY
|
|
36
|
+
when 'source_custom' then SOURCE_CUSTOM
|
|
37
|
+
else
|
|
38
|
+
default_value
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# The finding's resolution state. Managed only by changes detected at scan
|
|
8
|
+
# time, the `state` is combined with `triage_state` to ultimately determine a
|
|
9
|
+
# final `status` which is exposed in the UI and API
|
|
10
|
+
class State
|
|
11
|
+
STATE = [
|
|
12
|
+
# TODO: Write general description for FIXED
|
|
13
|
+
FIXED = 'fixed'.freeze,
|
|
14
|
+
|
|
15
|
+
# TODO: Write general description for MUTED
|
|
16
|
+
MUTED = 'muted'.freeze,
|
|
17
|
+
|
|
18
|
+
# TODO: Write general description for UNRESOLVED
|
|
19
|
+
UNRESOLVED = 'unresolved'.freeze
|
|
20
|
+
].freeze
|
|
21
|
+
|
|
22
|
+
def self.validate(value)
|
|
23
|
+
return false if value.nil?
|
|
24
|
+
|
|
25
|
+
STATE.include?(value)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.from_value(value, default_value = FIXED)
|
|
29
|
+
return default_value if value.nil?
|
|
30
|
+
|
|
31
|
+
str = value.to_s.strip
|
|
32
|
+
|
|
33
|
+
case str.downcase
|
|
34
|
+
when 'fixed' then FIXED
|
|
35
|
+
when 'muted' then MUTED
|
|
36
|
+
when 'unresolved' then UNRESOLVED
|
|
37
|
+
else
|
|
38
|
+
default_value
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# The finding's status as exposed in the UI. Status is a derived property
|
|
8
|
+
# combining information from the finding `state` and `triage_state`. The
|
|
9
|
+
# `triage_state` can be used to override the scan state if the finding is
|
|
10
|
+
# still detected
|
|
11
|
+
class Status
|
|
12
|
+
STATUS = [
|
|
13
|
+
# TODO: Write general description for OPEN
|
|
14
|
+
OPEN = 'open'.freeze,
|
|
15
|
+
|
|
16
|
+
# TODO: Write general description for FIXED
|
|
17
|
+
FIXED = 'fixed'.freeze,
|
|
18
|
+
|
|
19
|
+
# TODO: Write general description for IGNORED
|
|
20
|
+
IGNORED = 'ignored'.freeze,
|
|
21
|
+
|
|
22
|
+
# TODO: Write general description for REVIEWING
|
|
23
|
+
REVIEWING = 'reviewing'.freeze,
|
|
24
|
+
|
|
25
|
+
# TODO: Write general description for FIXING
|
|
26
|
+
FIXING = 'fixing'.freeze,
|
|
27
|
+
|
|
28
|
+
# TODO: Write general description for PROVISIONALLY_IGNORED
|
|
29
|
+
PROVISIONALLY_IGNORED = 'provisionally_ignored'.freeze
|
|
30
|
+
].freeze
|
|
31
|
+
|
|
32
|
+
def self.validate(value)
|
|
33
|
+
return false if value.nil?
|
|
34
|
+
|
|
35
|
+
STATUS.include?(value)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.from_value(value, default_value = OPEN)
|
|
39
|
+
return default_value if value.nil?
|
|
40
|
+
|
|
41
|
+
str = value.to_s.strip
|
|
42
|
+
|
|
43
|
+
case str.downcase
|
|
44
|
+
when 'open' then OPEN
|
|
45
|
+
when 'fixed' then FIXED
|
|
46
|
+
when 'ignored' then IGNORED
|
|
47
|
+
when 'reviewing' then REVIEWING
|
|
48
|
+
when 'fixing' then FIXING
|
|
49
|
+
when 'provisionally_ignored' then PROVISIONALLY_IGNORED
|
|
50
|
+
else
|
|
51
|
+
default_value
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# semgrep_web_app
|
|
2
|
+
#
|
|
3
|
+
# This file was automatically generated by APIMATIC v3.0 (
|
|
4
|
+
# https://www.apimatic.io ).
|
|
5
|
+
|
|
6
|
+
module SemgrepWebApp
|
|
7
|
+
# The status to filter by
|
|
8
|
+
class Status1
|
|
9
|
+
STATUS1 = [
|
|
10
|
+
# TODO: Write general description for OPEN
|
|
11
|
+
OPEN = 'open'.freeze,
|
|
12
|
+
|
|
13
|
+
# TODO: Write general description for FIXED
|
|
14
|
+
FIXED = 'fixed'.freeze,
|
|
15
|
+
|
|
16
|
+
# TODO: Write general description for IGNORED
|
|
17
|
+
IGNORED = 'ignored'.freeze,
|
|
18
|
+
|
|
19
|
+
# TODO: Write general description for REVIEWING
|
|
20
|
+
REVIEWING = 'reviewing'.freeze,
|
|
21
|
+
|
|
22
|
+
# TODO: Write general description for FIXING
|
|
23
|
+
FIXING = 'fixing'.freeze,
|
|
24
|
+
|
|
25
|
+
# TODO: Write general description for PROVISIONALLY_IGNORED
|
|
26
|
+
PROVISIONALLY_IGNORED = 'provisionally_ignored'.freeze
|
|
27
|
+
].freeze
|
|
28
|
+
|
|
29
|
+
def self.validate(value)
|
|
30
|
+
return false if value.nil?
|
|
31
|
+
|
|
32
|
+
STATUS1.include?(value)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.from_value(value, default_value = OPEN)
|
|
36
|
+
return default_value if value.nil?
|
|
37
|
+
|
|
38
|
+
str = value.to_s.strip
|
|
39
|
+
|
|
40
|
+
case str.downcase
|
|
41
|
+
when 'open' then OPEN
|
|
42
|
+
when 'fixed' then FIXED
|
|
43
|
+
when 'ignored' then IGNORED
|
|
44
|
+
when 'reviewing' then REVIEWING
|
|
45
|
+
when 'fixing' then FIXING
|
|
46
|
+
when 'provisionally_ignored' then PROVISIONALLY_IGNORED
|
|
47
|
+
else
|
|
48
|
+
default_value
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|