expresspigeon-ruby 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 294edf79278fdc87552d25a9ea25245f0c77d760
4
- data.tar.gz: f7ed25d8e26eb73b7e66044352c724a51e488472
3
+ metadata.gz: d3531f1f4bb4e7b172a5529c14fb7ff4135fae0f
4
+ data.tar.gz: 7656345b121e756d514a4827815d917d4f9015a3
5
5
  SHA512:
6
- metadata.gz: 02494b9f8a07d6ea1f16fd437a5aa0982d0ceb2e2fc839254c795aa899d377b514511b96bd67ee7fe8171a05680e0ccc6dd4e6590b1b29813802c6deb22de7ca
7
- data.tar.gz: de2c151ea4f6903598beebd48070c45d2f065922862e02fae85db9b630e21e9499c47220107a3ff3203fb55427baa4fb32ec91fab54d50ee6bc23f9d2657d94f
6
+ metadata.gz: e523bae70bab3fb65377dd6336bba0542ad8ac0780b62e240187bd1153f277aefca9b55c6992fcb45f54515642311f775b14e1d4ca310bbb8a76da85599dfddd
7
+ data.tar.gz: a7b7c9626ea4a95469d8b3b9ab6a07c647c1a5fa50c5cbab530fab6a4f4e249a6544283467a0b1b03c516cba41b56a49768bb3b4c8cbd814558693567fa689c8
data/.gitignore CHANGED
@@ -7,7 +7,3 @@ rspec.sh
7
7
  set_env
8
8
 
9
9
  *.txt
