apsis-on-steroids 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ca260874d9300648caddfb9ca87705a72b17de34
4
- data.tar.gz: 246852b83262cce4dd77dba066b5d838eb4e6354
3
+ metadata.gz: cb74fb8c4341b361e40ced00d058ad1236ee6253
4
+ data.tar.gz: ae0d1cba397c2a9cf5d5a845fc12deff7eea36e6
5
5
  SHA512:
6
- metadata.gz: 87aeb2df293b7edb9ecdf3fc1f91127c7693385a2c59f414fc54d24970035ac37153d567654bb2053dda039d03a22073f7c2df8b5f5372309c60680c9660de25
7
- data.tar.gz: f481ad7b1a86fc87be112e642e5fe7c2dc84e0189c497ae6e1c8ddbaeb14bebee9a42447dff66a5becbbbb44575a24de00f0480ded150197c561518ac200bc79
6
+ metadata.gz: 27467b1844923491160b11ef6ecbdf9dc032d7a9e0f6b2f0bb3ca3feb75a94cdaa8c3069c44b9007d7fe3732c06cae156308d77657389b847a478e7660a8d168
7
+ data.tar.gz: 1a4aa0a9a8a38ba5a67c786f8fc8f20125263428ac09e2adc894aab7cd57293ec53104d7aab9983beb9b9819ad6d2abbd98a58f5904042facda9b037178e76f2
data/README.md CHANGED
@@ -9,7 +9,7 @@ Library that implements the Apsis API in Ruby in regards to administrating subsc
9
9
  ### Connecting
10
10
  ```ruby
11
11
  aos = ApsisOnSteroids.new(
12
- :api_key => "[your api key]"
12
+ api_key: "[your api key]"
13
13
  )
14
14
  ```
15
15
 
@@ -21,10 +21,10 @@ aos.mailing_lists
21
21
  ### Create a mailing list
22
22
  ```ruby
23
23
  aos.create_mailing_list(
24
- :Name => "my_awesome_list",
25
- :FromName => "Kasper Johansen",
26
- :FromEmail => "kj@naoshi-dev.com",
27
- :CharacterSet => "utf-8"
24
+ Name: "my_awesome_list",
25
+ FromName: "Kasper Johansen",
26
+ FromEmail: "kj@naoshi-dev.com",
27
+ CharacterSet: "utf-8"
28
28
  )
29
29
  ```
30
30
 
@@ -48,11 +48,11 @@ sub = mlist.subscriber_by_email("some@email.com")
48
48
  mlist.create_subscribers(
49
49
  [
50
50
  {
51
- :Email => "some@email.com",
52
- :Name => "Some Name"
51
+ Email: "some@email.com",
52
+ Name: "Some Name"
53
53
  },{
54
- :Email => "some_other@email.com",
55
- :Name => "Some Name"
54
+ Email: "some_other@email.com",
55
+ Name: "Some Name"
56
56
  }
57
57
  ]
58
58
  )
@@ -65,7 +65,7 @@ puts "Details: #{sub.details}"
65
65
 
66
66
  ### Update subscribers.
67
67
  ```ruby
68
- sub.update(:Email => "some_third@email.com")
68
+ sub.update(Email: "some_third@email.com")
69
69
  ```
70
70
 
71
71
  ### Remove subscriber from a mailing list.
@@ -97,6 +97,7 @@ sendings = apsis.sendings_by_date_interval(@date_from, @date_to).to_a
97
97
  ```
98
98
 
99
99
  ### Get data from sendings
100
+ ```ruby
100
101
  sendings.opens(count: true) #=> 5
101
102
  sendings.bounces(count: true) #=> 1
102
103
  sendings.clicks(count: true) #=> 3
@@ -105,6 +106,7 @@ sendings.opt_outs(count: true) #=> 1
105
106
  sendings.clicks.each do |click|
106
107
  puts "ClickData: #{click.data_hash}"
107
108
  end
