siteleaf 0.9.0 → 0.9.1
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.
- data/README.md +1 -1
- data/bin/siteleaf +70 -0
- data/lib/siteleaf/client.rb +2 -2
- data/lib/siteleaf/page.rb +4 -4
- data/lib/siteleaf/post.rb +2 -2
- data/lib/siteleaf/version.rb +1 -1
- data/siteleaf.gemspec +1 -0
- metadata +18 -2
data/README.md
CHANGED
@@ -63,7 +63,7 @@ To use this gem in your application, add the following to your Gemfile:
|
|
63
63
|
Using the API
|
64
64
|
-------------
|
65
65
|
|
66
|
-
This gem also allows you to interact with the Siteleaf API.
|
66
|
+
This gem also allows you to interact with the [Siteleaf API](https://github.com/siteleaf/siteleaf-api).
|
67
67
|
|
68
68
|
```ruby
|
69
69
|
require 'siteleaf'
|
data/bin/siteleaf
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
require 'siteleaf'
|
4
4
|
require 'fileutils'
|
5
|
+
require 'open-uri'
|
6
|
+
require 'digest/md5'
|
7
|
+
require 'securerandom'
|
8
|
+
require 'zip'
|
5
9
|
|
6
10
|
def help
|
7
11
|
'See https://github.com/siteleaf/siteleaf-gem for documentation.'
|
@@ -51,6 +55,48 @@ run Siteleaf::Server.new(:site_id => '#{site.id}')" }
|
|
51
55
|
end
|
52
56
|
end
|
53
57
|
|
58
|
+
def get_site_id
|
59
|
+
if File.exist?('config.ru')
|
60
|
+
if match = /:site_id => '([a-z0-9]{24})'/i.match(File.read('config.ru'))
|
61
|
+
return match[1]
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def get_theme_assets(site_id)
|
67
|
+
if assets = Siteleaf::Client.get("sites/#{site_id}/theme/assets")
|
68
|
+
updated_count = 0
|
69
|
+
assets.each do |asset|
|
70
|
+
if File.exist?(asset['filename']) && (file = File.read(asset['filename'])) && (Digest::MD5.hexdigest(file) == asset['checksum'])
|
71
|
+
# file is up to date
|
72
|
+
else
|
73
|
+
file = open("#{asset['file']['url']}?#{SecureRandom.hex(16)}", 'r:UTF-8') { |f| f.read }
|
74
|
+
FileUtils.mkdir_p(File.dirname(asset['filename']))
|
75
|
+
File.open(asset['filename'], 'w:UTF-8') { |f| f.write(file) }
|
76
|
+
updated_count += 1
|
77
|
+
end
|
78
|
+
end
|
79
|
+
puts "=> #{updated_count} asset(s) downloaded.\n"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def put_theme_assets(site_id)
|
84
|
+
theme = 'theme.zip'
|
85
|
+
FileUtils.rm(theme) if File.exist?(theme)
|
86
|
+
Zip::ZipFile.open(theme, Zip::ZipFile::CREATE) do |zip|
|
87
|
+
Dir.glob("**/*").each do |path|
|
88
|
+
zip.add(path, path)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
if response = Siteleaf::Client.post("sites/#{site_id}/theme/assets", {:file => File.new(theme), :replace => true})
|
92
|
+
updated_count = response.is_a?(Array) ? response.size : 1
|
93
|
+
puts "=> #{updated_count} asset(s) uploaded.\n"
|
94
|
+
else
|
95
|
+
puts "=> Could not upload assets.\n"
|
96
|
+
end
|
97
|
+
FileUtils.rm(theme) if File.exist?(theme)
|
98
|
+
end
|
99
|
+
|
54
100
|
case ARGV[0]
|
55
101
|
when '-v', '--version'
|
56
102
|
puts Siteleaf::VERSION
|
@@ -81,6 +127,30 @@ when 'n', 'new'
|
|
81
127
|
else
|
82
128
|
puts "Could not create site `#{ARGV[1]}`.\n"
|
83
129
|
end
|
130
|
+
when 'pull'
|
131
|
+
case ARGV[1]
|
132
|
+
when 'theme'
|
133
|
+
auth
|
134
|
+
if site_id = get_site_id
|
135
|
+
get_theme_assets(site_id)
|
136
|
+
else
|
137
|
+
puts "Site not configured, run `siteleaf config yoursite.com`.\n"
|
138
|
+
end
|
139
|
+
else
|
140
|
+
puts "`#{ARGV[0]}` command not found.\n"
|
141
|
+
end
|
142
|
+
when 'put'
|
143
|
+
case ARGV[1]
|
144
|
+
when 'theme'
|
145
|
+
auth
|
146
|
+
if site_id = get_site_id
|
147
|
+
put_theme_assets(site_id)
|
148
|
+
else
|
149
|
+
puts "Site not configured, run `siteleaf config yoursite.com`.\n"
|
150
|
+
end
|
151
|
+
else
|
152
|
+
puts "`#{ARGV[0]}` command not found.\n"
|
153
|
+
end
|
84
154
|
else
|
85
155
|
puts "`#{ARGV[0]}` command not found.\n"
|
86
156
|
puts help
|
data/lib/siteleaf/client.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'httmultiparty'
|
2
2
|
|
3
3
|
module Siteleaf
|
4
4
|
class Client
|
@@ -30,7 +30,7 @@ module Siteleaf
|
|
30
30
|
def self.execute(method, path, params = nil)
|
31
31
|
Siteleaf.load_settings if !Siteleaf.api_key
|
32
32
|
begin
|
33
|
-
request =
|
33
|
+
request = HTTMultiParty.send(method, Siteleaf.api_url(path), {:query => params, :basic_auth => {:username => Siteleaf.api_key, :password => Siteleaf.api_secret}})
|
34
34
|
if request.respond_to?('parsed_response')
|
35
35
|
return request.parsed_response # parse JSON
|
36
36
|
else
|
data/lib/siteleaf/page.rb
CHANGED
@@ -5,12 +5,12 @@ module Siteleaf
|
|
5
5
|
attr_reader :id, :created_at, :updated_at
|
6
6
|
|
7
7
|
def self.all
|
8
|
-
result = Client.get "#{self.endpoint}"
|
8
|
+
result = Client.get "#{self.endpoint}"
|
9
9
|
result.map { |r| self.new(r) } if result
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.find(id)
|
13
|
-
result = Client.get "#{self.endpoint}/#{id}"
|
13
|
+
result = Client.get "#{self.endpoint}/#{id}"
|
14
14
|
self.new(result) if result
|
15
15
|
end
|
16
16
|
|
@@ -23,12 +23,12 @@ module Siteleaf
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def posts
|
26
|
-
result = Client.get "pages/#{self.id}/posts"
|
26
|
+
result = Client.get "pages/#{self.id}/posts"
|
27
27
|
result.map { |r| Post.new(r) } if result
|
28
28
|
end
|
29
29
|
|
30
30
|
def pages
|
31
|
-
result = Client.get "pages/#{self.id}/pages"
|
31
|
+
result = Client.get "pages/#{self.id}/pages"
|
32
32
|
result.map { |r| self.new(r) } if result
|
33
33
|
end
|
34
34
|
|
data/lib/siteleaf/post.rb
CHANGED
@@ -4,12 +4,12 @@ module Siteleaf
|
|
4
4
|
attr_accessor :taxonomy
|
5
5
|
|
6
6
|
def self.all
|
7
|
-
result = Client.get "#{self.endpoint}"
|
7
|
+
result = Client.get "#{self.endpoint}"
|
8
8
|
result.map { |r| self.new(r) } if result
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.find(id)
|
12
|
-
result = Client.get "#{self.endpoint}/#{id}"
|
12
|
+
result = Client.get "#{self.endpoint}/#{id}"
|
13
13
|
self.new(result) if result
|
14
14
|
end
|
15
15
|
|
data/lib/siteleaf/version.rb
CHANGED
data/siteleaf.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: siteleaf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -43,6 +43,22 @@ dependencies:
|
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: httmultiparty
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
46
62
|
- !ruby/object:Gem::Dependency
|
47
63
|
name: rack
|
48
64
|
requirement: !ruby/object:Gem::Requirement
|