quickpress 0.1.0 → 0.2.0

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: 2139e020b8fc58f48b80aea389632cd9a4b6d3d8
4
- data.tar.gz: b3873903acdfa799db6f20197190d67a55b94229
3
+ metadata.gz: 1a6edfa1e92e412d704094506d439edc28591591
4
+ data.tar.gz: c4cac17e84ef4669867f4982482bebc4ac64f6fa
5
5
  SHA512:
6
- metadata.gz: f08d350ace33cf345c14c3dd7d8be16fcb984230183cf0d0dc94538df7ab0156f1c1186dc730805c636624bb5f326de65b0591b25ed1da3df2e5c1eca95b2e50
7
- data.tar.gz: 57d30a935ed53a9f8b75297a1cc69f890038b044a11528a4214149faa6e8e00061247ae9dc9d6d6a59401a960c8498ce02c781d97207897a5de496a69c03a7fb
6
+ metadata.gz: e7eb9fec72e5d5540d36231df0c0748a3b3d2f4c27ee4851e0e60901d518341d3a59c2872112b67822dc7bd04bee268bceb1f062b3338b7cb349e55e77d94aed
7
+ data.tar.gz: 8b00ca90979ff3caa1d59c1704fb2286df55534a297ab5aff5c554ef031aa3718475a46f620e0f4479d2f6a1cc8d219bf3cc816a429db5dc4ba58af96eb41f87
data/README.md CHANGED
@@ -164,6 +164,12 @@ Here's how you can do it:
164
164
  An easy way is to help on documentation. For that, simply head up
165
165
  for [the wiki][wiki] and start editing things.
166
166
 
167
+ ### Contributors
168
+
169
+ These are people who've added to the project, in order of arrival:
170
+
171
+ * **Hanmac** on *Freenode's #ruby*: Fixed issue #1.
172
+
167
173
  ## Contact
168
174
 
169
175
  Hi, I'm Alexandre Dantas! Thanks for having interest in this project.
@@ -177,7 +183,7 @@ Please take the time to visit any of the links below.
177
183
  [thor]:http://whatisthor.com/
178
184
  [rubypress]:https://github.com/zachfeldman/rubypress
179
185
  [wiki]:https://github.com/alexdantas/quickpress/wiki
180
- [gem]:https://rubygems.org/gem/quickpress/
186
+ [gem]:https://rubygems.org/gems/quickpress/
181
187
  [blogpost]:http://srackham.wordpress.com/blogpost-readme/
182
188
  [versioning]:http://semver.org/
183
189
 
data/bin/qp CHANGED
@@ -62,6 +62,17 @@ class QuickpressCLI < Thor
62
62
  :aliases => "-c",
63
63
  :type => :string)
64
64
 
65
+ option('date',
66
+ :banner => "\"date format (see below)\"",
67
+ :desc => "date to create post",
68
+ :aliases => "-d",
69
+ :type => :string)
70
+
71
+ option('status',
72
+ :desc => "status of the post",
73
+ :aliases => "-s",
74
+ :type => :string)
75
+
65
76
  long_desc(<<-END).remove_starting!
66
77
  If FILENAME is given, will post it to your Wordpress site.
67
78
 
@@ -74,6 +85,27 @@ class QuickpressCLI < Thor
74
85
 
75
86
  $ qp new-post file.md -t "My Title" -c "cat1, cat2, cat3"
76
87
 
88
+ The --date option allows you to set a date on which the post
89
+ \x5will be created. It is a string with a format that MUST be
90
+ \x5one of the following:
91
+
92
+ \x5 1. "minute:hour"
93
+ \x5 2. "minute:hour day"
94
+ \x5 3. "minute:hour day-month"
95
+ \x5 4. "minute:hour day-month-year"
96
+
97
+ If one of the fields is not specified, will get the
98
+ \x5remaining ones from the current date. For example:
99
+
100
+ $ qp new-post file.adoc -d "15:24 22-4"
101
+
102
+ The --status option says how a post will behave when uploaded.
103
+ \x5Valid options are the following (case insensitive):
104
+
105
+ \x5 * draft: visible only on admin area
106
+ \x5 * publish: (default) post right away (or on --date)
107
+ \x5 * private: like "publish", but visible only to you
108
+
77
109
  Notes:
78
110
 
79
111
  * Set default text editor with the `EDITOR` environment variable.
