diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bf0ed39..71891159 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Change Log +## [4.51.0](https://github.com/plivo/plivo-ruby/tree/v4.51.0) (2023-10-16) +**Introducing campaign_source & import partner camapign API** +- New field campaign_source introduced +- Import partner campaign API added + ## [4.50.0](https://github.com/plivo/plivo-ruby/tree/v4.50.0) (2023-10-13) **Feature - WhatsApp message support** - Added new params `template` and new message_type `whatsapp` to [send message API](https://www.plivo.com/docs/sms/api/message#send-a-message) diff --git a/README.md b/README.md index d6f9a7d2..9a401558 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ The Plivo Ruby SDK makes it simpler to integrate communications into your Ruby a Add this line to your application's Gemfile: ```ruby -gem 'plivo', '>= 4.50.0' +gem 'plivo', '>= 4.51.0' ``` And then execute: diff --git a/lib/plivo/resources/campaign.rb b/lib/plivo/resources/campaign.rb index 38332eca..8dd4a248 100644 --- a/lib/plivo/resources/campaign.rb +++ b/lib/plivo/resources/campaign.rb @@ -36,8 +36,9 @@ def get(campaign_id) ## # List all Campaign # @param [Hash] options - # @option options [String] :brand + # @option options [String] :brand_id # @option options [Status] :usecase + # @option options [String] :campaign_source # @option options [Status] :limit # @option options [Status] :offset # @return [Hash] @@ -45,7 +46,7 @@ def list(options=nil) return perform_list_without_object if options.nil? params = {} - %i[usecase brand limit offset].each do |param| + %i[usecase brand_id campaign_source limit offset].each do |param| if options.key?(param) && valid_param?(param, options[param], [String, Integer], true) params[param] = options[param] @@ -96,6 +97,19 @@ def update(campaign_id, options=nil) perform_action_with_identifier(action, 'POST', options) end ## + + #import campaign + def import(options=nil) + valid_param?(:options, options, Hash, true) + if not options[:campaign_id] + raise_invalid_request("campaign_id must be provided") + end + if not options[:campaign_alias] + raise_invalid_request("campaign_alias must be provided") + end + action = 'Import' + perform_action_with_identifier(action, 'POST', options) + end # campaign number link # def number_link(options=nil) diff --git a/lib/plivo/version.rb b/lib/plivo/version.rb index 85e2245b..7c6fd03b 100644 --- a/lib/plivo/version.rb +++ b/lib/plivo/version.rb @@ -1,3 +1,3 @@ module Plivo - VERSION = "4.50.0".freeze + VERSION = "4.51.0".freeze end diff --git a/spec/mocks/campaignImportResponse.json b/spec/mocks/campaignImportResponse.json new file mode 100644 index 00000000..950de304 --- /dev/null +++ b/spec/mocks/campaignImportResponse.json @@ -0,0 +1,5 @@ +{ + "api_id": "2c6c5e16-090a-11ed-bb48-0242ac110004", + "campaign_id": "C1QGYD1", + "message": "Request to import campaign was received and is being processed." +} \ No newline at end of file diff --git a/spec/resource_campaign_spec.rb b/spec/resource_campaign_spec.rb index ed1adc6d..9e59b7ac 100644 --- a/spec/resource_campaign_spec.rb +++ b/spec/resource_campaign_spec.rb @@ -284,6 +284,24 @@ def to_json_delete(obj) method: 'DELETE', data: nil) end +it 'import campaign' do + contents = File.read(Dir.pwd + '/spec/mocks/campaignImportResponse.json') + mock(200, JSON.parse(contents)) + response = to_json_create(@api.campaign + .import(options = {campaign_id:"C1QGYD1", campaign_alias:"plivo campaign"}) + ) + + contents = JSON.parse(contents) + + expect(JSON.parse(response)) + .to eql(contents) + compare_requests(uri: '/v1/Account/MAXXXXXXXXXXXXXXXXXX/10dlc/Campaign/Import/', + method: 'POST', + data: { + campaign_id: "C1QGYD1", + campaign_alias: "plivo campaign" + }) +end it 'delete campaign' do contents = File.read(Dir.pwd + '/spec/mocks/campaignDeleteResponse.json') mock(200, JSON.parse(contents))