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 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
@@ -1,4 +1,4 @@
1
- require 'httparty'
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 = HTTParty.send(method, Siteleaf.api_url(path), {:body => params, :basic_auth => {:username => Siteleaf.api_key, :password => Siteleaf.api_secret}})
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}", {'include' => ['meta']}
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}", {'include' => ['meta']}
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", {'include' => ['meta','taxonomy']}
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", {'include' => ['meta']}
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}", {'include' => ['meta','taxonomy']}
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}", {'include' => ['meta','taxonomy']}
12
+ result = Client.get "#{self.endpoint}/#{id}"
13
13
  self.new(result) if result
14
14
  end
15
15
 
@@ -1,3 +1,3 @@
1
1
  module Siteleaf
2
- VERSION = "0.9.0"
2
+ VERSION = "0.9.1"
3
3
  end
data/siteleaf.gemspec CHANGED
@@ -16,6 +16,7 @@ Gem::Specification.new do |gem|
16
16
 
17
17
  gem.add_dependency 'json', '~> 1.7.7'
18
18
  gem.add_dependency 'httparty'
19
+ gem.add_dependency 'httmultiparty'
19
20
  gem.add_dependency 'rack'
20
21
 
21
22
  gem.files = `git ls-files`.split($/)
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.0
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 00:00:00.000000000 Z
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