@@ -171,6 +203,12 @@ class QuickpressCLI < Thor
171
203
  :desc => "upload even if no changes were made",
172
204
  :aliases => "-f")
173
205
 
206
+ option('date',
207
+ :banner => "\"date format (see below)\"",
208
+ :desc => "date to create post",
209
+ :aliases => "-d",
210
+ :type => :string)
211
+
174
212
  long_desc(<<-END).remove_starting!
175
213
  If FILENAME is given, will make the post with ID to
176
214
  \x5have the contents of that file.
@@ -190,6 +228,9 @@ class QuickpressCLI < Thor
190
228
 
191
229
  That would mantain the current title and categories.
192
230
 
231
+ The --date option allows you to set a new date for this post.
232
+ \x5See `qp new-post` for info on the string format.
233
+
193
234
  See `qp new-post`, same notes apply here.
194
235
  END
195
236
 
@@ -217,6 +258,17 @@ class QuickpressCLI < Thor
217
258
  :aliases => "-t",
218
259
  :type => :string)
219
260
 
261
+ option('date',
262
+ :banner => "\"date format (see below)\"",
263
+ :desc => "date to create post",
264
+ :aliases => "-d",
265
+ :type => :string)
266
+
267
+ option('status',
268
+ :desc => "status of the post",
269
+ :aliases => "-s",
270
+ :type => :string)
271
+
220
272
  long_desc <<-END.remove_starting!
221
273
  If FILENAME is given, will send it as a page to your
222
274
  \x5Wordpress site.
@@ -225,6 +277,13 @@ class QuickpressCLI < Thor
225
277
  \x5wait for you to write a page. After you save it, will send
226
278
  \x5that.
227
279
 
280
+ The --date option allows you to set a date on which the page
281
+ \x5will be created. See help on `qp new-post` to know
282
+ \x5the format of the date string.
283
+
284
+ The --status option says how a post will behave when uploaded.
285
+ \x5See help on `qp new-post` to see valid options.
286
+
228
287
  Notes:
229
288
 
230
289
  * Set default text editor with the `EDITOR` environment variable.
@@ -315,6 +374,12 @@ class QuickpressCLI < Thor
315
374
  :desc => "upload even if no changes were made",
316
375
  :aliases => "-f")
317
376
 
377
+ option('date',
378
+ :banner => "\"date format (see below)\"",
379
+ :desc => "date to create post",
380
+ :aliases => "-d",
381
+ :type => :string)
382
+
318
383
  long_desc(<<-END).remove_starting!
319
384
  If FILENAME is given, will make the page with ID to
320
385
  \x5have the contents of that file.
@@ -334,6 +399,9 @@ class QuickpressCLI < Thor
334
399
 
335
400
  That would mantain the current title.
336
401
 
402
+ The --date option allows you to set a new date for this page.
403
+ \x5See help on `qp new-post` for info on the string format.
404
+
337
405
  See `new-page`, same notes there apply here.
338
406
  END
339
407
 
@@ -686,14 +754,6 @@ begin
686
754
  # Well, at least I'm not polluting the whole code
687
755
  # with this `rescue` stuff.
688
756
 
689
- rescue Net::ReadTimeout
690
- $stderr.puts <<-END.remove_starting!
691
-
692
- * Connection took too long.
693
- Check your internet settings and try again.
694
- END
695
- exit 666
696
-
697
757
  rescue XMLRPC::FaultException => e
698
758
  if e.message =~ /Incorrect username or password/
699
759
 
@@ -709,6 +769,15 @@ rescue XMLRPC::FaultException => e
709
769
  end
710
770
  exit 666
711
771
 
772
+ # Ruby 1.9.x don't have Net::ReadTimeout - spits out a NameError
773
+ rescue Net.const_defined?(:ReadTimeout) ? Net::ReadTimeout : EOFError
774
+ $stderr.puts <<-END.remove_starting!
775
+
776
+ * Connection took too long.
777
+ Check your internet settings and try again.
778
+ END
779
+ exit 666
780
+
712
781
  rescue ArgumentError => arg
713
782
  if arg.message =~ /Wrong protocol specified/
714
783
  $stderr.puts <<-END.remove_starting!
@@ -716,6 +785,14 @@ rescue ArgumentError => arg
716
785
  Please use `http` or `https`.
717
786
  END
718
787
  exit 666
