chimp_contact 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,5 +23,6 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency "fakeweb"
24
24
  # specify any dependencies here; for example:
25
25
  s.add_runtime_dependency "nokogiri"
26
+ s.add_runtime_dependency "sinatra"
26
27
  s.add_runtime_dependency "hominid"
27
28
  end
data/config.ru ADDED
@@ -0,0 +1,3 @@
1
+ require File.join(File.dirname(File.expand_path(__FILE__)),'/lib/chimp_contact/dashboard.rb')
2
+
3
+ run ChimpContact::Dashboard
@@ -0,0 +1,5 @@
1
+ module ChimpContact
2
+ class Configuration
3
+ attr_accessor :mailchimp_api_key
4
+ end
5
+ end
@@ -11,8 +11,8 @@ module ChimpContact
11
11
 
12
12
  def initialize(document, options = {})
13
13
  @document = document
14
- @params = options[:params] || {}
15
- @title = options[:title] || "Newsletter"
14
+ @params = options["params"] || {}
15
+ @title = options["title"] || "Newsletter"
16
16
  end
17
17
 
18
18
  def convert
@@ -0,0 +1,30 @@
1
+ <form action="/" method="post" class="form-stacked">
2
+
3
+ <fieldset>
4
+ <label for="title">Subject</label>
5
+ <input type="text" name="title" id="title" value="" class="span8">
6
+ </fieldset>
7
+
8
+ <fieldset>
9
+ <legend>URL Parameters</legend>
10
+
11
+ <label>UTM Source</label>
12
+ <input type="text" name="params[utm_source]" value="" />
13
+
14
+ <label>UTM Campaign</label>
15
+ <input type="text" name="params[utm_campaign]" value="" />
16
+
17
+ <label>UTM Medium</label>
18
+ <input type="text" name="params[utm_medium]" value="" />
19
+ </fieldset>
20
+
21
+ <label for="template_id">Choose a template</label>
22
+ <select name="template_id" class="span8">
23
+ <% @templates.each do |template| %>
24
+ <option value="<%= template[:id] %>"><%= template[:name] %></option>
25
+ <% end %>
26
+ </select>
27
+ <br />
28
+ <br />
29
+ <input type="submit" value="Convert Template" class="btn danger large span8" />
30
+ </form>
@@ -0,0 +1,21 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
5
+ <link rel="stylesheet" href="http://twitter.github.com/bootstrap/1.4.0/bootstrap.min.css">
6
+ <title>Chimp Contact</title>
7
+ </head>
8
+ <body>
9
+ <div class="container">
10
+ <h1>Chimp Contact <small>Mailchimp to constant contact template converter</small></h1>
11
+
12
+ <div id="content" class="offset4">
13
+ <%= yield %>
14
+ </div>
15
+
16
+ <div id="footer">
17
+ <p class="pull-right">Powered by <a href="http://github.com/stinkyink/chimp_contact">Chimp Contact</a> v<%=ChimpContact::VERSION %></p>
18
+ </div>
19
+ </div>
20
+ </body>
21
+ </html>
@@ -0,0 +1,4 @@
1
+ <h2>Code</h2>
2
+ <textarea class="span16" rows="40">
3
+ <%= @result %>
4
+ </textarea>
@@ -0,0 +1,37 @@
1
+ require 'sinatra/base'
2
+ require 'chimp_contact'
3
+
4
+ module ChimpContact
5
+
6
+ class MailChimpError < StandardError;end
7
+
8
+ class Dashboard < Sinatra::Base
9
+ dir = File.dirname(File.expand_path(__FILE__))
10
+
11
+ set :views, "#{dir}/dashboard/views"
12
+ set :public_folder, "#{dir}/dashboard/public"
13
+
14
+ error MailChimpError do
15
+ 'Mailchimp failed to respond, please try refreshing your browser'
16
+ end
17
+
18
+ get "/" do
19
+ begin
20
+ @templates = Template.all
21
+ rescue
22
+ raise MailChimpError
23
+ end
24
+ erb :index
25
+ end
26
+
27
+ post "/" do
28
+ begin
29
+ html = Template.find(params["template_id"]).to_inline_css
30
+ @result = Converter.new(Nokogiri::HTML(html), params).convert.to_xhtml
31
+ rescue
32
+ raise MailChimpError
33
+ end
34
+ erb :show
35
+ end
36
+ end
37
+ end
@@ -2,20 +2,43 @@ module ChimpContact
2
2
 
3
3
  class Template
4
4
 
5
- def initialize(hominid, template_id)
6
- @hominid, @template_id = hominid, template_id
5
+ def initialize(template_info)
6
+ @template_info = template_info
7
+ end
8
+
9
+ def self.find(id)
10
+ id = id.gsub(".0", "").to_i
11
+ new(ChimpContact.hominid.template_info(id))
12
+ rescue EOFError
13
+ unless @find_failed
14
+ @find_failed = true
15
+ retry
16
+ end
7
17
  end
8
18
 
