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