788
+
789
+ elsif arg.message =~ /argument out of range/
790
+ $stderr.puts <<-END.remove_starting!
791
+ * Invalid date specified.
792
+ Check `qp new-post` for valid date format.
793
+ END
794
+ exit 666
795
+
719
796
  else
720
797
  $stderr.puts arg.backtrace if $options[:debug]
721
798
  end
@@ -735,6 +812,10 @@ rescue LoadError => l
735
812
  END
736
813
  exit 666
737
814
 
815
+ rescue String => s
816
+ $stderr.puts s
817
+ exit 666
818
+
738
819
  rescue StandardError => e
739
820
 
740
821
  if e.message =~ /Wrong content-type/
@@ -748,8 +829,8 @@ rescue StandardError => e
748
829
  $stderr.puts <<-END.remove_starting!
749
830
 
750
831
  * Connection error!
751
- Either site doesn't exist or there's
752
- something wrong with your internet connection.
832
+ Either the site doesn't exist or there's something
833
+ wrong with your internet connection.
753
834
  END
754
835
 
755
836
  if Quickpress::CLI::ask("Wanna retry?")
@@ -7,6 +7,7 @@ require 'quickpress/wordpress'
7
7
  require 'quickpress/cli'
8
8
  require 'quickpress/options'
9
9
  require 'digest/md5'
10
+ require 'net/http'
10
11
 
11
12
  class String
12
13
  # Removes starting whitespace.
@@ -49,7 +50,9 @@ module Quickpress
49
50
 
50
51
  @@username = nil
51
52
  @@password = nil
52
- @@connection = nil
53
+
54
+ # Actual Wordpress connection Object
55
+ @@wp = nil
53
56
 
54
57
  # Supported templating languages and their file extensions.
