hubspot-api-client 4.0.0 → 7.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -1
- data/lib/hubspot-api-client.rb +8 -0
- data/lib/hubspot/codegen/cms/audit-logs/api/default_api.rb +1 -1
- data/lib/hubspot/codegen/cms/performance/configuration.rb +0 -7
- data/lib/hubspot/codegen/cms/site-search/models/search_hit_field.rb +4 -2
- data/lib/hubspot/codegen/crm/companies/api/associations_api.rb +2 -2
- data/lib/hubspot/codegen/crm/companies/api/basic_api.rb +20 -12
- data/lib/hubspot/codegen/crm/companies/api/batch_api.rb +40 -24
- data/lib/hubspot/codegen/crm/companies/api/search_api.rb +10 -6
- data/lib/hubspot/codegen/crm/companies/models/batch_read_input_simple_public_object_id.rb +20 -20
- data/lib/hubspot/codegen/crm/companies/models/batch_response_simple_public_object.rb +29 -38
- data/lib/hubspot/codegen/crm/companies/models/batch_response_simple_public_object_with_errors.rb +333 -0
- data/lib/hubspot/codegen/crm/companies/models/filter.rb +15 -15
- data/lib/hubspot/codegen/crm/companies/models/simple_public_object_batch_input.rb +18 -18
- data/lib/hubspot/codegen/crm/contacts/api/associations_api.rb +2 -2
- data/lib/hubspot/codegen/crm/contacts/api/basic_api.rb +20 -12
- data/lib/hubspot/codegen/crm/contacts/api/batch_api.rb +40 -24
- data/lib/hubspot/codegen/crm/contacts/api/search_api.rb +10 -6
- data/lib/hubspot/codegen/crm/contacts/models/batch_read_input_simple_public_object_id.rb +20 -20
- data/lib/hubspot/codegen/crm/contacts/models/batch_response_simple_public_object.rb +29 -38
- data/lib/hubspot/codegen/crm/contacts/models/batch_response_simple_public_object_with_errors.rb +333 -0
- data/lib/hubspot/codegen/crm/contacts/models/filter.rb +15 -15
- data/lib/hubspot/codegen/crm/contacts/models/simple_public_object_batch_input.rb +18 -18
- data/lib/hubspot/codegen/crm/deals/api/associations_api.rb +2 -2
- data/lib/hubspot/codegen/crm/deals/api/basic_api.rb +20 -12
- data/lib/hubspot/codegen/crm/deals/api/batch_api.rb +40 -24
- data/lib/hubspot/codegen/crm/deals/api/search_api.rb +10 -6
- data/lib/hubspot/codegen/crm/deals/models/batch_read_input_simple_public_object_id.rb +20 -20
- data/lib/hubspot/codegen/crm/deals/models/batch_response_simple_public_object.rb +29 -38
- data/lib/hubspot/codegen/crm/deals/models/batch_response_simple_public_object_with_errors.rb +333 -0
- data/lib/hubspot/codegen/crm/deals/models/filter.rb +15 -15
- data/lib/hubspot/codegen/crm/deals/models/simple_public_object_batch_input.rb +18 -18
- data/lib/hubspot/codegen/crm/extensions/cards/configuration.rb +0 -7
- data/lib/hubspot/codegen/crm/line_items/api/associations_api.rb +2 -2
- data/lib/hubspot/codegen/crm/line_items/api/basic_api.rb +20 -12
- data/lib/hubspot/codegen/crm/line_items/api/batch_api.rb +40 -24
- data/lib/hubspot/codegen/crm/line_items/api/search_api.rb +10 -6
- data/lib/hubspot/codegen/crm/line_items/models/batch_read_input_simple_public_object_id.rb +20 -20
- data/lib/hubspot/codegen/crm/line_items/models/batch_response_simple_public_object.rb +29 -38
- data/lib/hubspot/codegen/crm/line_items/models/batch_response_simple_public_object_with_errors.rb +333 -0
- data/lib/hubspot/codegen/crm/line_items/models/filter.rb +15 -15
- data/lib/hubspot/codegen/crm/line_items/models/simple_public_object_batch_input.rb +18 -18
- data/lib/hubspot/codegen/crm/owners/api/default_api.rb +0 -2
- data/lib/hubspot/codegen/crm/products/api/associations_api.rb +2 -2
- data/lib/hubspot/codegen/crm/products/api/basic_api.rb +20 -12
- data/lib/hubspot/codegen/crm/products/api/batch_api.rb +40 -24
- data/lib/hubspot/codegen/crm/products/api/search_api.rb +10 -6
- data/lib/hubspot/codegen/crm/products/models/batch_read_input_simple_public_object_id.rb +20 -20
- data/lib/hubspot/codegen/crm/products/models/batch_response_simple_public_object.rb +29 -38
- data/lib/hubspot/codegen/crm/products/models/batch_response_simple_public_object_with_errors.rb +333 -0
- data/lib/hubspot/codegen/crm/products/models/filter.rb +15 -15
- data/lib/hubspot/codegen/crm/products/models/simple_public_object_batch_input.rb +18 -18
- data/lib/hubspot/codegen/crm/properties/api/batch_api.rb +30 -18
- data/lib/hubspot/codegen/crm/properties/api/core_api.rb +20 -12
- data/lib/hubspot/codegen/crm/properties/api/groups_api.rb +20 -12
- data/lib/hubspot/codegen/crm/properties/models/batch_read_input_property_name.rb +18 -18
- data/lib/hubspot/codegen/crm/properties/models/batch_response_property.rb +29 -23
- data/lib/hubspot/codegen/crm/properties/models/property_create.rb +14 -4
- data/lib/hubspot/codegen/crm/properties/models/property_update.rb +14 -4
- data/lib/hubspot/codegen/crm/quotes/api/associations_api.rb +1 -157
- data/lib/hubspot/codegen/crm/quotes/api/basic_api.rb +2 -190
- data/lib/hubspot/codegen/crm/quotes/api/batch_api.rb +11 -187
- data/lib/hubspot/codegen/crm/quotes/api/default_api.rb +426 -0
- data/lib/hubspot/codegen/crm/quotes/api/search_api.rb +11 -7
- data/lib/hubspot/codegen/crm/quotes/models/batch_read_input_simple_public_object_id.rb +20 -20
- data/lib/hubspot/codegen/crm/quotes/models/batch_response_simple_public_object.rb +29 -38
- data/lib/hubspot/codegen/crm/quotes/models/batch_response_simple_public_object_with_errors.rb +333 -0
- data/lib/hubspot/codegen/crm/quotes/models/filter.rb +15 -15
- data/lib/hubspot/codegen/crm/quotes/models/simple_public_object_batch_input.rb +18 -18
- data/lib/hubspot/codegen/crm/tickets/api/associations_api.rb +2 -2
- data/lib/hubspot/codegen/crm/tickets/api/basic_api.rb +20 -12
- data/lib/hubspot/codegen/crm/tickets/api/batch_api.rb +40 -24
- data/lib/hubspot/codegen/crm/tickets/api/search_api.rb +10 -6
- data/lib/hubspot/codegen/crm/tickets/models/batch_read_input_simple_public_object_id.rb +20 -20
- data/lib/hubspot/codegen/crm/tickets/models/batch_response_simple_public_object.rb +29 -38
- data/lib/hubspot/codegen/crm/tickets/models/batch_response_simple_public_object_with_errors.rb +333 -0
- data/lib/hubspot/codegen/crm/tickets/models/filter.rb +15 -15
- data/lib/hubspot/codegen/crm/tickets/models/simple_public_object_batch_input.rb +18 -18
- data/lib/hubspot/codegen/oauth/configuration.rb +0 -14
- data/lib/hubspot/codegen/webhooks/api/subscriptions_api.rb +16 -12
- data/lib/hubspot/codegen/webhooks/configuration.rb +0 -7
- data/lib/hubspot/codegen/webhooks/models/batch_response_subscription_response.rb +1 -21
- data/lib/hubspot/codegen/webhooks/models/batch_response_subscription_response_with_errors.rb +331 -0
- data/lib/hubspot/codegen/webhooks/models/settings_response.rb +28 -28
- data/lib/hubspot/codegen/webhooks/models/subscription_create_request.rb +16 -13
- data/lib/hubspot/codegen/webhooks/models/subscription_patch_request.rb +7 -7
- data/lib/hubspot/codegen/webhooks/models/subscription_response.rb +45 -39
- data/lib/hubspot/version.rb +1 -1
- data/sample-apps/companies-app/Gemfile.lock +2 -2
- data/sample-apps/companies-app/app/lib/services/hubspot/associations/create.rb +1 -1
- data/sample-apps/companies-app/app/lib/services/hubspot/associations/delete.rb +1 -1
- data/sample-apps/companies-app/app/lib/services/hubspot/associations/get_by_id.rb +2 -2
- data/sample-apps/companies-app/app/lib/services/hubspot/companies/create.rb +1 -1
- data/sample-apps/companies-app/app/lib/services/hubspot/companies/search.rb +1 -1
- data/sample-apps/companies-app/app/lib/services/hubspot/companies/update.rb +1 -2
- data/sample-apps/companies-app/app/lib/services/hubspot/contacts/search.rb +1 -1
- data/sample-apps/contacts-app/Gemfile.lock +2 -2
- data/sample-apps/contacts-app/app/lib/services/hubspot/contacts/create.rb +1 -1
- data/sample-apps/contacts-app/app/lib/services/hubspot/contacts/search.rb +1 -1
- data/sample-apps/contacts-app/app/lib/services/hubspot/contacts/update.rb +1 -2
- data/sample-apps/contacts-app/app/lib/services/hubspot/properties/create.rb +1 -2
- data/sample-apps/contacts-app/app/lib/services/hubspot/properties/update.rb +1 -2
- data/sample-apps/leaky-bucket-app/app/lib/services/hubspot/contacts/archive_batch.rb +1 -1
- data/sample-apps/leaky-bucket-app/app/lib/services/hubspot/contacts/create_batch.rb +1 -1
- data/sample-apps/oauth-app/app/lib/services/hubspot/contacts/create.rb +1 -1
- data/sample-apps/oauth-app/app/lib/services/hubspot/contacts/search.rb +1 -1
- data/sample-apps/oauth-app/app/lib/services/hubspot/contacts/update.rb +1 -2
- data/sample-apps/rate-limits-redis-sample-app/app/lib/services/hubspot/contacts/archive_batch.rb +1 -1
- data/sample-apps/rate-limits-redis-sample-app/app/lib/services/hubspot/contacts/create_batch.rb +1 -1
- data/sample-apps/search-result-paging-app/app/lib/services/hubspot/contacts/search.rb +1 -1
- data/sample-apps/search-result-paging-app/app/lib/services/hubspot/properties/create.rb +1 -2
- data/sample-apps/trello-integration-app/.env.template +7 -0
- data/sample-apps/trello-integration-app/.gitignore +35 -0
- data/sample-apps/trello-integration-app/.rspec +1 -0
- data/sample-apps/trello-integration-app/.ruby-version +1 -0
- data/sample-apps/trello-integration-app/Dockerfile +22 -0
- data/sample-apps/trello-integration-app/Gemfile +38 -0
- data/sample-apps/trello-integration-app/Gemfile.lock +314 -0
- data/sample-apps/trello-integration-app/README.md +31 -0
- data/sample-apps/trello-integration-app/Rakefile +6 -0
- data/sample-apps/trello-integration-app/app/assets/config/manifest.js +3 -0
- data/sample-apps/trello-integration-app/app/assets/images/.keep +0 -0
- data/sample-apps/trello-integration-app/app/assets/images/right-arrow.png +0 -0
- data/sample-apps/trello-integration-app/app/assets/javascripts/application.js +22 -0
- data/sample-apps/trello-integration-app/app/assets/javascripts/cable.js +13 -0
- data/sample-apps/trello-integration-app/app/assets/javascripts/channels/.keep +0 -0
- data/sample-apps/trello-integration-app/app/assets/javascripts/jquery-spinner.min.js +11071 -0
- data/sample-apps/trello-integration-app/app/assets/javascripts/lodash.js +15972 -0
- data/sample-apps/trello-integration-app/app/assets/javascripts/mappings.js +78 -0
- data/sample-apps/trello-integration-app/app/assets/javascripts/typeahead.bundle.min.js +8 -0
- data/sample-apps/trello-integration-app/app/assets/stylesheets/application.css +46 -0
- data/sample-apps/trello-integration-app/app/assets/stylesheets/authorization.scss +34 -0
- data/sample-apps/trello-integration-app/app/assets/stylesheets/jquery-spinner.css +33 -0
- data/sample-apps/trello-integration-app/app/assets/stylesheets/mappings.scss +55 -0
- data/sample-apps/trello-integration-app/app/assets/stylesheets/navigation.scss +43 -0
- data/sample-apps/trello-integration-app/app/assets/stylesheets/search_frame.scss +81 -0
- data/sample-apps/trello-integration-app/app/controllers/application_controller.rb +38 -0
- data/sample-apps/trello-integration-app/app/controllers/concerns/.keep +0 -0
- data/sample-apps/trello-integration-app/app/controllers/concerns/exception_handler.rb +12 -0
- data/sample-apps/trello-integration-app/app/controllers/home_controller.rb +20 -0
- data/sample-apps/trello-integration-app/app/controllers/mappings_controller.rb +64 -0
- data/sample-apps/trello-integration-app/app/controllers/oauth/authorization_controller.rb +28 -0
- data/sample-apps/trello-integration-app/app/controllers/trello/cards_controller.rb +94 -0
- data/sample-apps/trello-integration-app/app/controllers/trello/webhooks_controller.rb +30 -0
- data/sample-apps/trello-integration-app/app/helpers/application_helper.rb +2 -0
- data/sample-apps/trello-integration-app/app/helpers/oauth/authorization_helper.rb +11 -0
- data/sample-apps/trello-integration-app/app/lib/services/hubspot/authorization/authorize.rb +17 -0
- data/sample-apps/trello-integration-app/app/lib/services/hubspot/authorization/get_authorization_uri.rb +35 -0
- data/sample-apps/trello-integration-app/app/lib/services/hubspot/authorization/tokens/base.rb +21 -0
- data/sample-apps/trello-integration-app/app/lib/services/hubspot/authorization/tokens/generate.rb +28 -0
- data/sample-apps/trello-integration-app/app/lib/services/hubspot/authorization/tokens/refresh.rb +35 -0
- data/sample-apps/trello-integration-app/app/lib/services/hubspot/deals/get_by_id.rb +15 -0
- data/sample-apps/trello-integration-app/app/lib/services/hubspot/deals/update.rb +17 -0
- data/sample-apps/trello-integration-app/app/lib/services/hubspot/extensions_cards/create.rb +82 -0
- data/sample-apps/trello-integration-app/app/lib/services/hubspot/pipelines/get_all.rb +11 -0
- data/sample-apps/trello-integration-app/app/lib/services/hubspot/pipelines/get_by_id.rb +15 -0
- data/sample-apps/trello-integration-app/app/lib/services/trello/authorization/authorize.rb +20 -0
- data/sample-apps/trello-integration-app/app/lib/services/trello/boards/get_all.rb +11 -0
- data/sample-apps/trello-integration-app/app/lib/services/trello/boards/get_by_id.rb +19 -0
- data/sample-apps/trello-integration-app/app/lib/services/trello/cards/format.rb +78 -0
- data/sample-apps/trello-integration-app/app/lib/services/trello/cards/get_by_id.rb +15 -0
- data/sample-apps/trello-integration-app/app/lib/services/trello/cards/search.rb +15 -0
- data/sample-apps/trello-integration-app/app/lib/services/trello/webhooks/create.rb +31 -0
- data/sample-apps/trello-integration-app/app/lib/services/trello/webhooks/delete.rb +17 -0
- data/sample-apps/trello-integration-app/app/lib/services/trello/webhooks/update.rb +19 -0
- data/sample-apps/trello-integration-app/app/models/application_record.rb +3 -0
- data/sample-apps/trello-integration-app/app/models/concerns/.keep +0 -0
- data/sample-apps/trello-integration-app/app/models/deal_association.rb +2 -0
- data/sample-apps/trello-integration-app/app/models/extension_card.rb +4 -0
- data/sample-apps/trello-integration-app/app/models/hubspot_token.rb +19 -0
- data/sample-apps/trello-integration-app/app/models/mapping.rb +2 -0
- data/sample-apps/trello-integration-app/app/models/trello_token.rb +19 -0
- data/sample-apps/trello-integration-app/app/models/webhook.rb +2 -0
- data/sample-apps/trello-integration-app/app/views/home/index.html.erb +23 -0
- data/sample-apps/trello-integration-app/app/views/home/success.html.erb +11 -0
- data/sample-apps/trello-integration-app/app/views/layouts/application.html.erb +23 -0
- data/sample-apps/trello-integration-app/app/views/mappings/_mapping.html.erb +13 -0
- data/sample-apps/trello-integration-app/app/views/mappings/index.html.erb +44 -0
- data/sample-apps/trello-integration-app/app/views/oauth/authorization/login.html.erb +42 -0
- data/sample-apps/trello-integration-app/app/views/shared/_header.html.erb +15 -0
- data/sample-apps/trello-integration-app/app/views/trello/cards/search_frame.html.erb +69 -0
- data/sample-apps/trello-integration-app/app/views/trello/cards/search_frame_success.html.erb +7 -0
- data/sample-apps/trello-integration-app/bin/bundle +3 -0
- data/sample-apps/trello-integration-app/bin/rails +9 -0
- data/sample-apps/trello-integration-app/bin/rake +9 -0
- data/sample-apps/trello-integration-app/bin/setup +36 -0
- data/sample-apps/trello-integration-app/bin/spring +17 -0
- data/sample-apps/trello-integration-app/bin/update +31 -0
- data/sample-apps/trello-integration-app/bin/yarn +11 -0
- data/sample-apps/trello-integration-app/config.ru +5 -0
- data/sample-apps/trello-integration-app/config/application.rb +20 -0
- data/sample-apps/trello-integration-app/config/boot.rb +3 -0
- data/sample-apps/trello-integration-app/config/cable.yml +10 -0
- data/sample-apps/trello-integration-app/config/database.yml +16 -0
- data/sample-apps/trello-integration-app/config/environment.rb +5 -0
- data/sample-apps/trello-integration-app/config/environments/development.rb +61 -0
- data/sample-apps/trello-integration-app/config/environments/production.rb +94 -0
- data/sample-apps/trello-integration-app/config/environments/test.rb +46 -0
- data/sample-apps/trello-integration-app/config/initializers/assets.rb +14 -0
- data/sample-apps/trello-integration-app/config/initializers/filter_parameter_logging.rb +4 -0
- data/sample-apps/trello-integration-app/config/initializers/hubspot-api-client.rb +3 -0
- data/sample-apps/trello-integration-app/config/initializers/mime_types.rb +1 -0
- data/sample-apps/trello-integration-app/config/initializers/omniauth.rb +11 -0
- data/sample-apps/trello-integration-app/config/initializers/trello.rb +1 -0
- data/sample-apps/trello-integration-app/config/initializers/wrap_parameters.rb +14 -0
- data/sample-apps/trello-integration-app/config/locales/en.yml +33 -0
- data/sample-apps/trello-integration-app/config/puma.rb +34 -0
- data/sample-apps/trello-integration-app/config/routes.rb +29 -0
- data/sample-apps/trello-integration-app/config/spring.rb +6 -0
- data/sample-apps/trello-integration-app/config/storage.yml +34 -0
- data/sample-apps/trello-integration-app/db/migrate/20200624132327_create_hubspot_tokens.rb +10 -0
- data/sample-apps/trello-integration-app/db/migrate/20200624132336_create_trello_tokens.rb +8 -0
- data/sample-apps/trello-integration-app/db/migrate/20200624132337_create_deal_associations.rb +8 -0
- data/sample-apps/trello-integration-app/db/migrate/20200702130530_create_extension_cards.rb +8 -0
- data/sample-apps/trello-integration-app/db/migrate/20200715143913_create_mappings.rb +12 -0
- data/sample-apps/trello-integration-app/db/migrate/20200727083656_create_webhooks.rb +9 -0
- data/sample-apps/trello-integration-app/db/schema.rb +52 -0
- data/sample-apps/trello-integration-app/db/seeds.rb +7 -0
- data/sample-apps/trello-integration-app/docker-compose.yml +41 -0
- data/sample-apps/trello-integration-app/docker-entrypoint.sh +8 -0
- data/sample-apps/trello-integration-app/lib/assets/.keep +0 -0
- data/sample-apps/trello-integration-app/lib/middlewares/trello_payload_params_handler.rb +18 -0
- data/sample-apps/trello-integration-app/lib/tasks/.keep +0 -0
- data/sample-apps/trello-integration-app/log/.keep +0 -0
- data/sample-apps/trello-integration-app/package.json +5 -0
- data/sample-apps/trello-integration-app/public/404.html +67 -0
- data/sample-apps/trello-integration-app/public/422.html +67 -0
- data/sample-apps/trello-integration-app/public/500.html +66 -0
- data/sample-apps/trello-integration-app/public/favicon.ico +0 -0
- data/sample-apps/trello-integration-app/public/robots.txt +1 -0
- data/sample-apps/trello-integration-app/tmp/.keep +0 -0
- data/sample-apps/webhooks-contacts-app/app/lib/services/hubspot/contacts/get_batch.rb +1 -4
- metadata +277 -2
@@ -0,0 +1,20 @@
|
|
1
|
+
module Services
|
2
|
+
module Trello
|
3
|
+
module Authorization
|
4
|
+
class Authorize
|
5
|
+
def initialize(tokens:)
|
6
|
+
@tokens = tokens
|
7
|
+
end
|
8
|
+
|
9
|
+
def call
|
10
|
+
::Trello.configure do |config|
|
11
|
+
config.consumer_key = ENV['TRELLO_KEY']
|
12
|
+
config.consumer_secret = ENV['TRELLO_SECRET']
|
13
|
+
config.oauth_token = @tokens['token']
|
14
|
+
config.oauth_token_secret = @tokens['secret']
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
module Services
|
2
|
+
module Trello
|
3
|
+
module Cards
|
4
|
+
class Format
|
5
|
+
include Rails.application.routes.url_helpers
|
6
|
+
|
7
|
+
def initialize(deal_associated:, card:, request:)
|
8
|
+
@deal_associated = deal_associated
|
9
|
+
@card = card
|
10
|
+
@request = request
|
11
|
+
end
|
12
|
+
|
13
|
+
def call
|
14
|
+
response = {}
|
15
|
+
if @card.present?
|
16
|
+
response[:results] = [card_info]
|
17
|
+
end
|
18
|
+
|
19
|
+
if @deal_associated
|
20
|
+
response['primaryAction'] = {
|
21
|
+
'type': 'ACTION_HOOK',
|
22
|
+
'httpMethod': 'DELETE',
|
23
|
+
'associatedObjectProperties': [
|
24
|
+
'hs_object_id',
|
25
|
+
],
|
26
|
+
'uri': url_for(
|
27
|
+
controller: 'trello/cards',
|
28
|
+
action: :delete_association,
|
29
|
+
only_path: false,
|
30
|
+
protocol: 'https',
|
31
|
+
host: @request.host
|
32
|
+
),
|
33
|
+
'label': 'Remove the association'
|
34
|
+
}
|
35
|
+
else
|
36
|
+
response['primaryAction'] = {
|
37
|
+
'type': 'IFRAME',
|
38
|
+
'width': 650,
|
39
|
+
'height': 350,
|
40
|
+
'uri': url_for(
|
41
|
+
controller: 'trello/cards',
|
42
|
+
action: :search_frame,
|
43
|
+
only_path: false,
|
44
|
+
protocol: 'https',
|
45
|
+
host: @request.host
|
46
|
+
),
|
47
|
+
'label': 'Associate Trello card',
|
48
|
+
'associatedObjectProperties': [
|
49
|
+
'hs_object_id', 'dealname',
|
50
|
+
],
|
51
|
+
}
|
52
|
+
end
|
53
|
+
|
54
|
+
response
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def card_info
|
60
|
+
result = {
|
61
|
+
objectId: @card.short_id,
|
62
|
+
title: @card.name,
|
63
|
+
link: @card.short_url
|
64
|
+
}
|
65
|
+
members = @card.members
|
66
|
+
result[:properties] = [
|
67
|
+
{
|
68
|
+
label: 'Members',
|
69
|
+
dataType: 'STRING',
|
70
|
+
value: members.map { |m| m.username }.join(', ')
|
71
|
+
}
|
72
|
+
] if members.present?
|
73
|
+
result
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Services
|
2
|
+
module Trello
|
3
|
+
module Webhooks
|
4
|
+
class Create
|
5
|
+
def initialize(callback_url:, id_model:)
|
6
|
+
@callback_url = callback_url
|
7
|
+
@id_model = id_model
|
8
|
+
end
|
9
|
+
|
10
|
+
def call
|
11
|
+
response = ::HTTParty.post(
|
12
|
+
"https://api.trello.com/1/tokens/"\
|
13
|
+
"#{TrelloToken.instance.token}/webhooks/?key="\
|
14
|
+
"#{ENV["TRELLO_KEY"]}",
|
15
|
+
query: {
|
16
|
+
description: "test",
|
17
|
+
callbackURL: @callback_url,
|
18
|
+
idModel: @id_model
|
19
|
+
},
|
20
|
+
headers: { "Content-Type" => "application/x-www-form-urlencoded" }
|
21
|
+
)
|
22
|
+
|
23
|
+
parsed_body = JSON.parse(response.body)
|
24
|
+
return false if parsed_body['id'].nil?
|
25
|
+
|
26
|
+
JSON.parse(response.body)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Services
|
2
|
+
module Trello
|
3
|
+
module Webhooks
|
4
|
+
class Update
|
5
|
+
def initialize(webhook_id:, callback_url:)
|
6
|
+
@webhook_id = webhook_id
|
7
|
+
@callback_url = callback_url
|
8
|
+
end
|
9
|
+
|
10
|
+
def call
|
11
|
+
webhook = ::Trello::Webhook.find(@webhook_id)
|
12
|
+
|
13
|
+
webhook.update_fields(callback_url: @callback_url, active: true)
|
14
|
+
webhook.save
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class HubspotToken < ApplicationRecord
|
2
|
+
class TokenAlreadyExist < RuntimeError; end
|
3
|
+
|
4
|
+
before_create :confirm_singularity
|
5
|
+
|
6
|
+
def self.instance
|
7
|
+
first_or_create!
|
8
|
+
end
|
9
|
+
|
10
|
+
def filled?
|
11
|
+
refresh_token.present? && access_token.present?
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def confirm_singularity
|
17
|
+
raise(TokenAlreadyExist, 'There can be only one.') if HubspotToken.any?
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class TrelloToken < ApplicationRecord
|
2
|
+
class TokenAlreadyExist < RuntimeError; end
|
3
|
+
|
4
|
+
before_create :confirm_singularity
|
5
|
+
|
6
|
+
def self.instance
|
7
|
+
first_or_create!
|
8
|
+
end
|
9
|
+
|
10
|
+
def filled?
|
11
|
+
token.present? && secret.present?
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def confirm_singularity
|
17
|
+
raise(TokenAlreadyExist, 'There can be only one.') if TrelloToken.any?
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<div class="container">
|
2
|
+
<% if @error.present? %>
|
3
|
+
<h3><%= @error.message %></h3>
|
4
|
+
<% else %>
|
5
|
+
<div class="row">
|
6
|
+
<div class="column">
|
7
|
+
<h3>CRM extension card initialization <%= "card_id = #{@card_id}" if @card_id.present? %>:</h3>
|
8
|
+
<ol>
|
9
|
+
<% if @card_id.nil? %>
|
10
|
+
<li>New CRM extension card will be created (with "<%= @card_title %>" title)</li>
|
11
|
+
<% end %>
|
12
|
+
<li>"Data fetch URL" will be updated to <a href="<%= @data_fetch_url %>"><%= @data_fetch_url %></a></li>
|
13
|
+
<li>"Deals" in "Target record types" section will be activated with "hs_object_id", "dealname" properties sent form HubSpot</li>
|
14
|
+
<li>"Custom actions"->"Base URL" section will be updated with <a href="<%= @base_url %>"><%= @base_url %></a></li>
|
15
|
+
</ol>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<%= form_with(url: '/create_card', method: :post, local: true) do %>
|
20
|
+
<%= submit_tag("Continue") %>
|
21
|
+
<% end %>
|
22
|
+
<% end %>
|
23
|
+
</div>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<div class="container">
|
2
|
+
<% if @error.present? %>
|
3
|
+
<h3><%= @error.message %></h3>
|
4
|
+
<% else %>
|
5
|
+
<div class="row">
|
6
|
+
<div class="column">
|
7
|
+
<h4>Extension card with id=<%= @extension_card.card_id %> is ready to use. Now you can test trello integration via HubSpot interface deal page.</h4>
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
<% end %>
|
11
|
+
</div>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<title>HubSpot Ruby sample Trello integration app</title>
|
6
|
+
<%= csrf_meta_tags %>
|
7
|
+
<%= csp_meta_tag %>
|
8
|
+
|
9
|
+
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:300,300italic,700,700italic">
|
10
|
+
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.css">
|
11
|
+
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/milligram/1.3.0/milligram.css">
|
12
|
+
|
13
|
+
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
|
14
|
+
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
|
15
|
+
</head>
|
16
|
+
|
17
|
+
<body>
|
18
|
+
<%= render partial: "shared/header"%>
|
19
|
+
<div class="wrapper">
|
20
|
+
<%= yield %>
|
21
|
+
</div>
|
22
|
+
</body>
|
23
|
+
</html>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<div class="mapping-row row <%= local_assigns[:classes] %>">
|
2
|
+
<div class="column board-list-id">
|
3
|
+
<%= object[:board_list_name] %>
|
4
|
+
</div>
|
5
|
+
<div class="column arrow">
|
6
|
+
<%= image_tag('right-arrow.png') %>
|
7
|
+
</div>
|
8
|
+
<div class="column pipeline-stage-id">
|
9
|
+
<%= object[:pipeline_stage_label] %>
|
10
|
+
</div>
|
11
|
+
<div class="mapping-id"><%= object[:id] %></div>
|
12
|
+
<button type="button" class="column remove-button">Remove</button>
|
13
|
+
</div>
|
@@ -0,0 +1,44 @@
|
|
1
|
+
<div class="container" id="mappings-container">
|
2
|
+
<% if @error.present? %>
|
3
|
+
<h3><%= @error.message %></h3>
|
4
|
+
<% else %>
|
5
|
+
<div class="row">
|
6
|
+
<div class="column boards">
|
7
|
+
<h3>Boards</h3>
|
8
|
+
<%= select_tag(
|
9
|
+
:boards,
|
10
|
+
options_for_select(@boards.map { |board| [board.name, board.id] }),
|
11
|
+
include_blank: '-- select pipeline --'
|
12
|
+
) %>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<div class="column pipelines">
|
16
|
+
<h3>Pipelines</h3>
|
17
|
+
<%= select_tag(
|
18
|
+
:pipelines,
|
19
|
+
options_for_select(@pipelines.map { |pipeline| [pipeline.label, pipeline.id] }),
|
20
|
+
include_blank: '-- select board --'
|
21
|
+
) %>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<%= form_with(url: '/mappings', method: :post, class: 'row mapping-select') do %>
|
26
|
+
<%= select_tag('mapping[board_list_id]', nil, include_blank: '-- select trello list --', class: 'column') %>
|
27
|
+
<%= select_tag('mapping[pipeline_stage_id]', nil, include_blank: '-- select pipeline stage --', class: 'column') %>
|
28
|
+
<%= hidden_field(:mapping, :board_id, value: nil)%>
|
29
|
+
<%= hidden_field(:mapping, :pipeline_id, value: nil)%>
|
30
|
+
<%= submit_tag('Add row', class: 'column') %>
|
31
|
+
<% end %>
|
32
|
+
|
33
|
+
<div class="mappings">
|
34
|
+
<div class="row mapping-headers">
|
35
|
+
<div class="column">Board list</div>
|
36
|
+
<div class="column"></div>
|
37
|
+
<div class="column">Pipeline stage</div>
|
38
|
+
<div class="column remove-button"></div>
|
39
|
+
</div>
|
40
|
+
<%= render 'mapping', object: @mapping, object: {}, classes: 'template' %>
|
41
|
+
</div>
|
42
|
+
<% end %>
|
43
|
+
</div>
|
44
|
+
|