10
-
11
- test/send.sh
12
-
13
- expresspigeon-ruby-*.gem
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- expresspigeon-ruby (0.0.8)
5
- rest-client (~> 1.8)
4
+ expresspigeon-ruby (0.0.5)
5
+ rest-client (~> 1.8.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -16,7 +16,7 @@ Or install it yourself as:
16
16
 
17
17
  $ gem install expresspigeon-ruby
18
18
 
19
- ## Sending a simple message
19
+ ## Usage
20
20
 
21
21
  Sending a transactional message is easy:
22
22
 
@@ -40,27 +40,6 @@ sleep 5
40
40
  puts MESSAGES.report message_response.id
41
41
  ```
42
42
 
43
- ## Sending a message with attachments
44
-
45
- ```ruby
46
- MESSAGES = ExpressPigeon::API.messages.auth_key(ENV['AUTH_KEY'])
47
-
48
- attachments = %W{attachments/attachment1.txt attachments/smile.pdf attachments/example.ics}
49
-
50
- puts MESSAGES.send_message(
51
- 123, # template_id
52
- 'john@doe.com', #to
53
- 'jane@doe.com', #reply_to
54
- "Jane Doe", #from_name
55
- "Want to get out for a dinner?", #subject
56
- {first_name: 'John', main_course: 'stake'}, #merge_fields
57
- false, #view_online
58
- true, #click_tracking
59
- true, #suppress_address
60
- attachments #file paths to upload as attachments
61
- )
62
-
63
- ```
64
43
 
65
44
  ## Contributing
66
45
 
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
19
 
20
- gem.add_runtime_dependency 'rest-client', '~> 1.8'
20
+ gem.add_runtime_dependency 'rest-client', '~> 1.8.0'
21
+
21
22
  gem.add_development_dependency "rspec", "~> 2.6"
22
- gem.licenses = ['MIT']
23
23
  end
@@ -8,9 +8,7 @@ require 'rest_client'
8
8
  module ExpressPigeon
9
9
 
10
10
  AUTH_KEY = ENV['EXPRESSPIGEON_AUTH_KEY']
11
-
12
- # EXPRESSPIGEON_ROOT env var is used to point to testenv
13
- ROOT = ENV.has_key?('EXPRESSPIGEON_ROOT') ? ENV['EXPRESSPIGEON_ROOT'] : 'https://api.expresspigeon.com/'
11
+ ROOT = 'https://api.expresspigeon.com/'
14
12
  USE_SSL = true
15
13
 
16
14
  module API
@@ -21,6 +19,14 @@ module ExpressPigeon
21
19
  self
22
20
  end
23
21
 
22
+ def open_timeout=(timeout)
23
+ @open_timeout = timeout
24
+ end
25
+
26
+ def read_timeout=(timeout)
27
+ @read_timeout = timeout
28
+ end
29
+
24
30
  def root(root)
25
31
  @root = root
26
32
  self
@@ -47,7 +53,13 @@ module ExpressPigeon
47
53
  end
48
54
 
49
55
  if block_given?
50
- Net::HTTP.start(uri.host, uri.port, :use_ssl => USE_SSL) do |http|
56
+ Net::HTTP.start(
57
+ uri.host,
58
+ uri.port,
59
+ :use_ssl => USE_SSL,
60
+ :read_timeout => @read_timeout,
61
+ :open_timeout => @open_timeout,
62
+ ) do |http|
51
63
  http.request req do |res|
52
64
  res.read_body do |seg|
53
65
  yield seg
@@ -55,19 +67,20 @@ module ExpressPigeon
55
67
  end
56
68
  end
57
69
  else
58
- resp = Net::HTTP.start(uri.host, uri.port, :use_ssl => USE_SSL) do |http|
70
+ resp = Net::HTTP.start(
71
+ uri.host,
72
+ uri.port,
73
+ :use_ssl => USE_SSL,
74
+ :read_timeout => @read_timeout,
75
+ :open_timeout => @open_timeout,
76
+ ) do |http|
59
77
  http.request req
60
78
  end
61
-
62
- if resp.content_type == 'application/json'
63
- parsed = JSON.parse(resp.body)
64
- if parsed.kind_of? Hash
65
- MetaResponse.new parsed
66
- else
67
- parsed
68
- end
79
+ parsed = JSON.parse(resp.body)
80
+ if parsed.kind_of? Hash
81
+ MetaResponse.new parsed
69
82
  else
70
- resp.body
83
+ parsed
71
84
  end
72
85
  end
73
86
  end
@@ -108,7 +121,7 @@ module ExpressPigeon
108
121
  Messages.new
109
122
  end
110
123
 
111
- def self.autoresponders
124
+ def self.auto_responders
112
125
  AutoResponders.new
113
126
  end
114
127
 
@@ -12,8 +12,10 @@ module ExpressPigeon
12
12
  #
13
13
  # Returns an array of autoresponders.
14
14
  #
15
+ # Docs: https://expresspigeon.com/api#auto_responders_get_all
16
+ #
15
17
  def all
16
- get @endpoint
18
+ get endpoint
17
19
  end
18
20
 
19
21
  # Start for a contact
@@ -23,9 +25,10 @@ module ExpressPigeon
23
25
  # :param auto_responder_id: autoresponder id to be started for a contact
24
26
  # :param email: contact email
25
27
  #
28
+ # Docs: https://expresspigeon.com/api#auto_responders_start
26
29
  #
27
30
  def start(auto_responder_id, email)
28
- post "#{@endpoint}/#{auto_responder_id}/start", email: email
31
+ post "#{endpoint}/#{auto_responder_id}/start", email: email
29
32
  end
30
33
 
31
34
  # Stop for a contact
@@ -38,45 +41,7 @@ module ExpressPigeon
38
41
  # Docs: https://expresspigeon.com/api#auto_responders_stop
39
42
  #
40
43
  def stop(auto_responder_id, email)
41
- post "#{@endpoint}/#{auto_responder_id}/stop", email: email
42
- end
43
-
44
- # Reports for a single responder
45
- #
46
- # :param auto_responder_id: autoresponder id to be stopped for a contact
47
- # :param email: contact email
48
- #
49
- def report(auto_responder_id)
50
- get "#{@endpoint}/#{auto_responder_id}"
51
- end
52
-
53
-
54
- # Reports bounces for autoresponder part
55
- #
56
- # :param auto_responder_id: autoresponder id to be stopped for a contact
57
- # :param auto_responder_part_id: id of the autoresponder part in questions
58
- #
59
- def bounced(auto_responder_id, autoresponder_part_id)
60
- get "#{@endpoint}/#{auto_responder_id}/#{autoresponder_part_id}/bounced"
61
- end
62
-
63
- # Reports unsubscribed for autoresponder part
64
- #
65
- # :param auto_responder_id: autoresponder id to be stopped for a contact
66
- # :param auto_responder_part_id: id of the autoresponder part in questions
67
- #
68
- def unsubscribed(auto_responder_id, autoresponder_part_id)
69
- get "#{@endpoint}/#{auto_responder_id}/#{autoresponder_part_id}/unsubscribed"
70
- end
71
-
72
-
73
- # Get spam reports for autoresponder part
74
- #
75
- # :param auto_responder_id: autoresponder id to be stopped for a contact
76
- # :param auto_responder_part_id: id of the autoresponder part in questions
77
- #
78
- def spam(auto_responder_id, autoresponder_part_id)
79
- get "#{@endpoint}/#{auto_responder_id}/#{autoresponder_part_id}/spam"
44
+ post "#{endpoint}/#{auto_responder_id}/stop", email: email
80
45
  end
81
46
  end
82
47
  end
@@ -14,14 +14,6 @@ module ExpressPigeon
14
14
  get "#{@endpoint}/#{campaign_id}"
15
15
  end
16
16
 
17
- def opened(campaign_id)
18
- get "#{@endpoint}/#{campaign_id}/opened"
19
- end
20
-
21
- def clicked(campaign_id)
22
- get "#{@endpoint}/#{campaign_id}/clicked"
23
- end
24
-
25
17
  def bounced(campaign_id)
26
18
  get "#{@endpoint}/#{campaign_id}/bounced"
27
19
  end
@@ -11,7 +11,6 @@ module ExpressPigeon
11
11
  end
12
12
 
13
13
 
14
-
15
14
  # JSON document represents a contact to be created or updated.
16
15
  # The email field is required.
17
16
  # When updating a contact, list_id is optional,
@@ -33,13 +33,6 @@ module ExpressPigeon
33
33
  end
34
34
 
35
35
 
36
- #
37
- #:returns: status of upload
38
- #
39
- def upload_status(list_id)
40
- get "#{@endpoint}/upload_status/#{list_id}"
41
- end
42
-
43
36
  ##
44
37
  # Removes a list with a given id. A list must be enabled and has no dependent subscriptions and/or scheduled campaigns.
45
38
  #
@@ -7,43 +7,19 @@ module ExpressPigeon
7
7
  @endpoint = 'messages'
8
8
  end
9
9
 
10
- # Sends a transactional message using ExpressPigeon Rest API
11
- #
12
- # * +template_id+ - ID of a template to use for sending
13
- # * +to+ - destination email address
14
- # * +reply_to+ - return email address
15
- # * +from_name+ - name of sender
16
- # * +subject+ - subject of email
17
- # * +merge fields+ - hash with dynamic values to merge into a template
18
- # * +view_online+ - generate "view online" link in the template
19
- # * +click_tracking+ - enable/disable click tracking (and URL rewriting)
20
- # * +suppress_address+ - enable/disable display of physical address at the bottom of newsletter.
21
- # * +attachments+ - array of file paths to attach to email. Size limit: 1k per attachment, maximum 3 attachments.
22
- # * +headers+ - hash with headers to include into the message. The header 'Sender' will override a standard behavior of the platform.
23
- def send_message(template_id, to, reply_to, from_name, subject, merge_fields = nil, view_online = false,
24
- click_tracking = true, suppress_address = false, attachments = nil, headers = nil)
25
- if attachments
26
- upload(template_id, to, reply_to, from_name, subject, merge_fields, view_online, click_tracking,
27
- suppress_address, attachments, headers)
28
- else
29
- post @endpoint, params = {template_id: template_id, to: to, reply_to: reply_to, from: from_name,
30
- subject: subject, merge_fields: merge_fields, view_online: view_online,
31
- click_tracking: click_tracking, suppress_address: suppress_address, headers: headers}
32
- end
10
+ def send_message(template_id, to, reply_to, from_name, subject, merge_fields = nil, view_online = false, click_tracking = true)
11
+ post @endpoint, params = {template_id: template_id, :to => to, reply_to: reply_to, :from => from_name, :subject => subject,
12
+ :merge_fields => merge_fields, :view_online => view_online, :click_tracking => click_tracking}
33
13
  end
34
14
 
35
-
36
- # Retrieve report for a single message.
37
- #
38
- # * +message_id+ - ID of a message sent previously
39
15
  def report(message_id)
40
16
  get "#{@endpoint}/#{message_id}"
41
17
  end
42
18
 
43
- # Report for a group of messages in a given time period.
44
19
  #
45
- # * +start_date+ is instance of Time
46
- # * +end_date+ is instance of Time
20
+ #
21
+ # start_date is instance of Time
22
+ # end_date is instance of Time
47
23
  def reports(from_id, start_date = nil, end_date = nil)
48
24
  params = []
49
25
 
@@ -70,68 +46,7 @@ module ExpressPigeon
70
46
  end
71
47
 
72
48
  get query
73
- end
74
-
75
-
76
- # Sends a transactional message with attachments using ExpressPigeon Rest API.
77
- # This method is not used directly, instead use +send_message()+
78
- #
79
- # * +template_id+ - ID of a template to use for sending
80
- # * +to+ - destination email address
81
- # * +reply_to+ - return email address
82
- # * +from_name+ - name of sender
83
- # * +subject+ - subject of email
84
- # * +merge fields+ - hash with dynamic values to merge into a template
85
- # * +view_online+ - generate "view online" link in the template
86
- # * +click_tracking+ - enable/disable click tracking (and URL rewriting)
87
- # * +suppress_address+ - enable/disable display of physical address at the bottom of newsletter.
88
- # * +attachments+ - array of file paths to attach to email. Size limit: 1k per attachment, maximum 3 attachments.
89
- def upload(template_id, to, reply_to, from_name, subject, merge_fields, view_online, click_tracking, suppress_address, attachments, headers)
90
- path = "#{@root ? @root : ROOT}/#{@endpoint}"
91
- begin
92
- payload = prepare_payload(template_id, to, reply_to, from_name, subject, merge_fields, view_online, click_tracking, suppress_address, attachments, headers)
93
- request = RestClient::Request.new(
94
- :method => :post,
95
- :headers => {:'X-auth-key' => get_auth_key},
96
- :url => path,
97
- :payload => payload)
98
- resp = request.execute
99
- res = resp.body
100
- rescue RestClient::ExceptionWithResponse => err
101
- res = err.response
102
- end
103
-
104
- parsed = JSON.parse(res)
105
- if parsed.kind_of? Hash
106
- MetaResponse.new parsed
107
- else
108
- parsed
109
- end
110
- end
111
-
112
-
113
- def prepare_payload(template_id, to, reply_to, from, subject, merge_fields, view_online, click_tracking, suppress_address, attachments, headers)
114
- payload = { multipart: true }
115
- payload[:template_id] = template_id
116
- payload[:to] = to
117
- payload[:reply_to] = reply_to
118
- payload[:subject] = subject
119
- payload[:from] = from
120
- payload[:merge_fields] = merge_fields.to_json
121
- payload[:headers] = headers.to_json
122
- payload[:view_online] = view_online
123
- payload[:click_tracking] = click_tracking
124
- payload[:suppress_address] = suppress_address
125
49
 
126
- attachments.each { |attachment|
127
- if File.file?(attachment)
128
- file = File.basename(attachment)
129
- payload[file] = File.new attachment
130
- else
131
- raise "File #{attachment} does not exist"
132
- end
133
- }
134
- payload
135
50
  end
136
51
  end
137
52
  end
@@ -1,5 +1,5 @@
1
1
  module Expresspigeon
2
2
  module API
3
- VERSION = "0.0.9"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
@@ -6,55 +6,55 @@ describe 'campaigns integration test' do
6
6
  include PigeonSpecHelper
7
7
 
8
8
  it 'should return more than 0 campaign ids' do
9
- res = ExpressPigeon::API.campaigns.all
9
+ res = PIGEON.campaigns.all
10
10
  res.class.should == Array
11
11
  res.size.should > 0
12
12
  end
13
13
 
14
14
  it 'cannot send with missing parameters' do
15
- res = ExpressPigeon::API.campaigns.send(:template_id => 15233, :name => 'API Test campaign',
16
- :from_name => 'Igor Polevoy', :reply_to => 'igor@polevoy.org',
17
- :subject => 'API test', :google_analytics => true)
15
+ res = PIGEON.campaigns.send(:template_id => 15233, :name => 'API Test campaign',
16
+ :from_name => 'Igor Polevoy', :reply_to => 'igor@polevoy.org',
17
+ :subject => 'API test', :google_analytics => true)
18
18
  validate_response res, 400, 'error', /required parameters: list_id, template_id, name, from_name, reply_to, subject, google_analytics/
19
19
  end
20
20
 
21
21
  it 'cannot send with bad reply_to' do
22
- res = ExpressPigeon::API.campaigns.send(:list_id => -1, :template_id => -1, :name => 'My Campaign', :from_name => 'John', :reply_to => 'j',
23
- :subject => 'Hi', :google_analytics => false)
22
+ res = PIGEON.campaigns.send(:list_id => -1, :template_id => -1, :name => 'My Campaign', :from_name => 'John', :reply_to => 'j',
23
+ :subject => 'Hi', :google_analytics => false)
24
24
  validate_response res, 400, 'error', /reply_to should be valid email address/
25
25
  end
26
26
 
27
27
  it 'cannot send with non-existing template' do
28
- res = ExpressPigeon::API.campaigns.send(:list_id => -1, :template_id => -1, :name => 'My Campaign', :from_name => 'John',
29
- :reply_to => 'j@j.j',
30
- :subject => 'Hi', :google_analytics => false)
28
+ res = PIGEON.campaigns.send(:list_id => -1, :template_id => -1, :name => 'My Campaign', :from_name => 'John',
29
+ :reply_to => 'j@j.j',
30
+ :subject => 'Hi', :google_analytics => false)
31
31
  validate_response res, 400, 'error', /template=-1 is not found/
32
32
  end
33
33
 
34
34
  it 'cannot send to non-existing list' do
35
- res = ExpressPigeon::API.campaigns.send(:list_id => -1, :template_id => TEMPLATE_ID, :name => 'My Campaign', :from_name => 'John',
36
- :reply_to => 'j@j.j',
37
- :subject => 'Hi', :google_analytics => false)
35
+ res = PIGEON.campaigns.send(:list_id => -1, :template_id => TEMPLATE_ID, :name => 'My Campaign', :from_name => 'John',
36
+ :reply_to => 'j@j.j',
37
+ :subject => 'Hi', :google_analytics => false)
38
38
  validate_response res, 400, 'error', /list=-1 is not found/
39
39
  end
40
40
 
41
41
  it 'cannot send to disabled list' do
42
- res = ExpressPigeon::API.campaigns.send(:list_id => LIST_ID, :template_id => TEMPLATE_ID, :name => 'My Campaign', :from_name => 'John',
43
- :reply_to => 'j@j.j',
44
- :subject => 'Hi', :google_analytics => false)
42
+ res = PIGEON.campaigns.send(:list_id => LIST_ID, :template_id => TEMPLATE_ID, :name => 'My Campaign', :from_name => 'John',
43
+ :reply_to => 'j@j.j',
44
+ :subject => 'Hi', :google_analytics => false)
45
45
  validate_response res, 400, 'error', /list=#{DISABLED_LIST} is disabled/
46
46
  end
47
47
 
48
48
  it 'should create new list, add contact and send successful campaign' do
49
49
 
50
- list_resp = ExpressPigeon::API.lists.create('My list', 'John', API_USER)
50
+ list_resp = PIGEON.lists.create('My list', 'John', API_USER)
51
51
  list_id = list_resp.list.id
52
- ExpressPigeon::API.contacts.upsert(list_id, {:email => API_USER})
53
- resp = ExpressPigeon::API.campaigns.send(:list_id => list_id, :template_id => TEMPLATE_ID, :name => 'My Campaign', :from_name => 'John',
54
- :reply_to => API_USER,
55
- :subject => 'Hi', :google_analytics => false)
52
+ PIGEON.contacts.upsert(list_id, {:email => API_USER})
53
+ resp = PIGEON.campaigns.send(:list_id => list_id, :template_id => TEMPLATE_ID, :name => 'My Campaign', :from_name => 'John',
54
+ :reply_to => API_USER,
55
+ :subject => 'Hi', :google_analytics => false)
56
56
  validate_response resp, 200, 'success', /new campaign created successfully/
57
- report = ExpressPigeon::API.campaigns.report(resp.campaign_id)
57
+ report = PIGEON.campaigns.report(resp.campaign_id)
58
58
  (report.delivered == 0 or report.delivered == 1).should be_true
59
59
  report.clicked.should eq 0
60
60
  report.opened.should eq 0
@@ -62,45 +62,45 @@ describe 'campaigns integration test' do
62
62
  (report.in_transit == 0 or report.in_transit == 1).should be_true
63
63
  report.unsubscribed.should eq 0
64
64
  report.bounced.should eq 0
65
- bounced = ExpressPigeon::API.campaigns.bounced(resp.campaign_id)
66
- unsubscribed = ExpressPigeon::API.campaigns.unsubscribed(resp.campaign_id)
67
- spam = ExpressPigeon::API.campaigns.spam(resp.campaign_id)
65
+ bounced = PIGEON.campaigns.bounced(resp.campaign_id)
66
+ unsubscribed = PIGEON.campaigns.unsubscribed(resp.campaign_id)
67
+ spam = PIGEON.campaigns.spam(resp.campaign_id)
68
68
 
69
69
  bounced.size.should eq 0
70
70
  unsubscribed.size.should eq 0
71
71
  spam.size.should eq 0
72
72
 
73
- resp = ExpressPigeon::API.contacts.delete(API_USER)
73
+ resp = PIGEON.contacts.delete(API_USER)
74
74
  validate_response resp, 200, 'success', /contact=non@non.non deleted successfully/
75
75
 
76
- resp = ExpressPigeon::API.contacts.find_by_email(API_USER)
76
+ resp = PIGEON.contacts.find_by_email(API_USER)
77
77
  validate_response resp, 404, 'error', /contact=non@non.non not found/
78
78
 
79
- resp = ExpressPigeon::API.lists.delete(list_id)
79
+ resp = PIGEON.lists.delete(list_id)
80
80
  validate_response resp, 200, 'success', /deleted successfully/
81
81
  end
82
82
 
83
83
 
84
84
  it 'cannot send campaign if scheduling with bad date' do
85
85
 
86
- list_resp = ExpressPigeon::API.lists.create "My list", "John", API_USER
87
- resp = ExpressPigeon::API.campaigns.schedule :list_id => list_resp.list.id, :template_id => TEMPLATE_ID, :name => 'My Campaign',
86
+ list_resp = PIGEON.lists.create "My list", "John", API_USER
87
+ resp = PIGEON.campaigns.schedule :list_id => list_resp.list.id, :template_id => TEMPLATE_ID, :name => 'My Campaign',
88
88
 
89
- :from_name => 'John',
90
- :reply_to => API_USER, :subject => 'Hi',
91
- :google_analytics => false, :schedule_for => "2013-05-28"
89
+ :from_name => 'John',
90
+ :reply_to => API_USER, :subject => 'Hi',
91
+ :google_analytics => false, :schedule_for => "2013-05-28"
92
92
 
93
93
  validate_response resp, 400, 'error', /schedule_for is not in ISO date format, example: 2013-05-28T17:19:50.779/
94
- resp = ExpressPigeon::API.lists.delete(list_resp.list.id)
94
+ resp = PIGEON.lists.delete(list_resp.list.id)
95
95
  validate_response resp, 200, 'success', /deleted successfully/
96
96
  end
97
97
 
98
98
  it 'should not schedule campaign with date in the past' do
99
- list_resp = ExpressPigeon::API.lists.create('My list', 'John', API_USER)
100
- resp = ExpressPigeon::API.campaigns.schedule :list_id => list_resp.list.id, :template_id => TEMPLATE_ID, :name => 'My Campaign',
101
- :from_name => 'John',
102
- :reply_to => API_USER, :subject => 'Hi',
103
- :google_analytics => false, :schedule_for => '2010-05-28T17:19:50.779+0300'
99
+ list_resp = PIGEON.lists.create('My list', 'John', API_USER)
100
+ resp = PIGEON.campaigns.schedule :list_id => list_resp.list.id, :template_id => TEMPLATE_ID, :name => 'My Campaign',
101
+ :from_name => 'John',
102
+ :reply_to => API_USER, :subject => 'Hi',
103
+ :google_analytics => false, :schedule_for => '2010-05-28T17:19:50.779+0300'
104
104
 
105
105
  validate_response resp, 400, 'error', /schedule_for should be in the future/
106
106
  end
@@ -108,48 +108,26 @@ describe 'campaigns integration test' do
108
108
 
109
109
 
110
110
  it 'should delete scheduled campaign' do
111
- list_resp = ExpressPigeon::API.lists.create('My list', 'John', API_USER)
112
- resp = ExpressPigeon::API.campaigns.schedule :list_id => list_resp.list.id, :template_id => TEMPLATE_ID, :name => 'My Campaign',
113
- :from_name => 'John',
114
- :reply_to => API_USER, :subject => 'Hi',
115
- :google_analytics => false, :schedule_for => '2030-05-28T17:19:50.779+0300'
111
+ list_resp = PIGEON.lists.create('My list', 'John', API_USER)
112
+ resp = PIGEON.campaigns.schedule :list_id => list_resp.list.id, :template_id => TEMPLATE_ID, :name => 'My Campaign',
113
+ :from_name => 'John',
114
+ :reply_to => API_USER, :subject => 'Hi',
115
+ :google_analytics => false, :schedule_for => '2030-05-28T17:19:50.779+0300'
116
116
 
117
117
  validate_response resp, 200, 'success', /new campaign created successfully/
118
118
  campaign_id = resp.campaign_id
119
- resp = ExpressPigeon::API.campaigns.delete campaign_id
119
+ resp = PIGEON.campaigns.delete campaign_id
120
120
  resp.message.should eq "campaign #{campaign_id} was deleted"
121
121
  end
122
122
 
123
123
 
124
124
  # This test uses account ep.api.tester@expresspigeon.com and expects two specific campaign there.
125
125
  it 'should list campaigns from account' do
126
- campaigns = ExpressPigeon::API.campaigns.all
126
+ campaigns = PIGEON.campaigns.all
127
127
  campaigns.size.should eq 4
128
- campaigns = ExpressPigeon::API.campaigns.all from_id: 53853
128
+ campaigns = PIGEON.campaigns.all from_id: 53853
129
129
  campaigns.size.should eq 3
130
130
  end
131
131
 
132
-
133
- it 'should get opened from campaign' do
134
- opened = ExpressPigeon::API.campaigns.opened 441663
135
-
136
- puts opened
137
-
138
- end
139
-
140
- it 'should get clicked from campaign' do
141
- clicked = ExpressPigeon::API.campaigns.clicked 441663
142
-
143
- puts clicked
144
-
145
- end
146
-
147
- it 'should get unsubs from campaign' do
148
- unsubscribed = ExpressPigeon::API.campaigns.unsubscribed 441663
149
-
150
- puts unsubscribed
151
-
152
- end
153
-
154
132
  end
155
133
 
@@ -6,24 +6,24 @@ describe 'contacts integration test' do
6
6
  include PigeonSpecHelper
7
7
 
8
8
  it 'should not create contact without contact data' do
9
- resp = ExpressPigeon::API.contacts.upsert(-1, {})
9
+ resp = PIGEON.contacts.upsert(-1, {})
10
10
  validate_response resp, 400, 'error', /email is required/
11
11
  end
12
12
 
13
13
  it 'should not create contact without email' do
14
- resp = ExpressPigeon::API.contacts.upsert -1, :email => '', :first_name => 'Marylin', :last_name => 'Monroe'
14
+ resp = PIGEON.contacts.upsert -1, :email => '', :first_name => 'Marylin', :last_name => 'Monroe'
15
15
  validate_response resp, 400, 'error', /email is required/
16
16
  end
17
17
 
18
18
  it 'should not add contact with too many custom fields' do
19
19
  custom_fields = {}
20
20
  (1..25).each { |n| custom_fields["custom_field_#{n}"] = n }
21
- resp = ExpressPigeon::API.contacts.upsert -1, :email => "mary@e.e", :custom_fields => custom_fields
21
+ resp = PIGEON.contacts.upsert -1, :email => "mary@e.e", :custom_fields => custom_fields
22
22
  validate_response resp, 400, 'error', /You cannot create more than 20 custom fields. Use one of the 'custom_fields'./
23
23
  end
24
24
 
25
25
  it 'should not create new contact without list_id' do
26
- resp = ExpressPigeon::API.contacts.upsert '', :email => 'ee@e.e', :first_name => 'Marylin', :last_name => 'Monroe'
26
+ resp = PIGEON.contacts.upsert '', :email => 'ee@e.e', :first_name => 'Marylin', :last_name => 'Monroe'
27
27
  # TODO: this is a pretty crappy message from API https://redmine.expresspigeon.com/issues/5479
28
28
  validate_response resp, 400, 'error', /failed to convert: '' to Long/
29
29
  end
@@ -34,21 +34,21 @@ describe 'contacts integration test' do
34
34
  # end
35
35
 
36
36
  it 'cannot upsert into non-existent_list' do
37
- resp = ExpressPigeon::API.contacts.upsert -123, :email => "e@e.e"
37
+ resp = PIGEON.contacts.upsert -123, :email => "e@e.e"
38
38
  # TODO: uncomment after: https://redmine.expresspigeon.com/issues/5478
39
39
  validate_response resp, 404, 'error', /contact=e@e.e not found/
40
40
  end
41
41
 
42
42
  it 'creates list with contacts' do
43
- list_response = ExpressPigeon::API.lists.create 'My List', 'John Doe', 'john@doe.com'
43
+ list_response = PIGEON.lists.create 'My List', 'John Doe', 'john@doe.com'
44
44
  list_id = list_response.list.id
45
- resp = ExpressPigeon::API.contacts.upsert list_id, email: "mary@e.e",
46
- :custom_fields => {:custom_field_1 => "custom_value_1", }
45
+ resp = PIGEON.contacts.upsert list_id, email: "mary@e.e",
46
+ :custom_fields => {:custom_field_1 => "custom_value_1", }
47
47
  validate_response resp, 200, 'success', /contacts created\/updated successfully/
48
48
 
49
- resp = ExpressPigeon::API.contacts.find_by_email "mary@e.e"
49
+ resp = PIGEON.contacts.find_by_email "mary@e.e"
50
50
 
51
- ExpressPigeon::API.lists.delete(list_id)
51
+ PIGEON.lists.delete(list_id)
52
52
 
53
53
  resp.custom_fields.custom_field_1 eq "custom_value_1"
54
54
  resp.email.should eq 'mary@e.e'
@@ -56,16 +56,16 @@ describe 'contacts integration test' do
56
56
  end
57
57
 
58
58
  it 'creates list non-existent custom field' do
59
- list_response = ExpressPigeon::API.lists.create 'My List', 'John Doe', 'a@a.a'
59
+ list_response = PIGEON.lists.create 'My List', 'John Doe', 'a@a.a'
60
60
  list_id = list_response.list.id
61
- resp = ExpressPigeon::API.contacts.upsert(list_id, {:email => "mary@e.e", :custom_fields => {:c => "c", }})
62
- ExpressPigeon::API.lists.delete(list_id)
61
+ resp = PIGEON.contacts.upsert(list_id, {:email => "mary@e.e", :custom_fields => {:c => "c", }})
62
+ PIGEON.lists.delete(list_id)
63
63
  validate_response resp, 200, 'success', nil
64
64
  end
65
65
 
66
66
  it 'cannot export contacts from list without list_id' do
67
67
  content = ''
68
- ExpressPigeon::API.lists.csv "-1" do |c|
68
+ PIGEON.lists.csv "-1" do |c|
69
69
  content << c
70
70
  end
71
71
  resp = JSON.parse(content)
@@ -76,7 +76,7 @@ describe 'contacts integration test' do
76
76
 
77
77
  it 'should get contacts from suppressed list' do
78
78
  content =''
79
- ExpressPigeon::API.lists.csv "suppress_list" do |c|
79
+ PIGEON.lists.csv "suppress_list" do |c|
80
80
  content += c
81
81
  end
82
82
  resp = content.split /\n/
@@ -87,13 +87,13 @@ describe 'contacts integration test' do
87
87
  end
88
88
 
89
89
  it 'should get single contact' do
90
- resp = ExpressPigeon::API.contacts.find_by_email 'suppressed@e.e'
90
+ resp = PIGEON.contacts.find_by_email 'suppressed@e.e'
91
91
  # TODO: have these on account before checking.
92
92
  # resp.email.should eq 'suppressed@e.e'
93
93
  end
94
94
 
95
95
  it 'should not find non existent contact' do
96
- resp = ExpressPigeon::API.contacts.find_by_email 'a@a.a'
96
+ resp = PIGEON.contacts.find_by_email 'a@a.a'
97
97
  # TODO: have these on account before checking.
98
98
 
99
99
  # validate_response resp, 404, 'error', /contact=a@a.a not found/
@@ -103,56 +103,56 @@ describe 'contacts integration test' do
103
103
 
104
104
 
105
105
 
106
- list_response = ExpressPigeon::API.lists.create('My List', 'John Doe', "a@a.a")
106
+ list_response = PIGEON.lists.create('My List', 'John Doe', "a@a.a")
107
107
 
108
108
  # PIGEON.contacts.find_by_email("mary@e.e").last_name.should eq 'Doe'
109
109
 
110
- resp = ExpressPigeon::API.contacts.upsert list_response.list.id,
111
- :email => 'mary@e.e', :first_name => 'Mary', :last_name => 'Johns'
110
+ resp = PIGEON.contacts.upsert list_response.list.id,
111
+ :email => 'mary@e.e', :first_name => 'Mary', :last_name => 'Johns'
112
112
  validate_response resp, 200, 'success', /contacts created\/updated successfully/
113
- ExpressPigeon::API.contacts.find_by_email("mary@e.e").last_name.should eq 'Johns'
114
- ExpressPigeon::API.lists.delete list_response.list.id
113
+ PIGEON.contacts.find_by_email("mary@e.e").last_name.should eq 'Johns'
114
+ PIGEON.lists.delete list_response.list.id
115
115
  end
116
116
 
117
117
  it 'cannot delete contact with non-existent email' do
118
- res = ExpressPigeon::API.contacts.delete("g@g.g")
118
+ res = PIGEON.contacts.delete("g@g.g")
119
119
  validate_response res, 404, 'error', /contact=g@g.g not found/
120
120
  end
121
121
 
122
122
  it 'should not delete suppressed contact' do
123
- res = ExpressPigeon::API.contacts.delete("suppressed@e.e")
123
+ res = PIGEON.contacts.delete("suppressed@e.e")
124
124
 
125
125
  # TODO: add this to the account at setup.
126
126
  # validate_response res, 400, 'error', /contact=suppressed@e.e is in suppress list/
127
127
  end
128
128
 
129
129
  it 'should delete single contact from all lists' do
130
- list_response = ExpressPigeon::API.lists.create 'My List', 'Jane Doe', 'a@a.a'
131
- ExpressPigeon::API.contacts.upsert list_response.list.id, :email => 'mary@e.e'
132
- res = ExpressPigeon::API.contacts.delete 'mary@e.e'
130
+ list_response = PIGEON.lists.create 'My List', 'Jane Doe', 'a@a.a'
131
+ PIGEON.contacts.upsert list_response.list.id, :email => 'mary@e.e'
132
+ res = PIGEON.contacts.delete 'mary@e.e'
133
133
  validate_response res, 200, 'success', /contact=mary@e.e deleted successfully/
134
- ExpressPigeon::API.lists.delete list_response.list.id
134
+ PIGEON.lists.delete list_response.list.id
135
135
  end
136
136
 
137
137
  it 'deletes single contact from single list' do
138
- list_response = ExpressPigeon::API.lists.create 'My List', 'John D.', 'a@a.a'
139
- list_response_2 = ExpressPigeon::API.lists.create('My List2', "Jane D.", 'a@a.a')
140
- ExpressPigeon::API.contacts.upsert(list_response.list.id, {:email => 'mary@e.e'})
141
- ExpressPigeon::API.contacts.upsert(list_response_2.list.id, {:email => 'mary@e.e'})
138
+ list_response = PIGEON.lists.create 'My List', 'John D.', 'a@a.a'
139
+ list_response_2 = PIGEON.lists.create('My List2', "Jane D.", 'a@a.a')
140
+ PIGEON.contacts.upsert(list_response.list.id, {:email => 'mary@e.e'})
141
+ PIGEON.contacts.upsert(list_response_2.list.id, {:email => 'mary@e.e'})
142
142
 
143
- res = ExpressPigeon::API.contacts.delete 'mary@e.e', list_response.list.id
143
+ res = PIGEON.contacts.delete 'mary@e.e', list_response.list.id
144
144
 
145
145
  validate_response res, 200, 'success', /contact=mary@e.e deleted successfully/
146
146
 
147
147
  contacts_exported = ''
148
- ExpressPigeon::API.lists.csv list_response.list.id do |c|
148
+ PIGEON.lists.csv list_response.list.id do |c|
149
149
  contacts_exported << c
150
150
  end
151
151
  contacts_exported = contacts_exported.split /\n/
152
152
  contacts_exported.size.should eq 1
153
153
 
154
154
  contacts_exported_2 = ''
155
- ExpressPigeon::API.lists.csv list_response_2.list.id do |c|
155
+ PIGEON.lists.csv list_response_2.list.id do |c|
156
156
  contacts_exported_2 << c
157
157
  end
158
158
 
@@ -160,9 +160,9 @@ describe 'contacts integration test' do
160
160
  contacts_exported_2.size.should eq 2
161
161
  contacts_exported_2[1].should =~ /"mary@e.e"/
162
162
 
163
- ExpressPigeon::API.lists.delete(list_response.list.id)
164
- ExpressPigeon::API.lists.delete(list_response_2.list.id)
165
- ExpressPigeon::API.contacts.delete('mary@e.e')
163
+ PIGEON.lists.delete(list_response.list.id)
164
+ PIGEON.lists.delete(list_response_2.list.id)
165
+ PIGEON.contacts.delete('mary@e.e')
166
166
  end
167
167
  end
168
168
 
@@ -6,39 +6,39 @@ describe 'lists integration test' do
6
6
  include PigeonSpecHelper
7
7
 
8
8
  it 'test_create_and_delete_new_list(self):' do
9
- contact_list = ExpressPigeon::API.lists.create 'Active customers', 'Bob', 'bob@acmetools.com'
9
+ contact_list = PIGEON.lists.create 'Active customers', 'Bob', 'bob@acmetools.com'
10
10
  validate_response contact_list, 200, 'success', /list=#{contact_list.list.id} created\/updated successfully/
11
11
  contact_list.list.name.should eq "Active customers"
12
12
  contact_list.list.from_name.should eq "Bob"
13
13
  contact_list.list.reply_to.should eq "bob@acmetools.com"
14
14
  contact_list.list.contact_count.should eq 0
15
- res = ExpressPigeon::API.lists.delete contact_list.list.id
15
+ res = PIGEON.lists.delete contact_list.list.id
16
16
  validate_response res, 200, 'success', /list=#{contact_list.list.id} deleted successfully/
17
17
  end
18
18
 
19
19
  it 'should update existing list' do
20
- contact_list = ExpressPigeon::API.lists.create("Update", "Bob", "bob@acmetools.com")
21
- res = ExpressPigeon::API.lists.update contact_list.list.id, :name => 'Updated Name', :from_name => 'Bob', :reply_to => 'Frank@zappa.com'
20
+ contact_list = PIGEON.lists.create("Update", "Bob", "bob@acmetools.com")
21
+ res = PIGEON.lists.update contact_list.list.id, :name => 'Updated Name', :from_name => 'Bob', :reply_to => 'Frank@zappa.com'
22
22
  validate_response res, 200, 'success', /list=#{res.list.id} created\/updated successfully/
23
23
  res.list.name.should eq "Updated Name"
24
24
  res.list.from_name.should eq 'Bob'
25
- res = ExpressPigeon::API.lists.delete(contact_list.list.id)
25
+ res = PIGEON.lists.delete(contact_list.list.id)
26
26
  validate_response res, 200, 'success', /list=#{contact_list.list.id} deleted successfully/
27
27
  end
28
28
 
29
29
 
30
30
  it 'should upload contacts as CSV file' do
31
31
  list_name = "Upload_#{Kernel.rand(9999).to_s}"
32
- list_resp = ExpressPigeon::API.lists.create(list_name, 'Bob', 'bob@acmetools.com')
32
+ list_resp = PIGEON.lists.create(list_name, 'Bob', 'bob@acmetools.com')
33
33
  begin
34
- resp = ExpressPigeon::API.lists.upload(list_resp.list.id, 'spec/resources/upload.csv')
34
+ resp = PIGEON.lists.upload(list_resp.list.id, 'spec/resources/upload.csv')
35
35
  validate_response resp, 200, 'success', /file uploaded successfully/
36
- res = ExpressPigeon::API.contacts.find_by_email 'x@x.x'
36
+ res = PIGEON.contacts.find_by_email 'x@x.x'
37
37
  res.lists[0]['id'].should eq list_resp.list.id
38
38
  ensure
39
- res = ExpressPigeon::API.lists.delete(list_resp.list.id)
39
+ res = PIGEON.lists.delete(list_resp.list.id)
40
40
  validate_response res, 200, 'success', /list=#{list_resp.list.id} deleted successfully/
41
- ExpressPigeon::API.contacts.find_by_email('x@x.x').message.should eq 'contact=x@x.x not found'
41
+ PIGEON.contacts.find_by_email('x@x.x').message.should eq 'contact=x@x.x not found'
42
42
  end
43
43
  end
44
44
 
@@ -72,19 +72,11 @@ describe 'lists integration test' do
72
72
  # self.assertEqual(res.code, 404)
73
73
  # self.assertEqual(res.message, "list=-1 not found")
74
74
  #
75
- it 'should check upload status' do
76
- list_response = ExpressPigeon::API.lists.create("My List", "a@a.a", "a@a.a")
77
- resp = ExpressPigeon::API.lists.upload(list_response.list.id, 'spec/resources/upload.csv')
78
-
79
- sleep 20
80
-
81
- begin
82
- puts ExpressPigeon::API.lists.upload_status list_response.list.id
83
- ensure
84
- ExpressPigeon::API.lists.delete list_response.list.id
85
- end
86
-
87
- end
75
+ # def test_upload_status_without_upload_id(self):
76
+ # res = self.api.lists.upload_status("")
77
+ # self.assertEqual(res.code, 400)
78
+ # self.assertEqual(res.status, "error")
79
+ # self.assertEqual(res.message, "you must provide upload id")
88
80
  #
89
81
  # def test_enabled_list_removal(self):
90
82
  # list_resp = self.api.lists.create("My list", "John", os.environ['EXPRESSPIGEON_API_USER'])
@@ -110,32 +102,22 @@ describe 'lists integration test' do
110
102
  # "could not delete list={0}, it has dependent subscriptions and/or scheduled campaigns".format(
111
103
  # list_resp.list.id))
112
104
  #
113
- it 'should upload and download CSV' do
114
- list_response = ExpressPigeon::API.lists.create("My List", "a@a.a", "a@a.a")
115
- resp = ExpressPigeon::API.lists.upload(list_response.list.id, 'spec/resources/upload.csv')
116
- res = ExpressPigeon::API.lists.csv(list_response.list.id)
117
- ExpressPigeon::API.lists.delete list_response.list.id
118
-
119
- count = 0
120
- res.each_line do |line|
121
- count = count + 1
122
- end
123
- count.should eq 4
124
-
125
-
126
-
127
- # self.assertEquals(len(res), 2)
128
- # headers = '"Email", "First name", "Last name", "City", "Phone", "Company", "Title", "Address 1", "Address 2", ' \
129
- # '"State", "Zip", "Country", "Date of birth", "custom_field_1", "custom_field_10", "custom_field_11", ' \
130
- # '"custom_field_12", "custom_field_13", "custom_field_18", "custom_field_19", "custom_field_2", ' \
131
- # '"custom_field_20", "custom_field_21", "custom_field_22", "custom_field_23", "custom_field_24", ' \
132
- # '"custom_field_3", "custom_field_4", "custom_field_5", "custom_field_6", "custom_field_7", ' \
133
- # '"custom_field_8", "custom_field_9"'
134
- # self.assertEquals(res[0], headers)
135
- # self.assertEquals(res[1], '"mary@a.a",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,')
136
- #
137
- # self.api.lists.delete(list_response.list.id)
138
- # self.api.contacts.delete("mary@a.a")
139
- end
105
+ # def test_export_csv(self):
106
+ # list_response = self.api.lists.create("My List", "a@a.a", "a@a.a")
107
+ # self.api.contacts.upsert(list_response.list.id, {"email": "mary@a.a"})
108
+ #
109
+ # res = self.api.lists.csv(list_response.list.id).split("\n")
110
+ # self.assertEquals(len(res), 2)
111
+ # headers = '"Email", "First name", "Last name", "City", "Phone", "Company", "Title", "Address 1", "Address 2", ' \
112
+ # '"State", "Zip", "Country", "Date of birth", "custom_field_1", "custom_field_10", "custom_field_11", ' \
113
+ # '"custom_field_12", "custom_field_13", "custom_field_18", "custom_field_19", "custom_field_2", ' \
114
+ # '"custom_field_20", "custom_field_21", "custom_field_22", "custom_field_23", "custom_field_24", ' \
115
+ # '"custom_field_3", "custom_field_4", "custom_field_5", "custom_field_6", "custom_field_7", ' \
116
+ # '"custom_field_8", "custom_field_9"'
117
+ # self.assertEquals(res[0], headers)
118
+ # self.assertEquals(res[1], '"mary@a.a",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,')
119
+ #
120
+ # self.api.lists.delete(list_response.list.id)
121
+ # self.api.contacts.delete("mary@a.a")
140
122
 
141
123
  end
@@ -32,10 +32,10 @@ describe 'transactional messages integration test' do
32
32
 
33
33
  #TODO: complete the spec
34
34
  it 'sends a single transactional message' do
35
- message_response = ExpressPigeon::API.messages.send_message 115, ENV['TARGET_EMAIL'], ENV['TARGET_EMAIL'], "Team ExpressPigeon", "Hi there!",
36
- :first_name => "Igor"
35
+ message_response = PIGEON.messages.send_message 115, ENV['TARGET_EMAIL'], ENV['TARGET_EMAIL'], "Team ExpressPigeon", "Hi there!",
36
+ :first_name => "Igor"
37
37
  validate_response message_response, 200, 'success', /email queued/
38
- report = ExpressPigeon::API.messages.report(message_response.id)
38
+ report = PIGEON.messages.report(message_response.id)
39
39
  report.id.should eq message_response.id
40
40
  end
41
41
 
@@ -90,23 +90,23 @@ describe 'transactional messages integration test' do
90
90
  # self.assertEquals(report2.email, os.environ['EXPRESSPIGEON_API_USER'])
91
91
  # self.assertTrue(report2.in_transit is not None)
92
92
  #
93
- it 'should send multiple messages and get reports for today' do
93
+ it 'test_sending_multiple_messages_and_get_reports_for_today(self):' do
94
94
 
95
95
  start = Time.now.utc - 60 # one minute ago
96
96
 
97
- message_response = ExpressPigeon::API.messages.send_message 4905, ENV['TARGET_EMAIL'], ENV['TARGET_EMAIL'],
98
- 'Team EP', "Hi, there!", :first_name => "Bob"
97
+ message_response = PIGEON.messages.send_message 4905, ENV['TARGET_EMAIL'], ENV['TARGET_EMAIL'],
98
+ 'Team EP', "Hi, there!", :first_name => "Bob"
99
99
 
100
100
  validate_response message_response, 200, 'success', /email queued/
101
101
  message_response.id should_not be_nil
102
102
 
103
- message_response2 = ExpressPigeon::API.messages.send_message 4905, ENV['TARGET_EMAIL'], ENV['TARGET_EMAIL'],
104
- 'Team EP', "Hi, there!", :first_name => "Bob"
103
+ message_response2 = PIGEON.messages.send_message 4905, ENV['TARGET_EMAIL'], ENV['TARGET_EMAIL'],
104
+ 'Team EP', "Hi, there!", :first_name => "Bob"
105
105
  validate_response message_response2, 200, 'success', /email queued/
106
106
  message_response2.id should_not be_nil
107
107
 
108
108
  finish = start + 120 # two minutes after start
109
- reports = ExpressPigeon::API.messages.reports (message_response.id - 1), start, finish
109
+ reports = PIGEON.messages.reports (message_response.id - 1), start, finish
110
110
 
111
111
  reports.size.should eq 2
112
112
  reports[0]['id'].should eq message_response.id
@@ -115,8 +115,6 @@ describe 'transactional messages integration test' do
115
115
  reports[0]['email'].should eq ENV['TARGET_EMAIL']
116
116
  reports[1]['email'].should eq ENV['TARGET_EMAIL']
117
117
  end
118
-
119
-
120
118
  #
121
119
  #def __get_report_by_id__(self, message_id, start_date=None, end_date=None):
122
120
  # reports = self.api.messages.reports() if start_date is None and end_date is None else \
@@ -126,35 +124,4 @@ describe 'transactional messages integration test' do
126
124
  # return report[0]
127
125
 
128
126
 
129
- it 'should prepare payload hash' do
130
-
131
- payload = ExpressPigeon::API.messages.prepare_payload(123, #template_id
132
- 'john@doe.com',
133
- 'jane@doe.com',
134
- 'Jane Doe',
135
- 'Hello, Dolly!',
136
- {eye_color: 'blue', body_shape:'pear'},
137
- false, true, false,
138
- %w(spec/resources/attachment1.txt spec/resources/attachment2.txt), {})
139
-
140
- payload[:multipart].should eq true
141
- payload[:template_id].should eq 123
142
- payload[:to].should eq 'john@doe.com'
143
- payload[:reply_to].should eq 'jane@doe.com'
144
- payload[:from].should eq 'Jane Doe'
145
- payload[:subject].should eq 'Hello, Dolly!'
146
- payload[:template_id].should eq 123
147
- payload[:view_online].should eq false
148
- payload[:click_tracking].should eq true
149
- payload[:suppress_address].should eq false
150
- payload['attachment1.txt'].class.should eq File
151
-
152
- payload[:merge_fields].class.should eq String
153
- merge_fields = JSON.parse payload[:merge_fields]
154
- merge_fields['eye_color'].should eq "blue"
155
- merge_fields['body_shape'].should eq "pear"
156
-
157
- File.basename(payload['attachment1.txt']).should eq 'attachment1.txt'
158
- File.basename(payload['attachment2.txt']).should eq 'attachment2.txt'
159
- end
160
127
  end
@@ -1,3 +1,5 @@
1
+ PIGEON = ExpressPigeon::API
2
+
1
3
 
2
4
  TEMPLATE_ID = ENV['TEMPLATE_ID']
3
5
  LIST_ID = ENV['LIST_ID']
@@ -6,10 +6,10 @@ describe 'templates integration test' do
6
6
  include PigeonSpecHelper
7
7
 
8
8
  it 'should copy template and delete template' do
9
- template_response = ExpressPigeon::API.templates.copy 34830, "new template", :content => "Hello Template World!"
9
+ template_response = PIGEON.templates.copy 34830, "new template", :content => "Hello Template World!"
10
10
  template_response.message.should eq 'template copied successfully'
11
11
  template_id = template_response.template_id
12
- delete_response = ExpressPigeon::API.templates.delete template_id
12
+ delete_response = PIGEON.templates.delete template_id
13
13
  delete_response.message.should eq 'template deleted successfully'
14
14
  end
15
15
  end
@@ -1,19 +1,9 @@
1
+ require '../lib/expresspigeon-ruby.rb'
1
2
 
2
- require_relative '../lib/expresspigeon-ruby.rb'
3
3
 
4
- MESSAGES = ExpressPigeon::API.messages.auth_key(ENV['AUTH_KEY'])
4
+ MESSAGES = ExpressPigeon::API.messages
5
+ MESSAGES.open_timeout = 1000
6
+
7
+ puts MESSAGES.send_message 565452, 'igor@expresspigeon.com', 'igor@polevoy.org', "Igor Polevoy", "Transactional message test", {first_name: 'Igor', img1: "https://cdn.pioneer.pgsitecore.com/en-us/-/media/Charmin/Images/Editorials/charmin_tipsarticles_howtopottytrainagirl_image1.jpg"}
5
8
 
6
9
 
7
- puts MESSAGES.send_message(
8
- 390243, # template_id
9
- 'igor@polevoy.org', #to
10
- 'igor@polevoy.org', #reply_to
11
- "Igor Polevoy", #from_name
12
- "Hi there! Sending with a heades", #subject
13
- {first_name: 'Igor', eye_color: 'brown'}, #merge_fields
14
- false, #view_online
15
- true, #click_tracking
16
- true, #suppress_address
17
- {}, #file paths to upload as attachments
18
- {Sender: 'Vasya Pupkin <vasya@polevoy.org>'}
19
- )
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expresspigeon-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ipolevoy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-06 00:00:00.000000000 Z
11
+ date: 2018-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.8'
19
+ version: 1.8.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.8'
26
+ version: 1.8.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -63,7 +63,6 @@ files:
63
63
  - lib/expresspigeon-ruby/meta_response.rb
64
64
  - lib/expresspigeon-ruby/templates.rb
65
65
  - lib/expresspigeon-ruby/version.rb
66
- - spec/autoresponders_spec.rb
67
66
  - spec/campaigns_spec.rb
68
67
  - spec/contacts_spec.rb
69
68
  - spec/lists_spec.rb
@@ -71,14 +70,9 @@ files:
71
70
  - spec/pigeon_helper.rb
72
71
  - spec/resources/upload.csv
73
72
  - spec/templates_spec.rb
74
- - test/README
75
- - test/attachments/example.ics
76
- - test/attachments/smile.pdf
77
73
  - test/send.rb
78
- - test/send_with_attachments.rb
79
74
  homepage: https://github.com/expresspigeon/expresspigeon-ruby
80
- licenses:
81
- - MIT
75
+ licenses: []
82
76
  metadata: {}
83
77
  post_install_message:
84
78
  rdoc_options: []
@@ -101,7 +95,6 @@ signing_key:
101
95
  specification_version: 4
102
96
  summary: ExpressPigeon API Ruby Wrapper
103
97
  test_files:
104
- - spec/autoresponders_spec.rb
105
98
  - spec/campaigns_spec.rb
106
99
  - spec/contacts_spec.rb
107
100
  - spec/lists_spec.rb
@@ -109,8 +102,4 @@ test_files:
109
102
  - spec/pigeon_helper.rb
110
103
  - spec/resources/upload.csv
111
104
  - spec/templates_spec.rb
112
- - test/README
113
- - test/attachments/example.ics
114
- - test/attachments/smile.pdf
115
105
  - test/send.rb
116
- - test/send_with_attachments.rb
@@ -1,46 +0,0 @@
1
- require './lib/expresspigeon-ruby'
2
- require 'pigeon_helper'
3
-
4
- describe 'autoresponders integration test' do
5
-
6
- include PigeonSpecHelper
7
-
8
- it 'should return all autoresponders' do
9
- res = ExpressPigeon::API.autoresponders.all
10
- res.class.should == Array
11
- res.size.should > 0
12
- puts res
13
- end
14
-
15
- it 'should start autoresponder by id' do
16
- res = ExpressPigeon::API.autoresponders.start 672, 'igor@polevoy.org'
17
- puts res
18
- end
19
-
20
- it 'should stop autoresponder by id' do
21
- res = ExpressPigeon::API.autoresponders.stop 672, 'igor@polevoy.org'
22
- puts res
23
- end
24
-
25
- it 'should get single report' do
26
- res = ExpressPigeon::API.autoresponders.report 672
27
- puts res
28
- end
29
-
30
- it 'should get bounces for autoresponder part' do
31
- res = ExpressPigeon::API.autoresponders.bounced 672, 746
32
- puts res
33
- end
34
-
35
- it 'should get spam for autoresponder part' do
36
- res = ExpressPigeon::API.autoresponders.spam 672, 746
37
- puts res
38
- end
39
-
40
- it 'should get unsubscribed for autoresponder part' do
41
- res = ExpressPigeon::API.autoresponders.unsubscribed 672, 746
42
- puts res
43
- end
44
-
45
- end
46
-
@@ -1,25 +0,0 @@
1
- h2. Intro
2
-
3
- This directory contains Ruby scripts for manual testing some features.
4
-
5
- In order to point to test env and set the auth_key, you need need to source the file called set_env (ignored)
6
-
7
- h2. Curl example
8
-
9
-
10
- ```
11
- curl -X POST https://api.expresspigeon.com/messages \
12
- -H "Content-type: multipart/form-data" \
13
- -H "X-auth-key: XXX"\
14
- -F template_id=123\
15
- -F reply_to='john@doe.com'\
16
- -F from='John Doe'\
17
- -F to='jane@doe.com'\
18
- -F subject='Lets go out tonight?'\
19
- -F view_online=true\
20
- -F suppress_address=true\
21
- -F click_tracking=true\
22
- -F merge_fields='{"first_name": "Jane"}'\
23
- -F attachment=@attachments/attachment1.txt\
24
- -F attachment=@attachments/attachment2.txt
25
- ```
@@ -1,32 +0,0 @@
1
- BEGIN:VCALENDAR
2
- VERSION:2.0
3
- CALSCALE:GREGORIAN
4
- BEGIN:VEVENT
5
- SUMMARY:Access-A-Ride Pickup
6
- DTSTART;TZID=America/New_York:20130802T103400
7
- DTEND;TZID=America/New_York:20130802T110400
8
- LOCATION:1000 Broadway Ave.\, Brooklyn
9
- DESCRIPTION: Access-A-Ride trip to 900 Jay St.\, Brooklyn
10
- STATUS:CONFIRMED
11
- SEQUENCE:3
12
- BEGIN:VALARM
13
- TRIGGER:-PT10M
14
- DESCRIPTION:Pickup Reminder
15
- ACTION:DISPLAY
16
- END:VALARM
17
- END:VEVENT
18
- BEGIN:VEVENT
19
- SUMMARY:Access-A-Ride Pickup
20
- DTSTART;TZID=America/New_York:20250802T200000
21
- DTEND;TZID=America/New_York:20250802T203000
22
- LOCATION:900 Jay St.\, Brooklyn
23
- DESCRIPTION: Access-A-Ride trip to 1000 Broadway Ave.\, Brooklyn
24
- STATUS:CONFIRMED
25
- SEQUENCE:3
26
- BEGIN:VALARM
27
- TRIGGER:-PT10M
28
- DESCRIPTION:Pickup Reminder
29
- ACTION:DISPLAY
30
- END:VALARM
31
- END:VEVENT
32
- END:VCALENDAR
Binary file
@@ -1,22 +0,0 @@
1
-
2
- require_relative '../lib/expresspigeon-ruby.rb'
3
-
4
- MESSAGES = ExpressPigeon::API.messages.auth_key(ENV['AUTH_KEY'])
5
-
6
- #attachments = %W{attachments/attachment1.txt attachments/smile.pdf attachments/example.ics}
7
- #attachments = %W{/home/igor/tmp/The-Definitive-Guide-To-Mobile-Marketing-Marketo.pdf}
8
- attachments = %W{/home/igor/tmp/Express-Pigeon-PropertyRadar-MSA-12-13-15.pdf}
9
-
10
- puts MESSAGES.send_message(
11
- 390243, # template_id
12
- 'igor@polevoy.org', #to
13
- 'igor@polevoy.org', #reply_to
14
- "Igor Polevoy", #from_name
15
- "Hi there! Attachments and header", #subject
16
- {first_name: 'Igor', eye_color: 'blue'}, #merge_fields
17
- false, #view_online
18
- true, #click_tracking
19
- true, #suppress_address
20
- attachments, #file paths to upload as attachments
21
- {Sender: 'Vasya Pupkin <vasya@polevoy.org>'}
22
- )