55
58
  @@supported_markup = [["markdown" , '.md'],
@@ -158,14 +161,14 @@ module Quickpress
158
161
  # Will try to connect here.
159
162
  # Might take a while.
160
163
  CLI::with_status("Connecting...") do
161
- @@connection = Wordpress.new(address, @@username, @@password)
164
+ @@wp = Wordpress.new(address, @@username, @@password)
162
165
  end
163
166
 
164
167
  puts <<-END.remove_starting!
165
168
 
166
- Title: #{@@connection.title}
167
- Tagline: #{@@connection.tagline}
168
- Url: #{@@connection.url}
169
+ Title: #{@@wp.title}
170
+ Tagline: #{@@wp.tagline}
171
+ Url: #{@@wp.url}
169
172
  END
170
173
 
171
174
  answer = CLI::ask "Is that right?"
@@ -432,7 +435,7 @@ module Quickpress
432
435
 
433
436
  # Will show categories in columns of n
434
437
  columns = 5
435
- table = @@connection.categories.each_slice(columns).to_a
438
+ table = @@wp.categories.each_slice(columns).to_a
436
439
 
437
440
  puts
438
441
  Thor::Shell::Basic.new.print_table table
@@ -441,7 +444,7 @@ module Quickpress
441
444
  # Pretty-prints all options of the Wordpress site.
442
445
  def list_options
443
446
  Quickpress::startup
444
- options = @@connection.get_options
447
+ options = @@wp.get_options
445
448
 
446
449
  puts
447
450
  Thor::Shell::Basic.new.print_table options
@@ -450,7 +453,7 @@ module Quickpress
450
453
  # Pretty-prints all users currently registered on the site.
451
454
  def list_users
452
455
  Quickpress::startup
453
- users = @@connection.get_users
456
+ users = @@wp.get_users
454
457
 
455
458
  users.each do |user|
456
459
  puts
@@ -466,13 +469,15 @@ module Quickpress
466
469
  # If successful, will store page id and link
467
470
  id, link = nil, nil
468
471
 
469
- if what == :post
472
+ title = $options[:title]
473
+ if title.nil?
474
+ title = CLI::get "Title:"
475
+ end
470
476
 
471
- # User specified title/categories on command line?
472
- title = $options[:title]
473
- if title.nil?
474
- title = CLI::get "Post title:"
475
- end
477
+ date = Quickpress::date $options[:date]
478
+ status = Quickpress::status $options[:status]
479
+
480
+ if what == :post
476
481
 
477
482
  categories = $options[:category]
478
483
  if categories.nil?
@@ -483,7 +488,7 @@ module Quickpress
483
488
  puts "Tab-completion works."
484
489
  puts "(will create non-existing categories automatically)"
485
490
 
486
- categories = CLI::tab_complete("Post categories:", @@connection.categories)
491
+ categories = CLI::tab_complete("Post categories:", @@wp.categories)
487
492
  end
488
493
 
489
494
  cats = []
@@ -491,29 +496,27 @@ module Quickpress
491
496
 
492
497
  CLI::with_status("Posting...") do
493
498
 
494
- id, link = @@connection.post(:post_status => 'publish',
495
- :post_date => Time.now,
496
- :post_title => title,
497
- :post_content => html,
498
- :terms_names => {
499
- :category => cats
500
- })
499
+ id, link = @@wp.new_post(:post_status => 'publish',
500
+ :post_date => date,
501
+ :post_title => title,
502
+ :post_content => html,
503
+ :post_status => status,
504
+ :terms_names => {
505
+ :category => cats
506
+ })
501
507
  end
502
508
  puts "Post successful!"
503
509
 
504
510
  elsif what == :page
505
- title = $options[:title]
506
- if title.nil?
507
- title = CLI::get "Page title:"
508
- end
509
511
 
510
512
  CLI::with_status("Creating page...") do
511
513
 
512
- id, link = @@connection.post(:post_status => 'publish',
513
- :post_date => Time.now,
514
- :post_title => title,
515
- :post_content => html,
516
- :post_type => 'page')
514
+ id, link = @@wp.new_post(:post_status => 'publish',
515
+ :post_date => [],
516
+ :post_title => title,
517
+ :post_content => html,
518
+ :post_status => status,
519
+ :post_type => 'page')
517
520
  end
518
521
  puts "Page created!"
519
522
  end
@@ -524,6 +527,92 @@ module Quickpress
524
527
  END
525
528
  end
526
529
 
530
+ # Returns a Time Object according to String `format`.
531
+ #
532
+ # The acceptable date formats are:
533
+ #
534
+ # * `minute:hour`
535
+ # * `minute:hour day`
536
+ # * `minute:hour day-month`
537
+ # * `minute:hour day-month-year`
538
+ #
539
+ # Whenever there's a non-specified field
540
+ # (like year, for example) we'll get from the current
541
+ # date.
542
+ #
543
+ # So if you only provide `minute:hour`, it'll return
544
+ # a Time Object with the current day, month and year.
545
+ #
546
+ def date(format=nil)
547
+
548
+ # When sending [] as `:post_date` it tells Wordpress
549
+ # to post instantly.
550
+ return [] if format.nil?
551
+
552
+ # Allowed date formats
553
+ full_fmt = /(\d{1,2}):(\d{2}) (\d{1,2})-(\d{1,2})-(\d{4})/
554
+ month_fmt = /(\d{1,2}):(\d{2}) (\d{1,2})-(\d{1,2})/
555
+ day_fmt = /(\d{1,2}):(\d{2}) (\d{1,2})/
556
+ hours_fmt = /(\d{1,2}):(\d{2})/
557
+
558
+ time = nil
559
+ case format
560
+ when full_fmt
561
+ year = format[full_fmt, 5].to_i
562
+ month = format[full_fmt, 4].to_i
563
+ day = format[full_fmt, 3].to_i
564
+ minute = format[full_fmt, 2].to_i
565
+ hour = format[full_fmt, 1].to_i
566
+
567
+ time = Time.new(year, month, day, hour, minute)
568
+
569
+ when month_fmt then
570
+ month = format[month_fmt, 4].to_i
571
+ day = format[month_fmt, 3].to_i
572
+ minute = format[month_fmt, 2].to_i
573
+ hour = format[month_fmt, 1].to_i
574
+
575
+ time = Time.new(Time.now.year,
576
+ month, day, hour, minute)
577
+
578
+ when day_fmt then
579
+ day = format[day_fmt, 3].to_i
580
+ minute = format[day_fmt, 2].to_i
581
+ hour = format[day_fmt, 1].to_i
582
+
583
+ time = Time.new(Time.now.year, Time.now.month,
584
+ day, hour, minute)
585
+
586
+ when hours_fmt then
587
+ minute = format[hours_fmt, 2].to_i
588
+ hour = format[hours_fmt, 1].to_i
589
+
590
+ time = Time.new(Time.now.year, Time.now.month, Time.now.day,
591
+ hour, minute)
592
+
593
+ else
594
+ fail "* Invalid data format '#{format}'.\n"
595
+ "See `qp help new-post` for details."
596
+ end
597
+
598
+ time
599
+ end
600
+
601
+ # Checks if `string` is a valid status for a post.
602
+ #
603
+ # @note Falls back to `publish`.
604
+ def status(string=nil)
605
+ case string
606
+ when nil then return "publish"
607
+ when /draft/i then return string
608
+ when /publish/i then return string
609
+ when /private/i then return string
610
+ else
611
+ fail "* Invalid status format '#{format}'.\n"
612
+ "See `qp help new-post` for details."
613
+ end
614
+ end
615
+
527
616
  # Entrance for when we're editing a page or a post
528
617
  # with numerical `id` (`what` says so).
529
618
  #
@@ -533,11 +622,11 @@ module Quickpress
533
622
  # Get previous content
534
623
  old_content = nil
535
624
  if what == :post
536
- post = @@connection.get_post id
625
+ post = @@wp.get_post id
537
626
 
538
627
  old_content = post["post_content"]
539
628
  else
540
- page = @@connection.get_page id
629
+ page = @@wp.get_page id
541
630
 
542
631
  old_content = page["post_content"]
543
632
  end
@@ -603,13 +692,18 @@ module Quickpress
603
692
 
604
693
  link = nil
605
694
 
606
- if what == :post
695
+ title = $options[:title]
696
+ if title.nil?
697
+ title = CLI::get("New Title:", true)
698
+ end
607
699
 
608
- # User specified title/categories on command line?
609
- title = $options[:title]
610
- if title.nil?
611
- title = CLI::get("New Post title:", true)
612
- end
700
+ date = Quickpress::date $options[:date]
701
+ status = Quickpress::status $options[:status]
702
+
703
+ case what
704
+ when :post
705
+ # Only thing that makes posts different from pages
706
+ # are categories.
613
707
 
614
708
  categories = $options[:category]
615
709
  if categories.nil?
@@ -621,24 +715,35 @@ module Quickpress
621
715
  puts "(will create non-existing categories automatically)"
622
716
  puts "(leave empty to keep current categories)"
623
717
 
624
- categories = CLI::tab_complete("Post categories:", @@connection.categories)
718
+ categories = CLI::tab_complete("Post categories:", @@wp.categories)
625
719
  end
626
720
 
627
721
  cats = []
628
722
  categories.split(',').each { |c| cats << c.lstrip.strip }
629
723
 
630
724
  CLI::with_status("Editing post...") do
631
- link = @@connection.edit_post(id, html, title, categories)
632
- end
633
-
634
- elsif what == :page
635
- title = $options[:title]
636
- if title.nil?
637
- title = CLI::get("New Page title:", true)
725
+ link = @@wp.edit_post(:post_id => id,
726
+ :content => {
727
+ :post_content => html,
728
+ :post_title => title,
729
+ :post_status => status,
730
+ :terms_names => {
731
+ :category => categories
732
+ }
733
+ })
638
734
  end
639
735
 
736
+ when :page
640
737
  CLI::with_status("Editing Page...") do
641
- link = @@connection.edit_page(id, html, title)
738
+ link = @@wp.edit_post(:post_id => id,
739
+ :filter => {
740
+ :post_type => 'page'
741
+ },
742
+ :content => {
743
+ :post_content => html,
744
+ :post_title => title,
745
+ :post_status => status
746
+ })
642
747
  end
643
748
  end
644
749
 
@@ -661,20 +766,15 @@ module Quickpress
661
766
  CLI::with_status("Hold on a sec...") do
662
767
 
663
768
  if what == :post
664
- thing = @@connection.get_post id.to_i
769
+ thing = @@wp.get_post id.to_i
665
770
  elsif what == :page
666
- thing = @@connection.get_page id.to_i
771
+ thing = @@wp.get_page id.to_i
667
772
  end
668
773
 
669
774
  end
670
775
 
671
- if what == :post
672
- puts "Will delete the following post:"
673
- elsif what == :page
674
- puts "Will delete the following page:"
675
- end
676
-
677
776
  puts <<-END.remove_starting!
777
+ Will delete the following #{what}:
678
778
 
679
779
  ID: #{thing["post_id"]}
680
780
  Title: #{thing["post_title"]}
@@ -686,6 +786,7 @@ module Quickpress
686
786
 
687
787
  if not $options[:force]
688
788
  answer = CLI::ask("Is that right?")
789
+
689
790
  if not answer
690
791
  puts "Alright, then!"
691
792
  next
@@ -693,10 +794,9 @@ module Quickpress
693
794
  end
694
795
 
695
796
  CLI::with_status("Deleting...") do
696
- if what == :post
697
- @@connection.delete_post id.to_i
698
- elsif what == :page
699
- @@connection.delete_page id.to_i
797
+ case what
798
+ when :post then @@wp.delete_post id.to_i
799
+ when :page then @@wp.delete_page id.to_i
700
800
  end
701
801
  end
702
802
  puts "Deleted!"
@@ -712,12 +812,12 @@ module Quickpress
712
812
  elements = nil
713
813
  if what == :post
714
814
  CLI::with_status("Retrieving posts...") do
715
- elements = @@connection.get_posts ammount
815
+ elements = @@wp.get_posts ammount
716
816
  end
717
817
 
718
818
  elsif what == :page
719
819
  CLI::with_status("Retrieving pages...") do
720
- elements = @@connection.get_pages ammount
820
+ elements = @@wp.get_pages ammount
721
821
  end
722
822
  end
723
823
 
@@ -746,7 +846,7 @@ module Quickpress
746
846
  # Shows comment count according to their status.
747
847
  def status_comments
748
848
  Quickpress::startup
749
- status = @@connection.get_comment_status
849
+ status = @@wp.get_comment_status
750
850
 
751
851
  puts
752
852
  Thor::Shell::Basic.new.print_table status
@@ -754,7 +854,7 @@ module Quickpress
754
854
 
755
855
  def status_categories
756
856
  Quickpress::startup
757
- status = @@connection.get_category_status
857
+ status = @@wp.get_category_status
758
858
 
759
859
  if $options[:"non-empty"]
760
860
  status.reject! { |s| s[1].zero? }
@@ -779,7 +879,7 @@ module Quickpress
779
879
  Quickpress::authenticate
780
880
 
781
881
  CLI::with_status("Connecting...") do
782
- @@connection ||= Wordpress.new(@@default_site, @@username, @@password)
882
+ @@wp ||= Wordpress.new(@@default_site, @@username, @@password)
783
883
  end
784
884
  @started = true
785
885
  end
@@ -1,5 +1,5 @@
1
1
  module Quickpress
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  VERSION_MAJOR = VERSION.split('.')[0]
4
4
  VERSION_MINOR = VERSION.split('.')[1]
5
5
  VERSION_PATCH = VERSION.split('.')[2]
@@ -2,20 +2,15 @@ require 'rubypress'
2
2
 
3
3
  module Quickpress
4
4
 
5
- # Handles calls to the Wordpress API
5
+ # Represents an instance of a Wordpress connection.
6
+ # Handles direct calls to the Wordpress API.
6
7
  #
7
8
  class Wordpress
8
- # Blog title.
9
- attr_reader :title
10
9
 
11
- # Blog subtitle.
12
- attr_reader :tagline
13
-
14
- # Blog address
15
- attr_reader :url
16
-
17
- # All categories on blog
18
- attr_reader :categories
10
+ attr_reader :title # Blog title.
11
+ attr_reader :tagline # Blog subtitle.
12
+ attr_reader :url # Blog address
13
+ attr_reader :categories # All categories on blog
19
14
 
20
15
  # Blog's options in a Hash. Need to call `get_options` first.
21
16
  attr_reader :options
@@ -63,74 +58,65 @@ module Quickpress
63
58
  end
64
59
  end
65
60
 
66
- # Sends a post/page to the Wordpress site.
67
- def post options
68
- id = @client.newPost(:content => options)
61
+ # Sends a post/page to the Wordpress site with `options`.
62
+ #
63
+ # `options` is a Hash with the following fields:
64
+ #
65
+ # * :post_date => Ruby Time Object (or `[]` for Time.now)
66
+ # * :post_title => String
67
+ # * :post_content => String
68
+ # * :post_status => 'publish'/'draft'/'private'
69
+ # * :post_type => 'post'(default) / 'page'
70
+ #
71
+ # To Wordpress, Posts and Pages are the same thing.
72
+ # The only thing that makes them different is the
73
+ # option `:post_type`.
74
+ #
75
+ def new_post options
76
+ # Sending post
77
+ id = @client.newPost(:content => options)
69
78
 
79
+ # Getting link for it
70
80
  info = @client.getPost(:post_id => id,
71
- :fields => [:link])
81
+ :fields => [:link])
72
82
  link = info["link"]
