quickpress 0.2.1 → 0.3.0

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: 40b673beba96bf76b39b66a801dafb71a84c04e5
4
- data.tar.gz: c51ba3b1893e37cbe79108da2683411e9068fe07
3
+ metadata.gz: 23e44d958f23a9ce6ef0fa856b1562a0a2e884fd
4
+ data.tar.gz: 783ecebf3b8e3bde3ce30507b1ba45dcaf6d2a1a
5
5
  SHA512:
6
- metadata.gz: a48627317c82a5c7ee0ae5e90a1fa85cf38bbdf8044cc1fc7637299ddebb3a9f549636517076869b7cd3e42157ae641e82c82c0e3aef3e70f65d6831b99d160a
7
- data.tar.gz: 72c0717e9e074361611e4ec81e85235f63fbc323b2a913f95d180f746180491a24bc97d4fb83da59ba87c5dac18b67f707cac4dcf623b7a6342021a1893f1ae8
6
+ metadata.gz: e5ba2ac62489a26905b90addd46deec8fc267df161d5a665de9a61402f50c951dd7a83a2203f6af86ff1a60fb2da8ddd46afdfec2a5f37f011086b1a80f4cecb
7
+ data.tar.gz: 0f0d9b2159373fec701a8ac7f8396be99241b0de98afd7752cb4c44e4daee31a3ebbc8ef1b4408ae6d2524c8a6eca814353933bf3eb7cc17c8a10724b2943ec6
data/bin/qp CHANGED
@@ -514,32 +514,62 @@ class QuickpressCLI < Thor
514
514
  Quickpress::use_site(id.to_i)
515
515
  end
516
516
 
517
- # _ _ __ _____ _ __ ___ _ _ ___
518
- # | | | | ( (` | | | |\/| / /\ | |_) | |_/ | | | | |_)
519
- # |_|__ |_| _)_) |_| |_| | /_/--\ |_| \ |_| \ \_\_/ |_|
517
+ # _ ____ _ ____ _ _ ____
518
+ # | |\ | | |_ \ \ / | |_ | | | | | |_
519
+ # |_| \| |_|__ \_\/\/ |_| |_| |_|__ |_|__
520
520
  #
521
- desc('list-markup',
522
- 'Show all supported templating languages')
521
+ desc('new-file [FILENAME]',
522
+ 'Uploads a file to your Wordpress site')
523
+
524
+ option('overwrite',
525
+ :desc => "overwrites existing file",
526
+ :aliases => "-o",
527
+ :type => :boolean)
523
528
 
524
529
  long_desc(<<-END).remove_starting!
525
- Lists all templating languages supported by quickpress,
526
- \x5together with their file extensions.
530
+ Will upload FILENAME to your Wordpress site, showing it's
531
+ \x5name and link when finished.
527
532
 
528
- You can use them with the --markup option when creating
529
- \x5new posts or pages.
533
+ This way, you may use it within your posts by using
534
+ \5it's unique name or linking it directly.
530
535
 
531
- $ qp new-post --markup asciidoc
536
+ Note that Wordpress supports only the following file types:
532
537
 
538
+ Images: .jpg .jpeg .png .gif
533
539
 
534
- Notes:
540
+ Documents: .pdf .doc .docx .ppt .pptx .pps .ppsx .odt
541
+ \x5.xls .xlsx
542
+
543
+ Audio: .mp3 .m4a .ogg .wav
544
+
545
+ Video: .mp4 .m4v .mov .wmv .avi .mpg .ogv .3gp .3g2
546
+ END
547
+
548
+ def new_file(filename)
549
+ $options.merge! options
550
+
551
+ Quickpress::new_media filename
552
+ end
553
+
554
+ # _ _ __ _____ ____ _ _ ____ __
555
+ # | | | | ( (` | | | |_ | | | | | |_ ( (`
556
+ # |_|__ |_| _)_) |_| |_| |_| |_|__ |_|__ _)_)
557
+ #
558
+ desc('list-files',
559
+ 'Show all files uploaded on the Wordpress site.')
560
+
561
+ long_desc(<<-END).remove_starting!
562
+ Lists all files that were uploaded and still remain on
563
+ \x5the Wordpress site.
535
564
 
536
- * When you create a post/page using a file, the markup is implied by the filename extension.
565
+ Note that if you're making a post that links to a file,
566
+ \x5you can omit your domain.
537
567
  END
538
568
 
539
- def list_markup
569
+ def list_files
540
570
  $options.merge! options
541
571
 
542
- Quickpress::list_markup
572
+ Quickpress::list_media
543
573
  end
544
574
 
545
575
  # _ _ __ _____ __ __ _____ ____ __
