buttercms-ruby 1.3.2 → 1.4
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.
- checksums.yaml +4 -4
- data/README.md +45 -7
- data/VERSION +1 -1
- data/lib/buttercms-ruby.rb +57 -7
- data/lib/buttercms/butter_resource.rb +25 -0
- data/lib/buttercms/errors.rb +3 -0
- data/lib/buttercms/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6892f2c65b2714c507d356db4c7a0fa1ca0efe53
|
4
|
+
data.tar.gz: aeee01cf3ad4a68c8fe365124db34e494dbf9ca1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f71a3ae6a84b213bc03c42c96b0217d1241a8f812c4f1b9acb8ef968293a4d5a5db6e727316e5f5b290dabd3c5219df02ef58a03360cf4bd845bf199e9a4d12
|
7
|
+
data.tar.gz: 7a3afc5ae7c6a3c7f0d3c41b48a63bbdd43bd4107cfbffb7cad501ba40d8461168f2d95726bb45d40509938fb7495a741d4f6994c410f9abc96877ee5fd200d1
|
data/README.md
CHANGED
@@ -30,26 +30,31 @@ To setup your project, follow these steps:
|
|
30
30
|
|
31
31
|
## Pages
|
32
32
|
|
33
|
+
https://buttercms.com/docs/api/?ruby#pages
|
34
|
+
|
35
|
+
|
33
36
|
```ruby
|
34
|
-
params = {
|
37
|
+
params = {page: 1, page_size: 10, locale: 'en', preview: 1, fields.headline: 'foo bar', levels: 2} # optional
|
35
38
|
pages = ButterCMS::Page.list('news', params)
|
36
39
|
page = ButterCMS::Page.get('news', 'hello-world', params)
|
37
40
|
```
|
38
41
|
|
39
|
-
##
|
42
|
+
## Collections
|
40
43
|
|
41
|
-
|
42
|
-
ButterCMS::Content.fetch(['homepage_headline'])
|
44
|
+
https://buttercms.com/docs/api/?ruby#retrieve-a-collection
|
43
45
|
|
44
|
-
|
45
|
-
|
46
|
+
```ruby
|
47
|
+
params = {page: 1, page_size: 10, locale: 'en', preview: 1, fields.headline: 'foo bar', levels: 2} # optional
|
48
|
+
ButterCMS::Content.fetch(['testimonials'], params)
|
46
49
|
|
47
|
-
# Test mode can be used to setup a staging website for previewing
|
50
|
+
# Test mode can be used to setup a staging website for previewing Collections or for testing content during local development. To fetch content from test mode add the following configuration:
|
48
51
|
ButterCMS::test_mode = true
|
49
52
|
```
|
50
53
|
|
51
54
|
## Blog Engine
|
52
55
|
|
56
|
+
https://buttercms.com/docs/api/?ruby#blog-engine
|
57
|
+
|
53
58
|
```ruby
|
54
59
|
posts = ButterCMS::Post.all({:page => 1, :page_size => 10})
|
55
60
|
puts posts.first.title
|
@@ -61,6 +66,39 @@ puts posts.first.title
|
|
61
66
|
post = ButterCMS::Post.find("post-slug")
|
62
67
|
puts post.title
|
63
68
|
|
69
|
+
# Create a Post.
|
70
|
+
ButterCMS::write_api_token = "YourWriteToken"
|
71
|
+
ButterCMS::Post.create({
|
72
|
+
slug: 'blog-slug',
|
73
|
+
title: 'blog-title'
|
74
|
+
})
|
75
|
+
|
76
|
+
# Update a Post
|
77
|
+
ButterCMS::Post.update('blog-slug', {
|
78
|
+
title: 'blog-title-v2'
|
79
|
+
})
|
80
|
+
|
81
|
+
# Create a page
|
82
|
+
ButterCMS::Page.create({
|
83
|
+
slug: 'page-slug',
|
84
|
+
title: 'page-title',
|
85
|
+
status: 'published',
|
86
|
+
"page-type": 'page_type',
|
87
|
+
fields: {
|
88
|
+
meta_title: 'test meta title'
|
89
|
+
}
|
90
|
+
})
|
91
|
+
|
92
|
+
# update a Page
|
93
|
+
ButterCMS::Page.update('page-slug-2', {
|
94
|
+
status: 'published',
|
95
|
+
fields: {
|
96
|
+
meta_title: 'test meta title'
|
97
|
+
}
|
98
|
+
})
|
99
|
+
|
100
|
+
|
101
|
+
|
64
102
|
author = ButterCMS::Author.find("author-slug")
|
65
103
|
puts author.first_name
|
66
104
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.4
|
data/lib/buttercms-ruby.rb
CHANGED
@@ -27,6 +27,7 @@ module ButterCMS
|
|
27
27
|
|
28
28
|
class << self
|
29
29
|
attr_accessor :api_token
|
30
|
+
attr_accessor :write_api_token
|
30
31
|
attr_accessor :test_mode
|
31
32
|
attr_accessor :read_timeout
|
32
33
|
attr_reader :data_store
|
@@ -71,13 +72,6 @@ module ButterCMS
|
|
71
72
|
|
72
73
|
path = "#{@api_url.path}#{URI.encode(path)}?#{URI.encode_www_form(query)}"
|
73
74
|
|
74
|
-
http_options = {
|
75
|
-
open_timeout: 2.0,
|
76
|
-
read_timeout: read_timeout || 5.0,
|
77
|
-
ssl_timeout: 2.0,
|
78
|
-
use_ssl: @api_url.scheme == "https",
|
79
|
-
}
|
80
|
-
|
81
75
|
response =
|
82
76
|
Net::HTTP.start(@api_url.host, @api_url.port, http_options) do |http|
|
83
77
|
request = Net::HTTP::Get.new(path)
|
@@ -128,4 +122,60 @@ module ButterCMS
|
|
128
122
|
|
129
123
|
return JSON.parse(result)
|
130
124
|
end
|
125
|
+
|
126
|
+
def self.write_request(path, options = {})
|
127
|
+
raise ArgumentError.new "Please set your write API token" unless write_api_token
|
128
|
+
result = write_api_request(path, options)
|
129
|
+
|
130
|
+
return JSON.parse(result)
|
131
|
+
end
|
132
|
+
|
133
|
+
def self.write_api_request(path, options = {})
|
134
|
+
query = options.dup
|
135
|
+
token_for_request = query.delete(:auth_token) || write_api_token
|
136
|
+
|
137
|
+
path = "#{@api_url.path}#{URI.encode(path)}"
|
138
|
+
|
139
|
+
response =
|
140
|
+
Net::HTTP.start(@api_url.host, @api_url.port, http_options) do |http|
|
141
|
+
write_type = query.delete(:method) || "Post"
|
142
|
+
request_type = "Net::HTTP::#{write_type}".constantize
|
143
|
+
request = request_type.new(path)
|
144
|
+
request["User-Agent"] = "ButterCMS/Ruby #{ButterCMS::VERSION}"
|
145
|
+
request["Accept"] = "application/json"
|
146
|
+
request["Content-Type"] = "application/json"
|
147
|
+
request["Authorization"] = "Token #{token_for_request}"
|
148
|
+
request.body = query.except(:auth_token).to_json
|
149
|
+
|
150
|
+
http.request(request)
|
151
|
+
end
|
152
|
+
|
153
|
+
case response
|
154
|
+
when Net::HTTPNotFound
|
155
|
+
raise ::ButterCMS::NotFound, JSON.parse(response.body)["detail"]
|
156
|
+
when Net::HTTPBadRequest
|
157
|
+
parsed_body = JSON.parse(response.body)
|
158
|
+
errors = if parsed_body.is_a?(Array)
|
159
|
+
parsed_body.join(' ')
|
160
|
+
else
|
161
|
+
parsed_body.map do |k, v|
|
162
|
+
"#{k}: #{v}"
|
163
|
+
end.join(" ")
|
164
|
+
end
|
165
|
+
raise ::ButterCMS::BadRequest, errors
|
166
|
+
end
|
167
|
+
|
168
|
+
response.body
|
169
|
+
end
|
170
|
+
|
171
|
+
private
|
172
|
+
|
173
|
+
def self.http_options
|
174
|
+
{
|
175
|
+
open_timeout: 2.0,
|
176
|
+
read_timeout: read_timeout || 5.0,
|
177
|
+
ssl_timeout: 2.0,
|
178
|
+
use_ssl: @api_url.scheme == "https",
|
179
|
+
}
|
180
|
+
end
|
131
181
|
end
|
@@ -25,6 +25,12 @@ module ButterCMS
|
|
25
25
|
# API expects all endpoints to include trailing slashes
|
26
26
|
resource_path + (id ? "#{id}/" : '')
|
27
27
|
end
|
28
|
+
|
29
|
+
def self.patch_endpoint(id)
|
30
|
+
# Append trailing slash when id is added to path because
|
31
|
+
# API expects all endpoints to include trailing slashes
|
32
|
+
resource_path + "*/#{id}/"
|
33
|
+
end
|
28
34
|
|
29
35
|
def self.resource_path
|
30
36
|
raise "resource_path must be set"
|
@@ -41,6 +47,25 @@ module ButterCMS
|
|
41
47
|
|
42
48
|
self.create_object(response)
|
43
49
|
end
|
50
|
+
|
51
|
+
def self.create(options = {})
|
52
|
+
options[:method] = 'Post'
|
53
|
+
response = ButterCMS.write_request(self.endpoint, options)
|
54
|
+
|
55
|
+
self.create_object(response)
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.update(id, options = {})
|
59
|
+
options[:method] = 'Patch'
|
60
|
+
_endpoint = if resource_path.include?("/pages/")
|
61
|
+
self.patch_endpoint(id)
|
62
|
+
else
|
63
|
+
self.endpoint(id)
|
64
|
+
end
|
65
|
+
response = ButterCMS.write_request(_endpoint, options)
|
66
|
+
|
67
|
+
self.create_object(response)
|
68
|
+
end
|
44
69
|
|
45
70
|
private
|
46
71
|
|
data/lib/buttercms/errors.rb
CHANGED
data/lib/buttercms/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: buttercms-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: '1.4'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ButterCMS
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|