73
83
 
74
84
  return id, link
75
85
  end
76
86
 
77
- # Returns post with numerical `id`.
78
- # It's a Hash with attributes/values.
79
- #
80
- def get_post id
81
- @client.getPost(:post_id => id)
82
- end
83
-
84
- # Edits post with numerical `id` to have `new_content`.
87
+ # Edits post/page on the Wordpress site with `options`.
85
88
  #
86
- # If any of the arguments is nil, will keep their
87
- # old values.
89
+ # Format is the same as Wordpress#new_post.
90
+ # Check it out.
88
91
  #
89
- def edit_post(id, new_content="", new_title="", new_categories=[])
90
- old_post = get_post id
91
-
92
- new_content = old_post["post_content"] if new_content.empty?
93
- new_title = old_post["post_title"] if new_title.empty?
92
+ def edit_post options
94
93
 
95
- if new_categories == []
96
-
97
- # Filtering out terms that are not categories
98
- terms = old_post["terms"].select { |t| t["taxonomy"] == "category" }
99
-
100
- # Getting category names
101
- cats = terms.map { |c| c["name"] }
102
- new_categories = cats
103
- end
94
+ @client.editPost(options)
95
+ info = @client.getPost(:post_id => options[:post_id],
96
+ :fields => [:link])
104
97
 
