mailigen 0.0.1 → 0.0.2

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: 4702b01ebf3fb2519a1af3332e126c3d5fcb664c
4
- data.tar.gz: 5d1fc92dfc32273b6e6d3c3392732abeaa8f9971
3
+ metadata.gz: 12e6e7d0978cd90bd64f01aef3319d4b30aa50d8
4
+ data.tar.gz: 97b985164bef8bd02b10750927b98e21d908561f
5
5
  SHA512:
6
- metadata.gz: 39ddd7772e45f9c33878002897c20c862d6414edac0643921f73b2655e1bd80014669a5c7859159e6772269465ce8732b7787aaece2060f33dc2c5350467c85f
7
- data.tar.gz: e6ec3ef331c98396f8bd0238515a91bd89cc94e4059f239e2240f16d69019c37f0bad86728d555ddb031f5bbea604e4ad810c26c84edbbd02021117233fdd22a
6
+ metadata.gz: ced7cf6662e323fe715469e41f28a210500ad628db5dbc5ff94fd5f00bdb440a8a603f9599eab1a9f1b7d205e1da2fe358b2a881816bc7dc014c55745e2c3724
7
+ data.tar.gz: 6889e48d23edae77f61af93605e8af3021031de846bea3ca2645f894739d7e2eccc14a8bd5192c9c5ded688e3128d514db4965d23b58e1f01ed2d6a44789ef8e
data/.gitignore CHANGED
@@ -16,3 +16,4 @@ spec/keys
16
16
  test/tmp
17
17
  test/version_tmp
18
18
  tmp
19
+ .coveralls.yml
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.9.3"
4
+ - "2.0.0"
5
+ # uncomment this line if your project needs to run something other than `rake`:
6
+ script: bundle exec rspec spec
@@ -0,0 +1,27 @@
1
+ ## 0.0.2
2
+
3
+ ### Features & Enhancements
4
+
5
+ * Replace addressable gem with active_support/core_ext/object methods
6
+ * Add some few tests for lists
7
+
8
+ ### Bug Fixes
9
+
10
+ ## 0.0.1
11
+
12
+ * Initial release
13
+
14
+ ### Features & Enhancements
15
+
16
+ * Basic API wrapper
17
+
18
+ ### Bug Fixes
19
+
20
+ ### Test Suite
21
+
22
+ * RSpec
23
+
24
+ ### Contributors
25
+
26
+ * Arturs Braucs
27
+ * Creative Mobile
data/Gemfile CHANGED
@@ -2,3 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in mailigen.gemspec
4
4
  gemspec
