wp2tumblr 0.1.0 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dcbe7618bf9a026e696e9e26e198be786a537686
4
- data.tar.gz: eee95d425a089d79e51343b26ef049947e2d2d45
3
+ metadata.gz: aa3cb0fc81507ba8122d6dfdfe7092fda46be2b5
4
+ data.tar.gz: dc2c48808a149bd84ca16020207fb833c2a96650
5
5
  SHA512:
6
- metadata.gz: 9d49c3d3ffb7bbff1d1804a998867d8548eed64c5d1936d583d4a143ce4956ef80af6be6d4dc230441ed55d4baa4427036508de4fbb3e2bb641095cbb16959bc
7
- data.tar.gz: 4e6481f7739e05fd3da1ea5e7f2af207255da4bd41d2f83e27c1dea1d3ea6e8512be87b39f11166a3128459ff7a3214092f6a0a1737996864f0fd6b0e200d3e0
6
+ metadata.gz: 88090ceaa17c302081022e2ed2b538f087a1558393fbf34548f7077ef3ce52cc13ac8894a8dd5654e22c4f5a79df5a6f115a1ec545a9de527a9125fe7266be76
7
+ data.tar.gz: e352f6afa69a041df9645b52da2f492ca9d6a5a54e5c2a7f6a8aba6928e4e0e29a29826550ca16b7184610b5e82cdee15b0049fc180a292f168fc792d8421556
data/bin/wp2tumblr CHANGED
@@ -6,11 +6,14 @@ require "yaml"
6
6
  require "optparse"
7
7
 
8
8
  options = {}
9
+ site = "http://www.tumblr.com"
10
+
9
11
  opt_parser = OptionParser.new do |opt|
10
12
  opt.banner = "Usage: wp2tumblr COMMAND [OPTIONS]"
11
13
  opt.separator ""
12
14
  opt.separator "Commands"
13
15
  opt.separator " text: upload posts as type 'text'"
16
+ opt.separator " config: configure your Tumblr API credentials"
14
17
  opt.separator ""
15
18
  opt.separator "Options"
16
19
 
@@ -25,28 +28,52 @@ end
25
28
 
26
29
  opt_parser.parse!
27
30
 
28
- case ARGV[0]
29
- when "text"
30
- puts "Posting text posts with the options: #{options.inspect}"
31
- else
32
- puts opt_parser
33
- end
31
+ puts opt_parser unless ARGV[0]
32
+
33
+ tumblr_config_path = File.join ENV['HOME'], '.wp2tumblr'
34
+
35
+ if ARGV[0] === "config"
36
+ api_config = {}
37
+ puts "Register an application at: #{site}/oauth/apps"
38
+
39
+ print "OAuth Consumer key: "
40
+ api_config[:consumer_key] = $stdin.gets.chomp
41
+
42
+ print "OAuth Consumer secret: "
43
+ api_config[:consumer_secret] = $stdin.gets.chomp
44
+
45
+ consumer = OAuth::Consumer.new(api_config[:consumer_key], api_config[:consumer_secret], :site => site)
46
+ request_token = consumer.get_request_token :exclude_callback => true
47
+
48
+ puts request_token.authorize_url
34
49
 
35
- tumblr_config_path = File.join ENV['HOME'], '.tumblr'
50
+ puts "After you have received your oauth_verifier, paste it below."
51
+ puts "OAuth Verifier: "
52
+ api_config[:verifier] = $stdin.gets.chomp
53
+
54
+ access_token = request_token.get_access_token :oauth_verifier => api_config[:verifier]
55
+ api_config[:oauth_token] = access_token.token
56
+ api_config[:oauth_token_secret] = access_token.secret
57
+
58
+ Wp2tumblr::Config.save_api_credentials(api_config, ".wp2tumblr")
59
+
60
+ puts "Credentials saved, run 'wp2tumblr COMMAND [OPTIONS]' again"
61
+ end
36
62
 
37
63
  if File.exists?(tumblr_config_path)
38
64
 
39
65
  config = YAML.load_file tumblr_config_path
40
66
  client = Wp2tumblr::TumblrClient.new(config["consumer_key"], config["consumer_secret"], config["oauth_token"], config["oauth_token_secret"])
41
- file = File.open(options[:file]) if File.exists?(options[:file])
67
+ file = File.open(options[:file]) if options[:file] and File.exists?(options[:file])
42
68
 
43
- if client.connect
44
- puts "Successfully authenticated with Tumblr!"
45
- else
46
- puts "There was an error authenticating with Tumblr. Please check #{tumblr_config_path} and make sure your credentials are correct."
47
- end
48
-
49
69
  if ARGV[0] === "text"
70
+ if client.connect
71
+ puts "Successfully authenticated with Tumblr!"
72
+ puts "Posting text posts with the options: #{options.inspect}"
73
+ else
74
+ puts "There was an error authenticating with Tumblr. Please check #{tumblr_config_path} and make sure your credentials are correct."
75
+ end
76
+
50
77
  if file
51
78
  posts = Wp2tumblr::Wordpress.parse_xml(file, :posts)
52
79
  client.text_posts(options[:blog_name], posts)
@@ -57,7 +84,6 @@ if File.exists?(tumblr_config_path)
57
84
 
58
85
  else
59
86
  puts ""
60
- puts "You need to configure your Tumblr api credentials."
61
- puts "For more info see: https://github.com/tumblr/tumblr_client#the-irb-console"
62
- puts "run 'tumblr' then try again"
87
+ puts "You need to configure your Tumblr API credentials."
88
+ puts "run 'wp2tumblr config'"
63
89
  end
data/lib/wp2tumblr.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "open-uri"
2
+ require "wp2tumblr/config"
2
3
  require "wp2tumblr/wordpress"
