]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/wordpress/libraries/wordpress.rb
Switch wordpress version check to use the JSON API
[chef.git] / cookbooks / wordpress / libraries / wordpress.rb
index 06a375fe931935f726dc5f336da44878abbbb537..1ea8585879a103de96da35f62d6641826488acbe 100644 (file)
@@ -1,43 +1,48 @@
-require 'chef/mixin/command'
+require "chef/mixin/shell_out"
+
+require "addressable"
+require "httpclient"
+require "json"
 
 class Chef
   module Wordpress
-    extend Chef::Mixin::Command
+    extend Chef::Mixin::ShellOut
 
     @api_responses = {}
     @svn_responses = {}
 
-    def self.current_version
-      core_version_check["offers"].first["current"]
-    end
+    class << self
+      def current_version
+        core_version_check["offers"].first["current"]
+      end
 
-    def self.current_plugin_version(name)
-      if svn_cat("http://plugins.svn.wordpress.org/#{name}/trunk/readme.txt") =~ /Stable tag:\s*([^\s\r]*)[\s\r]*/
-        Regexp.last_match[1]
-      else
-        "trunk"
+      def current_plugin_version(name)
+        if svn_cat("https://plugins.svn.wordpress.org/#{name}/trunk/readme.txt") =~ /Stable tag:\s*([^\s\r]*)[\s\r]*/
+          Regexp.last_match[1]
+        else
+          "trunk"
+        end
       end
-    end
 
-    private
+      private
 
-    def self.core_version_check
-      api_get("http://api.wordpress.org/core/version-check/1.6")
-    end
+      def core_version_check
+        api_get("https://api.wordpress.org/core/version-check/1.7")
+      end
 
-    def self.api_get(url)
-      @api_responses[url] ||= ::PHP.unserialize(::HTTPClient.new.get_content(url))
-    end
+      def api_get(url)
+        @api_responses[url] ||= ::JSON.parse(::HTTPClient.new.get_content(url))
+      end
 
-    def self.svn_cat(url)
-      unless @svn_responses[url]
-        status, stdout, stderr = output_of_command("svn cat #{url}", {})
-        handle_command_failures(status, "STDOUT: #{stdout}\nSTDERR: #{stderr}", :output_on_failure => true)
+      def svn_cat(url)
+        unless @svn_responses[url]
+          result = shell_out!("svn", "cat", url)
 
-        @svn_responses[url] = stdout.force_encoding("UTF-8")
-      end
+          @svn_responses[url] = result.stdout.force_encoding("UTF-8")
+        end
 
-      @svn_responses[url]
+        @svn_responses[url]
+      end
     end
   end
 end