5
+
6
+ gem 'coveralls', require: false
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Mailigen
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/mailigen.png)](http://badge.fury.io/rb/mailigen)
4
+ [![Build Status](https://travis-ci.org/artursbraucs/mailigen.png?branch=master)](https://travis-ci.org/artursbraucs/mailigen)
5
+ [![Coverage Status](https://coveralls.io/repos/artursbraucs/mailigen/badge.png)](https://coveralls.io/r/artursbraucs/mailigen)
6
+
3
7
  API wrapper for mailigen.com .
4
8
 
5
9
  ## Installation
@@ -18,11 +22,36 @@ Or install it yourself as:
18
22
 
19
23
  ## Usage
20
24
 
25
+ Create your mailigen instance and call 'call' method. First param - API method, seconds param - parameters (api_key included by default).
26
+
27
+ Few examples:
28
+
21
29
  require "mailigen"
22
30
 
23
31
  mailigen = Mailigen::Api.new YOUR_MAILIGEN_API_KEY
32
+
33
+ # Ping to check apy key
24
34
  mailigen.call :ping # returns "Everything's Ok!" if API KEY is correct
25
35
 
36
+ # Creates a list
37
+ list_id = mailigen.call :listCreate, {title: "testListRspec", options: {permission_reminder: "Your in", notify_to: "foo@bar.com", subscription_notify: false}}
38
+
39
+ # Adds extra var to list
40
+ mailigen.call :listMergeVarAdd, {id: list_id, tag: "NAME", name: "Name of user"}
41
+
42
+ # Adds contacts batch to list
43
+ contacts_array_hash = {
44
+ "0" => {EMAIL: "foo@sample.com", EMAIL_TYPE: 'plain', NAME: 'Foo'},
45
+ "1" => {EMAIL: "bar@sample.com", EMAIL_TYPE: 'html', NAME: 'Bar'},
46
+ "2" => {EMAIL: "foo@sample.com", EMAIL_TYPE: 'html', NAME: 'Foo Dublicate'}
47
+ }
48
+
49
+ resp = mailigen.call :listBatchSubscribe, {id: list_id, batch: contacts_array_hash, double_optin: false}
50
+
51
+ puts resp["success_count"] # Output should be 3
52
+
53
+ For more: [Mailigen API documentation](http://dev.mailigen.com/display/AD/API+Documentation)
54
+
26
55
  ## Testing
27
56
 
28
57
  Gem using RSpec tests. You must add spec/keys/api.yml:
@@ -10,6 +10,6 @@ module Mailigen
10
10
  @@api_host = "api.mailigen.com"
11
11
 
12
12
  mattr_accessor :api_version
13
- @@api_version = "1.1"
13
+ @@api_version = "1.3"
14
14
 
15
15
  end
@@ -1,7 +1,6 @@
1
1
  require 'uri'
2
2
  require 'net/http'
3
3
  require 'net/https'
4
- require "addressable/uri"
5
4
  require 'json'
6
5
  require 'active_support/core_ext/object'
7
6
 
@@ -11,10 +10,9 @@ module Mailigen
11
10
  attr_accessor :api_key, :secure
12
11
 
13
12
  # Initialize API wrapper.
14
- # Options:
15
13
  #
16
- # api_key - from mailigen.com . Required.
17
- # secure - use SSL. By default FALSE
14
+ # @param api_key - from mailigen.com . Required.
15
+ # @param secure - use SSL. By default FALSE
18
16
  #
19
17
  def initialize api_key = nil, secure = false
20
18
  self.api_key = api_key
@@ -22,9 +20,20 @@ module Mailigen
22
20
  raise NoApiKeyError, "You must have Mailigen API key." unless self.api_key
23
21
  end
24
22
 
23
+ # Call Mailigen api method (Documented in http://dev.mailigen.com/display/AD/Mailigen+API )
24
+ #
25
+ # @param method - method name
26
+ # @param params - params if required for API
27
+ #
28
+ # @return
29
+ # JSON, String data if all goes well.
30
+ # Exception if somethnigs goes wrong.
31
+ #
25
32
  def call method, params = {}
26
33
  url = "#{api_url}&method=#{method}"
34
+
27
35
  params = {apikey: self.api_key}.merge params
36
+
28
37
  resp = post_api(url, params)
29
38
  begin
30
39
  return JSON.parse(resp)
@@ -34,7 +43,7 @@ module Mailigen
34
43
  end
35
44
 
36
45
 
37
- # Returns default api url with version included
46
+ # @return default api url with version included
38
47
  #
39
48
  def api_url
40
49
  protocol = self.secure ? "https" : "http"
@@ -45,12 +54,17 @@ module Mailigen
45
54
 
46
55
  # All api calls throught POST method.
47
56
  #
57
+ # @param url - url to post
58
+ # @param params - params in hash
59
+ #
60
+ # @return
61
+ # response body
48
62
  def post_api url, params
49
63
  uri = URI.parse(url)
50
64
  http = Net::HTTP.new(uri.host, uri.port)
51
65
  http.use_ssl = self.secure
52
-
53
- res = http.post(uri.request_uri, params.to_query)
66
+ form_params = params.to_query
67
+ res = http.post(uri.request_uri, form_params)
54
68
  res.body
55
69
  end
56
70
 
@@ -1,3 +1,3 @@
1
1
  module Mailigen
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -19,7 +19,6 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency "activesupport"
22
- spec.add_dependency "addressable"
23
22
 
24
23
  spec.add_development_dependency "bundler", "~> 1.3"
25
24
  spec.add_development_dependency "rake"
@@ -31,44 +31,104 @@ describe Mailigen::Api do
31
31
 
32
32
  it "return url" do
33
33
  obj = Mailigen::Api.new "fookey", true
34
- expect(obj.api_url).to eq("https://api.mailigen.com/1.1/?output=json")
34
+ expect(obj.api_url).to eq("https://api.mailigen.com/1.3/?output=json")
35
35
  end
36
36
 
37
37
  end
38
38
 
39
39
  context "default (unsecure)" do
40
40
  it "return url" do
41
- expect(@invalid_mailigen.api_url).to eq("http://api.mailigen.com/1.1/?output=json")
41
+ expect(@invalid_mailigen.api_url).to eq("http://api.mailigen.com/1.3/?output=json")
42
42
  end
43
43
  end
44
44
 
45
45
  end
46
46
 
47
- describe "call" do
47
+ if valid_mailigen_obj
48
+ describe "call" do
48
49
 
49
- context "ping" do
50
+ describe "ping" do
50
51
 
51
- context "invalide mailigen key" do
52
- it "returns error" do
53
- resp = @invalid_mailigen.call :ping
54
- expect(resp["code"]).to eq(104)
55
- expect(resp["error"]).to eq("Invalid Mailigen API Key: fookey")
52
+ context "invalide mailigen key" do
53
+ it "returns error" do
54
+ resp = @invalid_mailigen.call :ping
55
+ expect(resp["code"]).to eq(104)
56
+ expect(resp["error"]).to eq("Invalid Mailigen API Key: fookey")
57
+ end
56
58
  end
57
- end
58
59
 
59
- context "valide mailigen key" do
60
- it "returns OK" do
61
- resp = @mailigen.call :ping
62
- expect(resp).to eq("Everything's Ok!")
60
+ context "valide mailigen key" do
61
+ it "returns OK" do
62
+ resp = @mailigen.call :ping
63
+ expect(resp).to eq("Everything's Ok!")
64
+ end
63
65
  end
66
+
64
67
  end
65
68
 
66
- end
69
+ describe "lists" do
70
+ before(:all) do
71
+ # Creates list
72
+ create_list_params = {title: "testListRspec", options: {permission_reminder: "Your in", notify_to: "foo@bar.com", subscription_notify: false}}
73
+
74
+ resp = @mailigen.call(:listCreate, create_list_params)
75
+ @list_id = resp
76
+
77
+ @lists_with_email = {
78
+ "0" => {EMAIL: "foo@sample.com", EMAIL_TYPE: 'plain', NAME: 'Foo'},
79
+ "1" => {EMAIL: "bar@sample.com", EMAIL_TYPE: 'html', NAME: 'Bar'},
80
+ "2" => {EMAIL: "foo@sample.com", EMAIL_TYPE: 'html', NAME: 'Foo Dublicate'}
81
+ }
82
+ end
83
+ after(:all) do
84
+ # Removes list
85
+ @mailigen.call :listDelete, {id: @list_id}
86
+ end
87
+
88
+ context "createList" do
89
+ it "returns list id" do
90
+ expect(@list_id).not_to be(nil)
91
+ end
92
+ end
93
+
94
+ context "lists" do
95
+ it "returns lists containg testListRspec" do
96
+ exists = false
97
+ resp = @mailigen.call :lists
98
+ selected_lists = resp.select { |list| list["name"] == "testListRspec" }
99
+ expect(selected_lists.size).to eq(1)
100
+ end
101
+ end
102
+
103
+ context "listMergeVars" do
104
+ it "returns array with vars" do
105
+ resp = @mailigen.call :listMergeVars, {id: @list_id}
106
+ expect(resp.size).to eq(3)
107
+ end
108
+ end
109
+
110
+ context "listMergeVarAdd" do
111
+ it "returns true" do
112
+ params = {id: @list_id, tag: "FOO", name: "FooName"}
113
+ resp = @mailigen.call :listMergeVarAdd, params
114
+ expect(resp).to eq("true")
115
+ end
116
+ end
117
+
118
+ context "listBatchSubscribe" do
119
+ it "returns success count and fail count" do
120
+ # Add name var
121
+ params = {id: @list_id, tag: "NAME", name: "Name of user"}
122
+ resp = @mailigen.call :listMergeVarAdd, params
123
+
124
+ params = {id: @list_id, batch: @lists_with_email, double_optin: false}
125
+
126
+ resp = @mailigen.call :listBatchSubscribe, params
127
+ expect(resp["success_count"]).to eq(3)
128
+ expect(resp["error_count"]).to eq(0)
129
+ end
130
+ end
67
131
 
68
- context "creates list" do
69
- it "returns list id" do
70
- resp = @mailigen.call :listCreate, {title: "testListRspec", options: {permission_reminder: "Your in", notify_to: "foo@bar.com", subscription_notify: false}}
71
- expect(resp).not_to be(nil)
72
132
  end
73
133
  end
74
134
 
@@ -17,7 +17,7 @@ describe Mailigen do
17
17
  end
18
18
 
19
19
  it "has api_version" do
20
- expect(Mailigen::api_version).to eq("1.1")
20
+ expect(Mailigen::api_version).to eq("1.3")
21
21
  end
22
22
 
23
23
  end
@@ -1,6 +1,8 @@
1
1
  require 'mailigen'
2
-
3
2
  require 'rspec/autorun'
3
+ require 'coveralls'
4
+
5
+ Coveralls.wear!
4
6
 
5
7
  RSpec.configure do |config|
6
8
  end
@@ -11,5 +13,7 @@ end
11
13
 
12
14
  def valid_mailigen_obj
13
15
  hash = YAML.load(File.read("#{File.dirname(__FILE__)}/keys/api.yml"))
14
- Mailigen::Api.new hash["mailigen"]["api_key"]
16
+ return Mailigen::Api.new hash["mailigen"]["api_key"]
17
+ rescue
18
+ return nil
15
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailigen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arturs Braucs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-02 00:00:00.000000000 Z
11
+ date: 2013-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: addressable
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: bundler
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -89,6 +75,8 @@ extra_rdoc_files: []
89
75
  files:
90
76
  - .gitignore
91
77
  - .rspec
78
+ - .travis.yml
79
+ - CHANGELOG.md
92
80
  - Gemfile
93
81
  - LICENSE.txt
94
82
  - README.md