Class: Issues::ZoomLinkService
- Inherits:
-
BaseService
- Object
- BaseContainerService
- IssuableBaseService
- BaseService
- Issues::ZoomLinkService
- Defined in:
- app/services/issues/zoom_link_service.rb
Constant Summary
Constants inherited from BaseService
BaseService::NO_REBALANCING_NEEDED
Constants included from Gitlab::Utils::UsageData
Gitlab::Utils::UsageData::DISTRIBUTED_HLL_FALLBACK, Gitlab::Utils::UsageData::FALLBACK, Gitlab::Utils::UsageData::HISTOGRAM_FALLBACK, Gitlab::Utils::UsageData::MAX_BUCKET_SIZE
Instance Attribute Summary
Attributes inherited from BaseContainerService
#container, #current_user, #group, #params, #project
Instance Method Summary collapse
- #add_link(link) ⇒ Object
- #can_add_link? ⇒ Boolean
- #can_remove_link? ⇒ Boolean
-
#initialize(container:, current_user:, params:) ⇒ ZoomLinkService
constructor
A new instance of ZoomLinkService.
- #parse_link(link) ⇒ Object
- #remove_link ⇒ Object
Methods inherited from BaseService
#close_service, #hook_data, #rebalance_if_needed, #reopen_service
Methods included from Gitlab::Utils::Override
#extended, extensions, #included, #method_added, #override, #prepended, #queue_verification, verify!
Methods included from IssueTypeHelpers
Methods included from IncidentManagement::UsageData
Methods included from Gitlab::Utils::UsageData
#add, #add_metric, #alt_usage_data, #average, #count, #distinct_count, #estimate_batch_distinct_count, #histogram, #maximum_id, #measure_duration, #minimum_id, #redis_usage_data, #sum, #track_usage_event, #with_finished_at, #with_metadata, #with_prometheus_client
Methods inherited from BaseContainerService
#group_container?, #namespace_container?, #project_container?, #project_group
Methods included from BaseServiceUtility
#deny_visibility_level, #event_service, #log_error, #log_info, #notification_service, #system_hook_service, #todo_service, #visibility_level
Methods included from Gitlab::Allowable
Constructor Details
#initialize(container:, current_user:, params:) ⇒ ZoomLinkService
Returns a new instance of ZoomLinkService.
5 6 7 8 9 10 |
# File 'app/services/issues/zoom_link_service.rb', line 5 def initialize(container:, current_user:, params:) super @issue = params.fetch(:issue) @added_meeting = ZoomMeeting.canonical_meeting(@issue) end |
Instance Method Details
#add_link(link) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 |
# File 'app/services/issues/zoom_link_service.rb', line 12 def add_link(link) if can_add_link? && (link = parse_link(link)) begin add_zoom_meeting(link) rescue ActiveRecord::RecordNotUnique error(message: _('Failed to add a Zoom meeting')) end else error(message: _('Failed to add a Zoom meeting')) end end |
#can_add_link? ⇒ Boolean
33 34 35 |
# File 'app/services/issues/zoom_link_service.rb', line 33 def can_add_link? can_change_link? && !@added_meeting end |
#can_remove_link? ⇒ Boolean
37 38 39 |
# File 'app/services/issues/zoom_link_service.rb', line 37 def can_remove_link? can_change_link? && @issue.persisted? && !!@added_meeting end |
#parse_link(link) ⇒ Object
41 42 43 |
# File 'app/services/issues/zoom_link_service.rb', line 41 def parse_link(link) Gitlab::ZoomLinkExtractor.new(link).links.last end |
#remove_link ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'app/services/issues/zoom_link_service.rb', line 24 def remove_link if can_remove_link? remove_zoom_meeting success(message: _('Zoom meeting removed')) else error(message: _('Failed to remove a Zoom meeting')) end end |