3
4
  require "wp2tumblr/tumblr_client"
4
5
 
@@ -0,0 +1,22 @@
1
+ module Wp2tumblr
2
+ module Config
3
+
4
+ VALID_OPTIONS_KEYS = [
5
+ :consumer_key,
6
+ :consumer_secret,
7
+ :oauth_token,
8
+ :oauth_token_secret
9
+ ]
10
+
11
+ def self.save_api_credentials(credentials, file_name)
12
+ File.open(File.join(ENV['HOME'], file_name), "w") do |f|
13
+ configuration = {}
14
+ VALID_OPTIONS_KEYS.each do |key|
15
+ configuration[key.to_s] = credentials[key]
16
+ end
17
+ f.write YAML.dump configuration
18
+ end
19
+ end
20
+
21
+ end
22
+ end
@@ -31,5 +31,6 @@ module Wp2tumblr
31
31
  sleep 1
32
32
  end
33
33
  end
34
+
34
35
  end
35
36
  end
@@ -1,3 +1,3 @@
1
1
  module Wp2tumblr
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -20,7 +20,7 @@ module Wp2tumblr
20
20
  items = get_file_contents(file)
21
21
  @posts = []
22
22
  items.to_enum.with_index(0) do |item, i|
23
- @posts[i] = {title: item.at_xpath("title").text, content: parse_images(item.at_xpath("content:encoded").text), created_at: item.at_xpath("pubDate").text}
23
+ @posts[i] = {title: item.at_xpath("title").text, content: parse_images(item.at_xpath("content:encoded")), created_at: item.at_xpath("pubDate").text}
24
24
  end
25
25
  @posts
26
26
  end
@@ -88,7 +88,7 @@ module Wp2tumblr
88
88
  end
89
89
 
90
90
  def self.parse_images(post_content)
91
- html = Nokogiri::HTML(post_content)
91
+ html = post_content
92
92
  html.css("img").each do |image|
93
93
  begin
94
94
  encoded_image = Base64.encode64(open(image['src']) {|io| io.read})
@@ -97,7 +97,7 @@ module Wp2tumblr
97
97
  next
98
98
  end
99
99
  file_extension = image['src'][/\.[^.]*$/].split('.')[1]
100
- image['src'] = "data:image/#{file_extension};base64,#{encoded_image}"
100
+ image['src'] = "data:image/#{file_extension};base64,#{encoded_image}" if encoded_image
101
101
  end
102
102
  html
103
103
  end
@@ -113,7 +113,7 @@
113
113
  <dc:creator>testuser</dc:creator>
114
114
  <guid isPermaLink="false">http://testblog.com/?p=3199</guid>
115
115
  <description></description>
116
- <content:encoded><![CDATA[test content <div class="center"><img src="http://placehold.it/120x120" alt=""/></div>]]></content:encoded>
116
+ <content:encoded><![CDATA[test content <div class="center"><img src="http://placekitten.com.s3.amazonaws.com/homepage-samples/200/287.jpg" alt=""/></div>]]></content:encoded>
117
117
  <excerpt:encoded><![CDATA[]]></excerpt:encoded>
118
118
  <wp:post_id>3199</wp:post_id>
119
119
  <wp:post_date>2013-03-01 07:59:29</wp:post_date>
@@ -53,7 +53,7 @@ describe Wp2tumblr::Wordpress do
53
53
  describe ".parse_images" do
54
54
  it "Encodes images as base64" do
55
55
  posts = Wp2tumblr::Wordpress.parse_xml(file, :posts)
56
- post = posts[0][:content]
56
+ post = Nokogiri::HTML(posts[0][:content].text)
57
57
  Wp2tumblr::Wordpress.parse_images(post).to_s.should include('base64')
58
58
  end
59
59
  end
@@ -82,7 +82,22 @@ describe Wp2tumblr::TumblrClient do
82
82
  it "should post text posts to the Tumblr api" do
83
83
  posts = Wp2tumblr::Wordpress.parse_xml(file, :posts)
84
84
  client.connect
85
- client.text_posts(config["tumblr_blog_name"] ,posts)
85
+ client.text_posts(config["tumblr_blog_name"], posts)
86
86
  end
87
87
  end
88
+ end
89
+
90
+ describe Wp2tumblr::Config do
91
+ it "saves API credentials to a YAML file." do
92
+ api_config = {
93
+ :consumer_key => "CONSUMER_KEY",
94
+ :consumer_secret => "CONSUMER_SECRET",
95
+ :oauth_token => "OAUTH_TOKEN",
96
+ :oauth_token_secret => "OAUTH_TOKEN_SECRET"
97
+ }
98
+
99
+ Wp2tumblr::Config.save_api_credentials(api_config, ".wp2tumblr_spec")
100
+ config = YAML.load_file File.join ENV['HOME'], '.wp2tumblr_spec'
101
+ config["consumer_key"].should eq("CONSUMER_KEY");
102
+ end
88
103
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wp2tumblr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - jonlunsford
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-19 00:00:00.000000000 Z
11
+ date: 2013-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth
@@ -138,6 +138,7 @@ files:
138
138
  - Rakefile
139
139
  - bin/wp2tumblr
140
140
  - lib/wp2tumblr.rb
141
+ - lib/wp2tumblr/config.rb
141
142
  - lib/wp2tumblr/tumblr_client.rb
142
143
  - lib/wp2tumblr/version.rb
143
144
  - lib/wp2tumblr/wordpress.rb
@@ -165,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
166
  version: '0'
166
167
  requirements: []
167
168
  rubyforge_project:
168
- rubygems_version: 2.0.5
169
+ rubygems_version: 2.1.5
169
170
  signing_key:
170
171
  specification_version: 4
171
172
  summary: This gem utilizes the Tumblr api to create posts from a wordpress post XML