105
- @client.editPost(:post_id => id,
106
- :content => {
107
- :post_content => new_content,
108
- :post_title => new_title,
109
- :terms_names => {
110
- :category => new_categories
111
- }
112
- })
113
- old_post["link"]
98
+ info["link"]
114
99
  end
115
100
 
116
- def edit_page(id, new_content="", new_title="")
117
- old_page = get_page id
101
+ # Returns post with numerical `id`.
102
+ # It's a Hash with attributes/values.
103
+ #
104
+ def get_post id
105
+ @client.getPost(:post_id => id)
106
+ end
118
107
 
119
- new_content = old_page["post_content"] if new_content.empty?
120
- new_title = old_page["post_title"] if new_title.empty?
108
+ # Returns `ammount` posts.
109
+ # If `ammount` is zero, will return all posts.
110
+ # FIXME when getting by `ammount` it is ordered by the opposite
111
+ def get_posts(ammount=0)
112
+ ammount = VERY_LARGE_NUMBER if ammount.zero?
121
113
 
122
- @client.editPost(:post_id => id,
123
- :filter => {
124
- :post_type => 'page'
125
- },
126
- :content => {
127
- :post_content => new_content,
128
- :post_title => new_title
129
- })
130
- old_page["link"]
114
+ @client.getPosts(:filter => { :number => ammount })
131
115
  end