9
- def template_info
10
- @template_info ||= @hominid.template_info(@template_id)
19
+ def self.all
20
+ ChimpContact.hominid.templates["user"].inject([]) do |result, element|
21
+ result << {:name => element["name"], :id => element["id"]}
22
+ result
23
+ end
24
+ rescue EOFError
25
+ unless @all_failed
26
+ @all_failed = true
27
+ retry
28
+ end
11
29
  end
12
30
 
13
31
  def content
14
- template_info["source"]
32
+ @template_info["source"]
15
33
  end
16
34
 
17
- def convert_to_inline_css
18
- @hominid.inline_css(content, true)
35
+ def to_inline_css
36
+ ChimpContact.hominid.inline_css(content, true)
37
+ rescue EOFError
38
+ unless @to_inline_css_failed
39
+ @to_inline_css_failed = true
40
+ retry
41
+ end
19
42
  end
20
43
  end
21
44
  end
@@ -1,3 +1,3 @@
1
1
  module ChimpContact
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/chimp_contact.rb CHANGED
@@ -1,5 +1,31 @@
1
1
  require 'nokogiri'
2
2
  require 'hominid'
3
3
  require "chimp_contact/version"
4
+ require "chimp_contact/configuration"
4
5
  require "chimp_contact/template"
5
6
  require "chimp_contact/converter"
7
+
8
+ module ChimpContact
9
+
10
+ extend self
11
+ attr_accessor :configuration
12
+
13
+ # Returns the current Hominid Mailchimp API connection. If none has been created, will
14
+ # create a new one.
15
+ def hominid
16
+ @hominid ||= Hominid::API.new(configuration.mailchimp_api_key)
17
+ end
18
+
19
+ # Call this method to modify defaults in your initializers.
20
+ #
21
+ # @example
22
+ # ChimpContact.configure do |config|
23
+ # config.mailchimp_api_key = 'akueoq3royowyvrowy5o3coq3yr-us2'
24
+ # end
25
+ def configure
26
+ self.configuration ||= Configuration.new
27
+ yield(configuration)
28
+ end
29
+ end
30
+
31
+ ChimpContact.configure {}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chimp_contact
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-11-30 00:00:00.000000000 Z
13
+ date: 2011-12-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
17
- requirement: &70294933454180 !ruby/object:Gem::Requirement
17
+ requirement: &70132690234620 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *70294933454180
25
+ version_requirements: *70132690234620
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rake
28
- requirement: &70294933453760 !ruby/object:Gem::Requirement
28
+ requirement: &70132690234180 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *70294933453760
36
+ version_requirements: *70132690234180
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: fakeweb
39
- requirement: &70294933453340 !ruby/object:Gem::Requirement
39
+ requirement: &70132690233720 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70294933453340
47
+ version_requirements: *70132690233720
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: nokogiri
50
- requirement: &70294933452920 !ruby/object:Gem::Requirement
50
+ requirement: &70132690233300 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,21 @@ dependencies:
55
55
  version: '0'
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *70294933452920
58
+ version_requirements: *70132690233300
59
+ - !ruby/object:Gem::Dependency
60
+ name: sinatra
61
+ requirement: &70132690232840 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: *70132690232840
59
70
  - !ruby/object:Gem::Dependency
60
71
  name: hominid
61
- requirement: &70294933452500 !ruby/object:Gem::Requirement
72
+ requirement: &70132690232340 !ruby/object:Gem::Requirement
62
73
  none: false
63
74
  requirements:
64
75
  - - ! '>='
@@ -66,7 +77,7 @@ dependencies:
66
77
  version: '0'
67
78
  type: :runtime
68
79
  prerelease: false
69
- version_requirements: *70294933452500
80
+ version_requirements: *70132690232340
70
81
  description: Converts mailchimp templates to constant contact format but more verbose
71
82
  email:
72
83
  - rob@r-williams.com
@@ -79,8 +90,14 @@ files:
79
90
  - Gemfile
80
91
  - Rakefile
81
92
  - chimp_contact.gemspec
93
+ - config.ru
82
94
  - lib/chimp_contact.rb
95
+ - lib/chimp_contact/configuration.rb
83
96
  - lib/chimp_contact/converter.rb
97
+ - lib/chimp_contact/dashboard.rb
98
+ - lib/chimp_contact/dashboard/views/index.erb
99
+ - lib/chimp_contact/dashboard/views/layout.erb
100
+ - lib/chimp_contact/dashboard/views/show.erb
84
101
  - lib/chimp_contact/template.rb
85
102
  - lib/chimp_contact/version.rb
86
103
  - spec/chimp_contact_spec.rb
@@ -100,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
100
117
  version: '0'
101
118
  segments:
102
119
  - 0
103
- hash: -4099253186804317150
120
+ hash: -3210440901720047518
104
121
  required_rubygems_version: !ruby/object:Gem::Requirement
105
122
  none: false
106
123
  requirements:
@@ -109,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
126
  version: '0'
110
127
  segments:
111
128
  - 0
112
- hash: -4099253186804317150
129
+ hash: -3210440901720047518
113
130
  requirements: []
114
131
  rubyforge_project: chimp_contact
115
132
  rubygems_version: 1.8.10