109
+ ```
108
110
 
109
111
  ## Contributing to apsis-on-steroids
110
112
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.9
1
+ 0.0.10
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: apsis-on-steroids 0.0.9 ruby lib
5
+ # stub: apsis-on-steroids 0.0.10 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "apsis-on-steroids"
9
- s.version = "0.0.9"
9
+ s.version = "0.0.10"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["kaspernj"]
14
- s.date = "2014-08-04"
14
+ s.date = "2014-08-13"
15
15
  s.description = "A Ruby API for the Apsis mail service. "
16
16
  s.email = "k@spernj.org"
17
17
  s.extra_rdoc_files = [
@@ -1,18 +1,18 @@
1
1
  class ApsisOnSteroids::Sending < ApsisOnSteroids::SubBase
2
2
  def clicks args = {}
3
- list_for("v1/clicks/sendqueues/%{send_queue_id}/page/%{page}/size/%{size}", "Click", args)
3
+ list_for("v1/clicks/sendqueues/%{send_queue_id}/page/%{page}/size/%{size}", "v1/sendqueues/%{send_queue_id}/clicks", "Click", args)
4
4
  end
5
5
 
6
6
  def opens args = {}
7
- list_for("v1/opens/sendqueues/%{send_queue_id}/page/%{page}/size/%{size}", "Open", args)
7
+ list_for("v1/opens/sendqueues/%{send_queue_id}/page/%{page}/size/%{size}", "v1/sendqueues/%{send_queue_id}/opens", "Open", args)
8
8
  end
9
9
 
10
10
  def bounces args = {}
11
- list_for("v1/bounces/sendqueues/%{send_queue_id}/page/%{page}/size/%{size}", "Bounce", args)
11
+ list_for("v1/bounces/sendqueues/%{send_queue_id}/page/%{page}/size/%{size}", "v1/sendqueues/%{send_queue_id}/bounces", "Bounce", args)
12
12
  end
13
13
 
14
14
  def opt_outs args = {}
15
- list_for("v1/optouts/sendqueues/%{send_queue_id}/%{page}/%{size}", "OptOut", args)
15
+ list_for("v1/optouts/sendqueues/%{send_queue_id}/%{page}/%{size}", "v1/sendqueues/%{send_queue_id}/optouts", "OptOut", args)
16
16
  end
17
17
 
18
18
  def mailing_lists
@@ -26,22 +26,50 @@ class ApsisOnSteroids::Sending < ApsisOnSteroids::SubBase
26
26
 
27
27
  private
28
28
 
29
- def list_for resource_url, resource_name, args = {}
29
+ def list_for_with_dates resource_url, resource_name, args
30
+ resource_url = resource_url.gsub("%{send_queue_id}", data(:send_queue_id).to_s)
31
+
32
+ ub = aos.new_url_builder
33
+ ub.path = resource_url
34
+ ub.params["dateFrom"] = args[:date_from].strftime(ApsisOnSteroids::STRFTIME_FORMAT) if args[:date_from]
35
+ ub.params["dateTo"] = args[:date_to].strftime(ApsisOnSteroids::STRFTIME_FORMAT) if args[:date_to]
36
+
37
+ resource_url = ub.build_path_and_params
38
+
39
+ queued_res = aos.req_json(resource_url)
40
+ results = aos.read_queued_response(queued_res["Result"]["PollURL"])
41
+
42
+ return results.length if args[:count]
43
+
44
+ Enumerator.new do |yielder|
45
+ aos.read_resources_from_array(resource_name, results).each do |resource|
46
+ yielder << resource
47
+ end
48
+ end
49
+ end
50
+
51
+ def list_for resource_url, resource_url_with_dates, resource_name, args = {}
52
+ # OptOut counting does not work :-( We will have to do the date request to fix this...
53
+ # If date-arguments are given, we will have to use the date request.
54
+ if args[:date_from] || args[:date_to] || resource_name == "OptOut"
55
+ return list_for_with_dates(resource_url_with_dates, resource_name, args)
56
+ end
57
+
30
58
  page = 1
31
59
  resource_url = resource_url.gsub("%{send_queue_id}", data(:send_queue_id).to_s)
32
60
 
33
61
  if args[:count]
34
62
  resource_url = resource_url.gsub("%{page}", page.to_s).gsub("%{size}", "2")
35
- res = aos.req_json("/#{resource_url}")
63
+ res = aos.req_json(resource_url)
36
64
  return res["Result"]["TotalCount"]
37
65
  end
38
66
 
39
- response_url = response_url.gsub("%{size}", "200")
67
+ resource_url = resource_url.gsub("%{size}", "200")
40
68
 
41
69
  Enumerator.new do |yielder|
42
70
  loop do
43
71
  resource_url = resource_url.gsub("%{page}", page.to_s)
44
- res = aos.req_json("/#{resource_url}")
72
+ res = aos.req_json(resource_url)
45
73
 
46
74
  aos.read_resources_from_array(resource_name, res["Result"]["Items"]).each do |resource|
47
75
  yielder << resource
@@ -33,26 +33,20 @@ describe "ApsisOnSteroids" do
33
33
  end
34
34
 
35
35
  it "#sendings_by_date_interval" do
36
- date_from = Date.new(2014, 6, 1)
37
- date_to = Date.new(2014, 6, 4)
36
+ date_from = Date.new(2013, 4, 1)
37
+ date_to = Date.new(2013, 6, 2)
38
38
 
39
39
  list = aos.sendings_by_date_interval(date_from, date_to).to_a
40
- list.empty?.should_not eq true
40
+ raise "list is empty!?" if list.empty?
41
41
 
42
42
  sending = list.first
43
43
  puts "Sending data: #{sending.data_hash}"
44
44
 
45
- mlists = sending.mailing_lists.first
46
- puts "MList: #{mlists.data_hash}"
47
-
48
- click = sending.clicks.first
49
- puts "Click data: #{click.data_hash}"
50
-
51
- open = sending.opens.first
52
- puts "Open data: #{open.data_hash}"
53
-
45
+ # Test the call doesnt fail.
46
+ sending.mailing_lists.first
47
+ sending.clicks.first
48
+ sending.opens(date_from: date_from, date_to: date_to).first
54
49
  bounce = sending.bounces.first
55
- puts "Bounce data: #{bounce.data_hash}"
56
50
 
57
51
  opt_outs_count = sending.opt_outs(count: true)
58
52
  puts "Opt outs count: #{opt_outs_count}"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apsis-on-steroids
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - kaspernj
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-04 00:00:00.000000000 Z
11
+ date: 2014-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http2