mailsolution 0.1.1

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.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in mailsolution.gemspec
4
+ gemspec
@@ -0,0 +1,6 @@
1
+ Usage
2
+ =====
3
+
4
+ newsletter = Mailsolution.new('myaid')
5
+ newsletter.attributes = { email: "test@example.com", firstname: "Not", lastname: "Sure" }
6
+ newsletter.deliver
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,44 @@
1
+ require "mailsolution/version"
2
+
3
+ module Mailsolution
4
+
5
+ class HTTP
6
+
7
+ def initialize(aid)
8
+ require 'uri'
9
+ @aid = aid.to_i
10
+ @redirect = "http://62.27.38.101/host/h.php?TYPE=r&AID=#{aid}"
11
+ @action = "NEW"
12
+ @attributes = ""
13
+ @domain = "62.27.38.101"
14
+ self
15
+ end
16
+
17
+ def attributes=(attrs)
18
+ @attributes = attrs.map{|k,v| "&#{URI.escape(k.to_s)}=#{URI.escape(v.to_s)}"}.join
19
+ end
20
+
21
+ def update_attributes(attrs)
22
+ @attributes += attrs.map{|k,v| "&#{URI.escape(k.to_s)}=#{URI.escape(v.to_s)}"}.join
23
+ self
24
+ end
25
+
26
+ def path
27
+ "/c/n?AID=#{URI.escape(@aid.to_s)}&ACTION=#{URI.escape(@action)}#{@attributes}&RED=#{URI.escape(@redirect)}"
28
+ end
29
+
30
+ def to_s
31
+ "http://#{@domain}#{path}"
32
+ end
33
+
34
+ def deliver
35
+ require 'net/http'
36
+ begin
37
+ Timeout.timeout(10) { Net::HTTP.get_response(@domain, path, "80") }
38
+ end
39
+ end
40
+
41
+ end
42
+
43
+ end
44
+
@@ -0,0 +1,3 @@
1
+ module Mailsolution
2
+ VERSION = "0.1.1"
3
+ end
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "mailsolution/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "mailsolution"
7
+ s.version = Mailsolution::VERSION
8
+ s.authors = ["Sascha Brink"]
9
+ s.email = ["sascha.brink@gmail.com"]
10
+ s.homepage = "http://github.com/sbrink/mailsolution"
11
+ s.summary = %q{A simple interface to mailsolution newsletter api}
12
+ s.description = %q{A simple interface to mailsolution newsletter api. It only uses the http interface. }
13
+
14
+ s.rubyforge_project = "mailsolution"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # s.add_development_dependency "rspec"
22
+ # s.add_runtime_dependency "rest-client"
23
+ end
@@ -0,0 +1,41 @@
1
+ $:.push File.expand_path("../lib")
2
+ require 'minitest/autorun'
3
+ require 'mailsolution'
4
+
5
+ describe Mailsolution::HTTP do
6
+ before do
7
+ @mailsolution = Mailsolution::HTTP.new("123")
8
+ end
9
+
10
+ it "should give the corrent base path" do
11
+ @mailsolution.path.must_equal "/c/n?AID=123&ACTION=NEW&RED=http://62.27.38.101/host/h.php?TYPE=r&AID=123"
12
+ end
13
+
14
+ it "should be able to add attribute hash" do
15
+ @mailsolution.attributes= { firstname: "Not" }
16
+ @mailsolution.path.must_equal "/c/n?AID=123&ACTION=NEW&firstname=Not&RED=http://62.27.38.101/host/h.php?TYPE=r&AID=123"
17
+ end
18
+
19
+
20
+ it "should be able to add one attributes" do
21
+ @mailsolution.update_attributes(firstname: "Not")
22
+ @mailsolution.path.must_equal "/c/n?AID=123&ACTION=NEW&firstname=Not&RED=http://62.27.38.101/host/h.php?TYPE=r&AID=123"
23
+ end
24
+
25
+ it "should be able to add multiple attributes" do
26
+ @mailsolution.update_attributes(firstname: "Not")
27
+ @mailsolution.update_attributes(lastname: "Sure")
28
+ @mailsolution.path.must_equal "/c/n?AID=123&ACTION=NEW&firstname=Not&lastname=Sure&RED=http://62.27.38.101/host/h.php?TYPE=r&AID=123"
29
+ end
30
+
31
+ it "should be able to add multiple attributes" do
32
+ @mailsolution.attributes= { firstname: "Not", lastname: "Sure" }
33
+ @mailsolution.path.must_equal "/c/n?AID=123&ACTION=NEW&firstname=Not&lastname=Sure&RED=http://62.27.38.101/host/h.php?TYPE=r&AID=123"
34
+ end
35
+
36
+ it "should escape attributes" do
37
+ @mailsolution.update_attributes(firstname: "% ")
38
+ @mailsolution.path.must_equal "/c/n?AID=123&ACTION=NEW&firstname=%25%20&RED=http://62.27.38.101/host/h.php?TYPE=r&AID=123"
39
+ end
40
+
41
+ end
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mailsolution
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sascha Brink
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-12-18 00:00:00.000000000Z
13
+ dependencies: []
14
+ description: ! 'A simple interface to mailsolution newsletter api. It only uses the
15
+ http interface. '
16
+ email:
17
+ - sascha.brink@gmail.com
18
+ executables: []
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - .gitignore
23
+ - Gemfile
24
+ - README.md
25
+ - Rakefile
26
+ - lib/mailsolution.rb
27
+ - lib/mailsolution/version.rb
28
+ - mailsolution.gemspec
29
+ - spec/mailsolution_test.rb
30
+ homepage: http://github.com/sbrink/mailsolution
31
+ licenses: []
32
+ post_install_message:
33
+ rdoc_options: []
34
+ require_paths:
35
+ - lib
36
+ required_ruby_version: !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ required_rubygems_version: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ requirements: []
49
+ rubyforge_project: mailsolution
50
+ rubygems_version: 1.8.10
51
+ signing_key:
52
+ specification_version: 3
53
+ summary: A simple interface to mailsolution newsletter api
54
+ test_files:
55
+ - spec/mailsolution_test.rb