-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
- 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"
+ class << self
+ def current_version
+ core_version_check["offers"].first["current"]
end
- end
-
- private
- def self.core_version_check
- api_get("http://api.wordpress.org/core/version-check/1.6")
- end
+ def current_plugin_version(name)
+ plugin_information(name)["version"]
+ end
- def self.api_get(url)
- @api_responses[url] ||= ::PHP.unserialize(::HTTPClient.new.get_content(url))
- end
+ private
- 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 core_version_check
+ api_get("https://api.wordpress.org/core/version-check/1.7")
+ end
- @svn_responses[url] = stdout.force_encoding("UTF-8")
+ def plugin_information(name)
+ api_get("https://api.wordpress.org/plugins/info/1.2/?action=plugin_information&request[slug]=#{name}")
end
- @svn_responses[url]
+ def api_get(url)
+ http_client = ::HTTPClient.new
+ http_client.ssl_config.set_trust_ca("/etc/ssl/certs/ca-certificates.crt")
+ @api_responses[url] ||= ::JSON.parse(http_client.get_content(url))
+ end
end
end
end