Class: Integrations::Pushover
- Inherits:
-
Integration
- Object
- ActiveRecord::Base
- ApplicationRecord
- Integration
- Integrations::Pushover
- Defined in:
- app/models/integrations/pushover.rb
Constant Summary collapse
- BASE_URI =
'https://api.pushover.net/1'
Constants inherited from Integration
Integration::BASE_CLASSES, Integration::DEV_INTEGRATION_NAMES, Integration::INTEGRATION_NAMES, Integration::PROJECT_SPECIFIC_INTEGRATION_NAMES, Integration::SECTION_TYPE_CONFIGURATION, Integration::SECTION_TYPE_CONNECTION, Integration::SECTION_TYPE_TRIGGER, Integration::SNOWPLOW_EVENT_ACTION, Integration::SNOWPLOW_EVENT_LABEL, Integration::UnknownType
Constants inherited from ApplicationRecord
Constants included from ResetOnUnionError
ResetOnUnionError::MAX_RESET_PERIOD
Instance Attribute Summary
Attributes included from Importable
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from Integration
#activate_disabled_reason, #activated?, #api_field_names, #async_execute, #attributes, available_integration_names, available_integration_types, boolean_accessor, build_from_integration, #category, #chat?, #ci?, #configurable_events, create_from_active_default_integrations, default_integration, default_test_event, #default_test_event, dev_integration_names, #dup, #editable?, #event_channel_names, event_description, event_names, #event_names, field, #fields, fields, find_or_initialize_all_non_project_specific, find_or_initialize_non_project_specific_integration, #form_fields, #group_level?, #help, #inheritable?, inherited_descendants_from_self_or_ancestors_from, #initialize_properties, instance_exists_for?, #instance_level?, integration_name_to_model, integration_name_to_type, integration_names, #json_fields, #operating?, #parent, #project_level?, project_specific_integration_names, prop_accessor, #properties=, #reencrypt_properties, #reset_updated_properties, #secret_fields, #sections, #show_active_box?, #supported_events, #supports_data_fields?, #test, #testable?, #to_database_hash, #to_param, #updated_properties
Methods included from Gitlab::Utils::Override
#extended, extensions, #included, #method_added, #override, #prepended, #queue_verification, verify!
Methods included from ResetSecretFields
Methods included from Loggable
#build_message, #log_error, #log_exception, #log_info, #logger
Methods inherited from ApplicationRecord
cached_column_list, #create_or_load_association, declarative_enum, default_select_columns, id_in, id_not_in, iid_in, pluck_primary_key, primary_key_in, #readable_by?, safe_ensure_unique, safe_find_or_create_by, safe_find_or_create_by!, #to_ability_name, underscore, where_exists, where_not_exists, with_fast_read_statement_timeout, without_order
Methods included from SensitiveSerializableHash
Class Method Details
.supported_events ⇒ Object
86 87 88 |
# File 'app/models/integrations/pushover.rb', line 86 def self.supported_events %w[push] end |
.to_param ⇒ Object
82 83 84 |
# File 'app/models/integrations/pushover.rb', line 82 def self.to_param 'pushover' end |
Instance Method Details
#description ⇒ Object
78 79 80 |
# File 'app/models/integrations/pushover.rb', line 78 def description s_('PushoverService|Get real-time notifications on your device.') end |
#execute(data) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'app/models/integrations/pushover.rb', line 90 def execute(data) return unless supported_events.include?(data[:object_kind]) ref = Gitlab::Git.ref_name(data[:ref]) before = data[:before] after = data[:after] = if Gitlab::Git.blank_ref?(before) s_("PushoverService|%{user_name} pushed new branch \"%{ref}\".") % { user_name: data[:user_name], ref: ref } elsif Gitlab::Git.blank_ref?(after) s_("PushoverService|%{user_name} deleted branch \"%{ref}\".") % { user_name: data[:user_name], ref: ref } else s_("PushoverService|%{user_name} push to branch \"%{ref}\".") % { user_name: data[:user_name], ref: ref } end if data[:total_commits_count] > 0 = [, s_("PushoverService|Total commits count: %{total_commits_count}") % { total_commits_count: data[:total_commits_count] }].join("\n") end pushover_data = { token: api_key, user: user_key, device: device, priority: priority, title: project.full_name.to_s, message: , url: data[:project][:web_url], url_title: s_("PushoverService|See project %{project_full_name}") % { project_full_name: project.full_name } } # Sound parameter MUST NOT be sent to API if not selected if sound pushover_data[:sound] = sound end Gitlab::HTTP.post('/messages.json', base_uri: BASE_URI, body: pushover_data) end |
#title ⇒ Object
74 75 76 |
# File 'app/models/integrations/pushover.rb', line 74 def title 'Pushover' end |