132
116
 
133
117
  # Returns page with numerical `id`.
118
+ # It's a Hash with attributes/values.
119
+ #
134
120
  def get_page id
135
121
  @client.getPost(:post_id => id,
136
122
  :filter => {
@@ -138,15 +124,6 @@ module Quickpress
138
124
  })
139
125
  end
140
126
 
141
- # Returns `ammount` posts.
142
- # If `ammount` is zero, will return all posts.
143
- # FIXME when getting by `ammount` it is ordered by the opposite
144
- def get_posts(ammount=0)
145
- ammount = VERY_LARGE_NUMBER if ammount.zero?
146
-
147
- @client.getPosts(:filter => { :number => ammount })
148
- end
149
-
150
127
  # Returns `ammount` pages.
151
128
  # If `ammount` is zero, will return all posts.
152
129
  # FIXME when getting by `ammount` it is ordered by the opposite
@@ -161,7 +138,7 @@ module Quickpress
161
138
 
162
139
  # Deletes post with numerical `id`.
163
140
  def delete_post id
164
- @client.deletePost(:post_id => id)
141
+ @client.delnetePost(:post_id => id)
165
142
  end
166
143
 
167
144
  # Deletes page with numerical `id`.
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.1.0
4
+ version: 0.2.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-24 00:00:00.000000000 Z
11
+ date: 2013-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubypress
@@ -139,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
139
  version: '0'
140
140
  requirements: []
141
141
  rubyforge_project:
142
- rubygems_version: 2.1.7
142
+ rubygems_version: 2.2.0
143
143
  signing_key:
144
144
  specification_version: 4
145
145
  summary: Manage your Wordpress site on the command line