@@ -840,9 +870,9 @@ rescue StandardError => e
840
870
  exit 666
841
871
  end
842
872
 
843
- $stderr.puts e
844
- $stderr.puts e.message
845
- $stderr.puts e.backtrace if $options[:debug]
873
+ $stderr.puts "Error: \"#{e}\""
874
+ $stderr.puts "Message: #{e.message}" if $options[:debug]
875
+ $stderr.puts "Backtrace: #{e.backtrace}" if $options[:debug]
846
876
  exit 666
847
877
  end
848
878
 
@@ -527,6 +527,49 @@ module Quickpress
527
527
  END
528
528
  end
529
529
 
530
+ # Uploads `filename` to the blog.
531
+ #
532
+ def new_media filename
533
+
534
+ if not File.exists? filename
535
+ fail "File '#{filename}' doesn't exist"
536
+ end
537
+ if File.directory? filename
538
+ fail "Are you nuts? '#{filename}' is a directory"
539
+ end
540
+ if File.stat(filename).size.zero?
541
+ fail "File '#{filename}' is empty"
542
+ end
543
+
544
+ Quickpress::startup
545
+
546
+ id, link, name = nil, nil
547
+
548
+ CLI::with_status("Uploading '#{filename}'...") do
549
+ id, link, name = @@wp.new_media filename
550
+ end
551
+
552
+ puts <<-END.remove_starting!
553
+ File uploaded!
554
+ id: #{id}
555
+ link: #{link}
556
+ name: #{name}
557
+ END
558
+ end
559
+
560
+ # Shows all uploaded items.
561
+ def list_media
562
+ Quickpress::startup
563
+ media = @@wp.get_all_media
564
+ if media.empty?
565
+ puts "No items uploaded 'til now."
566
+ return
567
+ end
568
+
569
+ table = [["ID", "Filename", "Link"]] + media
570
+ Thor::Shell::Basic.new.print_table table
571
+ end
572
+
530
573
  # Returns a Time Object according to String `format`.
531
574
  #
532
575
  # The acceptable date formats are:
@@ -1,5 +1,5 @@
1
1
  module Quickpress
2
- VERSION = '0.2.1'
2
+ VERSION = '0.3.0'
3
3
  VERSION_MAJOR = VERSION.split('.')[0]
4
4
  VERSION_MINOR = VERSION.split('.')[1]
5
5
  VERSION_PATCH = VERSION.split('.')[2]
@@ -1,4 +1,5 @@
1
1
  require 'rubypress'
2
+ require 'mimemagic'
2
3
 
3
4
  module Quickpress
4
5
 
@@ -226,6 +227,46 @@ module Quickpress
226
227
 
227
228
  status.map { |s| [s["name"], s["count"]] } # all we need
228
229
  end
230
+
231
+ # Uploads `filename` to Wordpress, returning
232
+ # it's ID, URL and unique filename inside Wordpress.
233
+ #
234
+ def new_media filename
235
+
236
+ content = XMLRPC::Base64.new(File.read(filename))
237
+ if content.encoded.empty?
238
+ fail "File '#{filename}' is empty"
239
+ end
240
+
241
+ mime = MimeMagic.by_path filename
242
+ if mime.nil?
243
+ fail "Unknown MIME type for '#{filename}'"
244
+ end
245
+
246
+ file = @client.uploadFile(:data => {
247
+ :name => File.basename(filename),
248
+ :bits => content,
249
+ :type => mime.type
250
+ })
251
+
252
+ return file['id'], file['url'], file['file']
253
+ end
254
+
255
+ # Returns all media items on the blog
256
+ def get_all_media
257
+ lib = @client.getMediaLibrary
258
+ return [] if lib.empty?
259
+
260
+ # Getting only the fields we're interested on
261
+ lib.map do |m|
262
+ [m["attachment_id"], m["title"], m["link"]]
263
+ end
264
+ end
265
+
266
+ def get_media id
267
+ @client.getMediaItem(:attachment_id => id)
268
+ end
269
+
229
270
  end
230
271
  end
231
272
 
@@ -28,6 +28,7 @@ END
28
28
  spec.add_dependency 'rubypress'
29
29
  spec.add_dependency 'tilt'
30
30
  spec.add_dependency 'thor'
31
+ spec.add_dependency 'mimemagic'
31
32
 
32
33
  spec.add_development_dependency 'rdoc'
33
34
  spec.add_development_dependency 'bundler', '~> 1.3'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quickpress
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre Dantas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-27 00:00:00.000000000 Z
11
+ date: 2014-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubypress
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mimemagic
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rdoc
57
71
  requirement: !ruby/object:Gem::Requirement