voog_api 0.0.14 → 0.0.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/voog_api/api/buy_buttons.rb +30 -0
- data/lib/voog_api/api/product_widgets.rb +31 -0
- data/lib/voog_api/api/redirect_rules.rb +44 -0
- data/lib/voog_api/client.rb +16 -10
- data/lib/voog_api/version.rb +1 -1
- data/spec/fixtures/buy_buttons/buy_button.json +38 -0
- data/spec/fixtures/buy_buttons/buy_buttons.json +78 -0
- data/spec/fixtures/product_widgets/product_widget.json +41 -0
- data/spec/fixtures/product_widgets/product_widgets.json +84 -0
- data/spec/fixtures/redirect_rules/redirect_rule.json +12 -0
- data/spec/fixtures/redirect_rules/redirect_rules.json +26 -0
- data/spec/spec_helper.rb +9 -6
- data/spec/voog_api/api/buy_buttons_spec.rb +56 -0
- data/spec/voog_api/api/product_widgets_spec.rb +56 -0
- data/spec/voog_api/api/redirect_rules_spec.rb +62 -0
- data/spec/voog_api/api/search_spec.rb +1 -1
- data/voog_api.gemspec +3 -5
- metadata +35 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f85ae8aa46dd44c9603c22642230e6031d3211869c7040eaca8f1de9e610d8da
|
4
|
+
data.tar.gz: 4a7a8012e070a615d3c130d17c96612bb7c06b182213b0d22e4eeb00dfeb8244
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c11f5bc2af799cabcff5e8652a35133a25a098df075125201f1ffd59ff17aa5c9292385fc6ac04db334c7193a36dd78c185cb1ccb2d2d4fa5837ed0382110263
|
7
|
+
data.tar.gz: e15f1cfd517c7b52d615f359f725411fe34c4589bf959a036d208ef0a4e598ab9a290bcebfe716bbc8af7f33e1015d434b541c351bb19f72807e3ab92f723a4c
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Voog
|
2
|
+
class API
|
3
|
+
# Voog Buy Buttons API methods.
|
4
|
+
#
|
5
|
+
# @see https://www.voog.com/developers/api/resources/buy_buttons
|
6
|
+
module BuyButtons
|
7
|
+
|
8
|
+
# List buy_buttons
|
9
|
+
#
|
10
|
+
# @see https://www.voog.com/developers/api/resources/buy_buttons#get_buy_buttons
|
11
|
+
def buy_buttons(params = {})
|
12
|
+
paginate 'buy_buttons', {query: params}
|
13
|
+
end
|
14
|
+
|
15
|
+
# Get a single buy_button
|
16
|
+
#
|
17
|
+
# @see https://www.voog.com/developers/api/resources/buy_buttons#get_buy_button
|
18
|
+
def buy_button(id, params = {})
|
19
|
+
get "buy_buttons/#{id}", {query: params}
|
20
|
+
end
|
21
|
+
|
22
|
+
# Update a buy_button
|
23
|
+
#
|
24
|
+
# @see https://www.voog.com/developers/api/resources/buy_buttons#update_buy_button
|
25
|
+
def update_buy_button(id, data)
|
26
|
+
put "buy_buttons/#{id}", data
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Voog
|
2
|
+
|
3
|
+
class API
|
4
|
+
# Voog Product Widgets API methods.
|
5
|
+
#
|
6
|
+
# @see https://www.voog.com/developers/api/resources/product_widgets
|
7
|
+
module ProductWidgets
|
8
|
+
|
9
|
+
# List product_widgets
|
10
|
+
#
|
11
|
+
# @see https://www.voog.com/developers/api/resources/product_widgets#get_product_widgets
|
12
|
+
def product_widgets(params = {})
|
13
|
+
paginate 'product_widgets', {query: params}
|
14
|
+
end
|
15
|
+
|
16
|
+
# Get a single product_widget
|
17
|
+
#
|
18
|
+
# @see https://www.voog.com/developers/api/resources/product_widgets#get_product_widget
|
19
|
+
def product_widget(id, params = {})
|
20
|
+
get "product_widgets/#{id}", {query: params}
|
21
|
+
end
|
22
|
+
|
23
|
+
# Update a product_widget
|
24
|
+
#
|
25
|
+
# @see https://www.voog.com/developers/api/resources/product_widgets#update_product_widget
|
26
|
+
def update_product_widget(id, data)
|
27
|
+
put "product_widgets/#{id}", data
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Voog
|
2
|
+
class API
|
3
|
+
# Voog Redirect Rules API methods.
|
4
|
+
#
|
5
|
+
# @see https://www.voog.com/developers/api/resources/redirect_rules
|
6
|
+
module RedirectRules
|
7
|
+
|
8
|
+
# List redirect_rules
|
9
|
+
#
|
10
|
+
# @see https://www.voog.com/developers/api/resources/redirect_rules#get_redirect_rules
|
11
|
+
def redirect_rules(params = {})
|
12
|
+
paginate 'redirect_rules', {query: params}
|
13
|
+
end
|
14
|
+
|
15
|
+
# Get a single redirect_rule
|
16
|
+
#
|
17
|
+
# @see https://www.voog.com/developers/api/resources/redirect_rules#get_redirect_rule
|
18
|
+
def redirect_rule(id, params = {})
|
19
|
+
get "redirect_rules/#{id}", {query: params}
|
20
|
+
end
|
21
|
+
|
22
|
+
# Create a new redirect_rule
|
23
|
+
#
|
24
|
+
# @see https://www.voog.com/developers/api/resources/redirect_rules#create_redirect_rules
|
25
|
+
def create_redirect_rule(data)
|
26
|
+
post 'redirect_rules', data
|
27
|
+
end
|
28
|
+
|
29
|
+
# Update a redirect_rule
|
30
|
+
#
|
31
|
+
# @see https://www.voog.com/developers/api/resources/redirect_rules#update_redirect_rule
|
32
|
+
def update_redirect_rule(id, data)
|
33
|
+
put "redirect_rules/#{id}", data
|
34
|
+
end
|
35
|
+
|
36
|
+
# Delete a redirect_rule
|
37
|
+
#
|
38
|
+
# @see https://www.voog.com/developers/api/resources/redirect_rules#delete_redirect_rule
|
39
|
+
def delete_redirect_rule(id)
|
40
|
+
delete "redirect_rules/#{id}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/voog_api/client.rb
CHANGED
@@ -5,6 +5,7 @@ require 'voog_api/error'
|
|
5
5
|
|
6
6
|
require 'voog_api/api/articles'
|
7
7
|
require 'voog_api/api/assets'
|
8
|
+
require 'voog_api/api/buy_buttons'
|
8
9
|
require 'voog_api/api/comments'
|
9
10
|
require 'voog_api/api/content_partials'
|
10
11
|
require 'voog_api/api/contents'
|
@@ -12,15 +13,17 @@ require 'voog_api/api/element_definitions'
|
|
12
13
|
require 'voog_api/api/elements'
|
13
14
|
require 'voog_api/api/forms'
|
14
15
|
require 'voog_api/api/languages'
|
15
|
-
require 'voog_api/api/layouts'
|
16
16
|
require 'voog_api/api/layout_assets'
|
17
|
+
require 'voog_api/api/layouts'
|
17
18
|
require 'voog_api/api/media_sets'
|
18
19
|
require 'voog_api/api/nodes'
|
19
|
-
require 'voog_api/api/site'
|
20
20
|
require 'voog_api/api/pages'
|
21
21
|
require 'voog_api/api/people'
|
22
|
+
require 'voog_api/api/product_widgets'
|
23
|
+
require 'voog_api/api/redirect_rules'
|
22
24
|
require 'voog_api/api/search'
|
23
25
|
require 'voog_api/api/site_users'
|
26
|
+
require 'voog_api/api/site'
|
24
27
|
require 'voog_api/api/tags'
|
25
28
|
require 'voog_api/api/texts'
|
26
29
|
require 'voog_api/api/tickets'
|
@@ -36,6 +39,7 @@ module Voog
|
|
36
39
|
|
37
40
|
include Voog::API::Articles
|
38
41
|
include Voog::API::Assets
|
42
|
+
include Voog::API::BuyButtons
|
39
43
|
include Voog::API::Comments
|
40
44
|
include Voog::API::ContentPartials
|
41
45
|
include Voog::API::Contents
|
@@ -43,12 +47,14 @@ module Voog
|
|
43
47
|
include Voog::API::Elements
|
44
48
|
include Voog::API::Forms
|
45
49
|
include Voog::API::Languages
|
46
|
-
include Voog::API::Layouts
|
47
50
|
include Voog::API::LayoutAssets
|
51
|
+
include Voog::API::Layouts
|
48
52
|
include Voog::API::MediaSets
|
49
53
|
include Voog::API::Nodes
|
50
54
|
include Voog::API::Pages
|
51
55
|
include Voog::API::People
|
56
|
+
include Voog::API::ProductWidgets
|
57
|
+
include Voog::API::RedirectRules
|
52
58
|
include Voog::API::Search
|
53
59
|
include Voog::API::Site
|
54
60
|
include Voog::API::SiteUsers
|
@@ -81,7 +87,7 @@ module Voog
|
|
81
87
|
def get(url, options = {})
|
82
88
|
request :get, url, nil, options
|
83
89
|
end
|
84
|
-
|
90
|
+
|
85
91
|
def post(url, data, options = {})
|
86
92
|
request :post, url, data, options
|
87
93
|
end
|
@@ -101,7 +107,7 @@ module Voog
|
|
101
107
|
def head(url, options = {})
|
102
108
|
request :head, url, nil, options
|
103
109
|
end
|
104
|
-
|
110
|
+
|
105
111
|
def api_endpoint
|
106
112
|
"#{host_with_protocol}/admin/api".freeze
|
107
113
|
end
|
@@ -109,7 +115,7 @@ module Voog
|
|
109
115
|
def host_with_protocol
|
110
116
|
"#{protocol}://#{host}".freeze
|
111
117
|
end
|
112
|
-
|
118
|
+
|
113
119
|
def agent
|
114
120
|
@agent ||= Sawyer::Agent.new(api_endpoint, sawyer_options) do |http|
|
115
121
|
http.headers[:content_type] = 'application/json'
|
@@ -129,7 +135,7 @@ module Voog
|
|
129
135
|
faraday.headers[:user_agent] = 'Voog.rb Ruby wrapper'
|
130
136
|
end
|
131
137
|
end
|
132
|
-
|
138
|
+
|
133
139
|
def last_response
|
134
140
|
@last_response
|
135
141
|
end
|
@@ -162,16 +168,16 @@ module Voog
|
|
162
168
|
end
|
163
169
|
|
164
170
|
data
|
165
|
-
|
171
|
+
end
|
166
172
|
|
167
173
|
private
|
168
|
-
|
174
|
+
|
169
175
|
def request(method, path, data, options = {})
|
170
176
|
multipart = options.fetch(:multipart, false) && (method == :post)
|
171
177
|
|
172
178
|
@last_response = response = multipart ? \
|
173
179
|
multipart_agent.post("#{api_endpoint}/#{path}", data) : \
|
174
|
-
agent.call(method, URI.
|
180
|
+
agent.call(method, URI.parse(path.to_s), data, options.dup)
|
175
181
|
|
176
182
|
raise Voog::MovedPermanently.new(response, host_with_protocol) if response.status == 301
|
177
183
|
|
data/lib/voog_api/version.rb
CHANGED
@@ -0,0 +1,38 @@
|
|
1
|
+
{
|
2
|
+
"id": 2,
|
3
|
+
"created_at": "2023-11-17T12:56:36.000Z",
|
4
|
+
"updated_at": "2023-11-17T12:56:36.000Z",
|
5
|
+
"settings": {
|
6
|
+
"title": "Add to cart",
|
7
|
+
"button_style": "with_price"
|
8
|
+
},
|
9
|
+
"url": "http://voog.test/admin/api/buy_buttons/2",
|
10
|
+
"content": {
|
11
|
+
"id": 2,
|
12
|
+
"name": "body",
|
13
|
+
"created_at": "2023-11-17T12:56:36.000Z",
|
14
|
+
"updated_at": "2023-11-17T12:56:36.000Z",
|
15
|
+
"position": 1,
|
16
|
+
"url": "http://voog.test/admin/api/pages/1/contents/2"
|
17
|
+
},
|
18
|
+
"parent": {
|
19
|
+
"id": 1,
|
20
|
+
"title": "Home",
|
21
|
+
"created_at": "2023-11-17T12:55:36.000Z",
|
22
|
+
"updated_at": "2023-11-17T12:55:36.000Z",
|
23
|
+
"type": "page",
|
24
|
+
"url": "http://voog.test/admin/api/pages/1"
|
25
|
+
},
|
26
|
+
"product": {
|
27
|
+
"id": 1,
|
28
|
+
"name": "Product",
|
29
|
+
"price": "100.0",
|
30
|
+
"status": "live",
|
31
|
+
"created_at": "2023-11-17T12:55:36.000Z",
|
32
|
+
"updated_at": "2023-11-17T12:55:36.000Z",
|
33
|
+
"sku": "product-sku",
|
34
|
+
"uses_variants": false,
|
35
|
+
"tax_rate": "20.0",
|
36
|
+
"in_stock": true
|
37
|
+
}
|
38
|
+
}
|
@@ -0,0 +1,78 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"id": 1,
|
4
|
+
"created_at": "2023-11-17T12:55:36.000Z",
|
5
|
+
"updated_at": "2023-11-17T12:55:36.000Z",
|
6
|
+
"settings": {
|
7
|
+
"title": "Add to cart",
|
8
|
+
"button_style": "with_price"
|
9
|
+
},
|
10
|
+
"url": "http://voog.test/admin/api/buy_buttons/1",
|
11
|
+
"content": {
|
12
|
+
"id": 1,
|
13
|
+
"name": "body",
|
14
|
+
"created_at": "2023-11-17T12:55:36.000Z",
|
15
|
+
"updated_at": "2023-11-17T12:55:36.000Z",
|
16
|
+
"position": 1,
|
17
|
+
"url": "http://voog.test/admin/api/pages/1/contents/1"
|
18
|
+
},
|
19
|
+
"parent": {
|
20
|
+
"id": 1,
|
21
|
+
"title": "Home",
|
22
|
+
"created_at": "2023-11-17T12:55:36.000Z",
|
23
|
+
"updated_at": "2023-11-17T12:55:36.000Z",
|
24
|
+
"type": "page",
|
25
|
+
"url": "http://voog.test/admin/api/pages/1"
|
26
|
+
},
|
27
|
+
"product": {
|
28
|
+
"id": 1,
|
29
|
+
"name": "Product",
|
30
|
+
"price": "100.0",
|
31
|
+
"status": "live",
|
32
|
+
"created_at": "2023-11-17T12:55:36.000Z",
|
33
|
+
"updated_at": "2023-11-17T12:55:36.000Z",
|
34
|
+
"sku": "product-sku",
|
35
|
+
"uses_variants": false,
|
36
|
+
"tax_rate": "20.0",
|
37
|
+
"in_stock": true
|
38
|
+
}
|
39
|
+
},
|
40
|
+
{
|
41
|
+
"id": 2,
|
42
|
+
"created_at": "2023-11-17T12:56:36.000Z",
|
43
|
+
"updated_at": "2023-11-17T12:56:36.000Z",
|
44
|
+
"settings": {
|
45
|
+
"title": "Add to cart",
|
46
|
+
"button_style": "with_price"
|
47
|
+
},
|
48
|
+
"url": "http://voog.test/admin/api/buy_buttons/2",
|
49
|
+
"content": {
|
50
|
+
"id": 2,
|
51
|
+
"name": "body",
|
52
|
+
"created_at": "2023-11-17T12:56:36.000Z",
|
53
|
+
"updated_at": "2023-11-17T12:56:36.000Z",
|
54
|
+
"position": 1,
|
55
|
+
"url": "http://voog.test/admin/api/pages/1/contents/2"
|
56
|
+
},
|
57
|
+
"parent": {
|
58
|
+
"id": 1,
|
59
|
+
"title": "Home",
|
60
|
+
"created_at": "2023-11-17T12:55:36.000Z",
|
61
|
+
"updated_at": "2023-11-17T12:55:36.000Z",
|
62
|
+
"type": "page",
|
63
|
+
"url": "http://voog.test/admin/api/pages/1"
|
64
|
+
},
|
65
|
+
"product": {
|
66
|
+
"id": 1,
|
67
|
+
"name": "Product",
|
68
|
+
"price": "100.0",
|
69
|
+
"status": "live",
|
70
|
+
"created_at": "2023-11-17T12:55:36.000Z",
|
71
|
+
"updated_at": "2023-11-17T12:55:36.000Z",
|
72
|
+
"sku": "product-sku",
|
73
|
+
"uses_variants": false,
|
74
|
+
"tax_rate": "20.0",
|
75
|
+
"in_stock": true
|
76
|
+
}
|
77
|
+
}
|
78
|
+
]
|
@@ -0,0 +1,41 @@
|
|
1
|
+
{
|
2
|
+
"id": 2,
|
3
|
+
"created_at": "2023-11-17T13:26:47.000Z",
|
4
|
+
"updated_at": "2023-11-17T13:26:47.000Z",
|
5
|
+
"content_settings": {
|
6
|
+
"category_ids": [],
|
7
|
+
"sort_order": "created_at-desc"
|
8
|
+
},
|
9
|
+
"design_settings": {
|
10
|
+
"layout": "grid",
|
11
|
+
"columns": 3,
|
12
|
+
"item_width": 300,
|
13
|
+
"item_height": 600,
|
14
|
+
"mask_content_overflow": true,
|
15
|
+
"show_navigation_buttons": true,
|
16
|
+
"mobile_columns": 2,
|
17
|
+
"show_cart_button": true,
|
18
|
+
"show_price": true,
|
19
|
+
"show_product_filters": true,
|
20
|
+
"product_count": 56,
|
21
|
+
"show_discount_label": false,
|
22
|
+
"show_discount_percentage": false
|
23
|
+
},
|
24
|
+
"url": "http://voog.test/admin/api/product_widgets/2",
|
25
|
+
"content": {
|
26
|
+
"id": 2,
|
27
|
+
"name": "body",
|
28
|
+
"created_at": "2023-11-17T12:56:36.000Z",
|
29
|
+
"updated_at": "2023-11-17T12:56:36.000Z",
|
30
|
+
"position": 1,
|
31
|
+
"url": "http://voog.test/admin/api/pages/1/contents/2"
|
32
|
+
},
|
33
|
+
"parent": {
|
34
|
+
"id": 1,
|
35
|
+
"title": "Home",
|
36
|
+
"created_at": "2023-11-17T12:55:36.000Z",
|
37
|
+
"updated_at": "2023-11-17T12:55:36.000Z",
|
38
|
+
"type": "page",
|
39
|
+
"url": "http://voog.test/admin/api/pages/1"
|
40
|
+
}
|
41
|
+
}
|
@@ -0,0 +1,84 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"id": 1,
|
4
|
+
"created_at": "2023-11-17T13:25:47.000Z",
|
5
|
+
"updated_at": "2023-11-17T13:25:47.000Z",
|
6
|
+
"content_settings": {
|
7
|
+
"category_ids": [],
|
8
|
+
"sort_order": "created_at-desc"
|
9
|
+
},
|
10
|
+
"design_settings": {
|
11
|
+
"layout": "grid",
|
12
|
+
"columns": 3,
|
13
|
+
"item_width": 300,
|
14
|
+
"item_height": 600,
|
15
|
+
"mask_content_overflow": true,
|
16
|
+
"show_navigation_buttons": true,
|
17
|
+
"mobile_columns": 2,
|
18
|
+
"show_cart_button": true,
|
19
|
+
"show_price": true,
|
20
|
+
"show_product_filters": true,
|
21
|
+
"product_count": 56,
|
22
|
+
"show_discount_label": false,
|
23
|
+
"show_discount_percentage": false
|
24
|
+
},
|
25
|
+
"url": "http://voog.test/admin/api/product_widgets/1",
|
26
|
+
"content": {
|
27
|
+
"id": 1,
|
28
|
+
"name": "body",
|
29
|
+
"created_at": "2023-11-17T12:55:36.000Z",
|
30
|
+
"updated_at": "2023-11-17T12:55:36.000Z",
|
31
|
+
"position": 1,
|
32
|
+
"url": "http://voog.test/admin/api/pages/1/contents/1"
|
33
|
+
},
|
34
|
+
"parent": {
|
35
|
+
"id": 1,
|
36
|
+
"title": "Home",
|
37
|
+
"created_at": "2023-11-17T12:55:36.000Z",
|
38
|
+
"updated_at": "2023-11-17T12:55:36.000Z",
|
39
|
+
"type": "page",
|
40
|
+
"url": "http://voog.test/admin/api/pages/1"
|
41
|
+
}
|
42
|
+
},
|
43
|
+
{
|
44
|
+
"id": 2,
|
45
|
+
"created_at": "2023-11-17T13:26:47.000Z",
|
46
|
+
"updated_at": "2023-11-17T13:26:47.000Z",
|
47
|
+
"content_settings": {
|
48
|
+
"category_ids": [],
|
49
|
+
"sort_order": "created_at-desc"
|
50
|
+
},
|
51
|
+
"design_settings": {
|
52
|
+
"layout": "grid",
|
53
|
+
"columns": 3,
|
54
|
+
"item_width": 300,
|
55
|
+
"item_height": 600,
|
56
|
+
"mask_content_overflow": true,
|
57
|
+
"show_navigation_buttons": true,
|
58
|
+
"mobile_columns": 2,
|
59
|
+
"show_cart_button": true,
|
60
|
+
"show_price": true,
|
61
|
+
"show_product_filters": true,
|
62
|
+
"product_count": 56,
|
63
|
+
"show_discount_label": false,
|
64
|
+
"show_discount_percentage": false
|
65
|
+
},
|
66
|
+
"url": "http://voog.test/admin/api/product_widgets/2",
|
67
|
+
"content": {
|
68
|
+
"id": 2,
|
69
|
+
"name": "body",
|
70
|
+
"created_at": "2023-11-17T12:56:36.000Z",
|
71
|
+
"updated_at": "2023-11-17T12:56:36.000Z",
|
72
|
+
"position": 1,
|
73
|
+
"url": "http://voog.test/admin/api/pages/1/contents/2"
|
74
|
+
},
|
75
|
+
"parent": {
|
76
|
+
"id": 1,
|
77
|
+
"title": "Home",
|
78
|
+
"created_at": "2023-11-17T12:55:36.000Z",
|
79
|
+
"updated_at": "2023-11-17T12:55:36.000Z",
|
80
|
+
"type": "page",
|
81
|
+
"url": "http://voog.test/admin/api/pages/1"
|
82
|
+
}
|
83
|
+
}
|
84
|
+
]
|
@@ -0,0 +1,12 @@
|
|
1
|
+
{
|
2
|
+
"id": 2,
|
3
|
+
"active": true,
|
4
|
+
"regexp": false,
|
5
|
+
"source": "/other-page",
|
6
|
+
"destination": "/new-other-page",
|
7
|
+
"redirect_type": 301,
|
8
|
+
"complexity": 1005,
|
9
|
+
"created_at": "2023-11-24T10:23:49.000Z",
|
10
|
+
"updated_at": "2023-11-24T10:23:49.000Z",
|
11
|
+
"url": "http://voog.test/admin/api/redirect_rules/2"
|
12
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"id": 1,
|
4
|
+
"active": true,
|
5
|
+
"regexp": false,
|
6
|
+
"source": "/page",
|
7
|
+
"destination": "/new-page",
|
8
|
+
"redirect_type": 301,
|
9
|
+
"complexity": 1005,
|
10
|
+
"created_at": "2023-11-24T10:23:04.000Z",
|
11
|
+
"updated_at": "2023-11-24T10:23:04.000Z",
|
12
|
+
"url": "http://voog.test/admin/api/redirect_rules/1"
|
13
|
+
},
|
14
|
+
{
|
15
|
+
"id": 2,
|
16
|
+
"active": true,
|
17
|
+
"regexp": false,
|
18
|
+
"source": "/other-page",
|
19
|
+
"destination": "/new-other-page",
|
20
|
+
"redirect_type": 301,
|
21
|
+
"complexity": 1005,
|
22
|
+
"created_at": "2023-11-24T10:23:49.000Z",
|
23
|
+
"updated_at": "2023-11-24T10:23:49.000Z",
|
24
|
+
"url": "http://voog.test/admin/api/redirect_rules/2"
|
25
|
+
}
|
26
|
+
]
|
data/spec/spec_helper.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
require 'voog_api'
|
2
2
|
require 'webmock/rspec'
|
3
|
+
require 'pathname'
|
3
4
|
|
4
5
|
WebMock.disable_net_connect!
|
5
6
|
|
6
7
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
8
|
RSpec.configure do |config|
|
8
|
-
|
9
|
+
|
9
10
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
10
11
|
config.run_all_when_everything_filtered = true
|
11
12
|
config.filter_run :focus
|
@@ -30,14 +31,16 @@ def fixture(file)
|
|
30
31
|
end
|
31
32
|
|
32
33
|
def request_fixture(method, path, options = {})
|
33
|
-
request =
|
34
|
-
headers: {
|
35
|
-
|
36
|
-
|
34
|
+
request = {
|
35
|
+
headers: {
|
36
|
+
'X-API-TOKEN' => 'afcf30182aecfc8155d390d7d4552d14'
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
37
40
|
response = ({headers: {'Content-Type' => 'application/json'}}).tap { |response|
|
38
41
|
response[:body] = fixture(options[:fixture]) if options.has_key?(:fixture)
|
39
42
|
}.merge(options.fetch(:response, {}))
|
40
|
-
|
43
|
+
|
41
44
|
stub_request(method, voog_url(path)).with(request).to_return(response)
|
42
45
|
end
|
43
46
|
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Voog::API::BuyButtons do
|
4
|
+
let(:client) { voog_client }
|
5
|
+
|
6
|
+
describe '#buy_buttons' do
|
7
|
+
before do
|
8
|
+
request_fixture(:get, 'buy_buttons', fixture: 'buy_buttons/buy_buttons')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'returns a list of buy_buttons' do
|
12
|
+
expect(client.buy_buttons.length).to eql(2)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#buy_button' do
|
17
|
+
before do
|
18
|
+
request_fixture(:get, 'buy_buttons/2', fixture: 'buy_buttons/buy_button')
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'returns a single buy_button' do
|
22
|
+
expect(client.buy_button(2).settings.title).to eq('Add to cart')
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'returns a buy_button with the same id as in the request' do
|
26
|
+
expect(client.buy_button(2).id).to eq(2)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#update_buy_button' do
|
31
|
+
let(:new_title) { 'New title' }
|
32
|
+
|
33
|
+
before do
|
34
|
+
request_fixture(
|
35
|
+
:put,
|
36
|
+
'buy_buttons/2',
|
37
|
+
request: {
|
38
|
+
body: {
|
39
|
+
settings: {
|
40
|
+
title: new_title
|
41
|
+
}
|
42
|
+
}
|
43
|
+
},
|
44
|
+
response: {
|
45
|
+
body: "{\"id\": 2, \"settings\": {\"title\": \"#{new_title}\"}}"
|
46
|
+
}
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'responds with new title' do
|
51
|
+
expect(
|
52
|
+
client.update_buy_button(2, settings: {title: new_title}).settings.title
|
53
|
+
).to eq(new_title)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Voog::API::ProductWidgets do
|
4
|
+
let(:client) { voog_client }
|
5
|
+
|
6
|
+
describe '#product_widgets' do
|
7
|
+
before do
|
8
|
+
request_fixture(:get, 'product_widgets', fixture: 'product_widgets/product_widgets')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'returns a list of product_widgets' do
|
12
|
+
expect(client.product_widgets.length).to eql(2)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#product_widget' do
|
17
|
+
before do
|
18
|
+
request_fixture(:get, 'product_widgets/2', fixture: 'product_widgets/product_widget')
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'returns a single product_widget' do
|
22
|
+
expect(client.product_widget(2).design_settings.layout).to eq('grid')
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'returns a product_widget with the same id as in the request' do
|
26
|
+
expect(client.product_widget(2).id).to eq(2)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#update_product_widget' do
|
31
|
+
let(:new_layout) { 'list' }
|
32
|
+
|
33
|
+
before do
|
34
|
+
request_fixture(
|
35
|
+
:put,
|
36
|
+
'product_widgets/2',
|
37
|
+
request: {
|
38
|
+
body: {
|
39
|
+
design_settings: {
|
40
|
+
layout: new_layout
|
41
|
+
}
|
42
|
+
}
|
43
|
+
},
|
44
|
+
response: {
|
45
|
+
body: "{\"id\": 2, \"design_settings\": {\"layout\": \"#{new_layout}\"}}"
|
46
|
+
}
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'responds with new layout' do
|
51
|
+
expect(
|
52
|
+
client.update_product_widget(2, design_settings: {layout: new_layout}).design_settings.layout
|
53
|
+
).to eq(new_layout)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Voog::API::RedirectRules do
|
4
|
+
|
5
|
+
let(:client) { voog_client }
|
6
|
+
|
7
|
+
describe '#redirect_rules' do
|
8
|
+
before do
|
9
|
+
request_fixture(:get, 'redirect_rules', fixture: 'redirect_rules/redirect_rules')
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'returns a list of redirect_rules' do
|
13
|
+
expect(client.redirect_rules.length).to eql(2)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#redirect_rule' do
|
18
|
+
before do
|
19
|
+
request_fixture(:get, 'redirect_rules/2', fixture: 'redirect_rules/redirect_rule')
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'returns a single redirect_rule' do
|
23
|
+
expect(client.redirect_rule(2).source).to eq('/other-page')
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'returns a redirect_rule with the same id as in the request' do
|
27
|
+
expect(client.redirect_rule(2).id).to eq(2)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#delete_redirect_rule' do
|
32
|
+
before do
|
33
|
+
request_fixture(:delete, 'redirect_rules/2')
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'calls delete method on redirect_rule' do
|
37
|
+
client.delete_redirect_rule(2)
|
38
|
+
|
39
|
+
assert_requested :delete, 'http://voog.test/admin/api/redirect_rules/2'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '#update_redirect_rule' do
|
44
|
+
let(:new_source) { '/new-source' }
|
45
|
+
before do
|
46
|
+
request_fixture(
|
47
|
+
:put,
|
48
|
+
'redirect_rules/2',
|
49
|
+
request: {
|
50
|
+
body: {source: new_source}
|
51
|
+
},
|
52
|
+
response: {
|
53
|
+
body: "{\"id\": 2, \"source\": \"#{new_source}\"}"
|
54
|
+
}
|
55
|
+
)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'responds with new source' do
|
59
|
+
expect(client.update_redirect_rule(2, source: new_source).source).to eq(new_source)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -6,7 +6,7 @@ describe Voog::API::Search do
|
|
6
6
|
|
7
7
|
describe '#people' do
|
8
8
|
before do
|
9
|
-
request_fixture(:get, 'search', request: {q: 'any kind of content'}, fixture: 'search/search')
|
9
|
+
request_fixture(:get, 'search', request: {query: {q: 'any kind of content'}}, fixture: 'search/search')
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'returns a list of search results' do
|
data/voog_api.gemspec
CHANGED
@@ -17,12 +17,10 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ['lib']
|
19
19
|
|
20
|
-
spec.add_development_dependency 'bundler', '~> 1.3'
|
21
20
|
spec.add_development_dependency 'guard-rspec', '~> 4.2.0'
|
22
|
-
spec.add_development_dependency 'rspec', '~>
|
23
|
-
spec.add_development_dependency 'webmock', '
|
21
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
22
|
+
spec.add_development_dependency 'webmock', '~> 3.18'
|
24
23
|
spec.add_development_dependency 'rake'
|
25
|
-
spec.add_development_dependency 'listen', '~> 3.0.8'
|
26
24
|
|
27
|
-
spec.add_dependency 'sawyer', '~> 0.
|
25
|
+
spec.add_dependency 'sawyer', '~> 0.9'
|
28
26
|
end
|
metadata
CHANGED
@@ -1,31 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: voog_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Priit Haamer
|
8
8
|
- Mikk Pristavka
|
9
9
|
- Tanel Jakobsoo
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2023-12-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: bundler
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
requirements:
|
19
|
-
- - "~>"
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '1.3'
|
22
|
-
type: :development
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
requirements:
|
26
|
-
- - "~>"
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
version: '1.3'
|
29
15
|
- !ruby/object:Gem::Dependency
|
30
16
|
name: guard-rspec
|
31
17
|
requirement: !ruby/object:Gem::Requirement
|
@@ -46,28 +32,28 @@ dependencies:
|
|
46
32
|
requirements:
|
47
33
|
- - "~>"
|
48
34
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
35
|
+
version: '3.0'
|
50
36
|
type: :development
|
51
37
|
prerelease: false
|
52
38
|
version_requirements: !ruby/object:Gem::Requirement
|
53
39
|
requirements:
|
54
40
|
- - "~>"
|
55
41
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
42
|
+
version: '3.0'
|
57
43
|
- !ruby/object:Gem::Dependency
|
58
44
|
name: webmock
|
59
45
|
requirement: !ruby/object:Gem::Requirement
|
60
46
|
requirements:
|
61
|
-
- -
|
47
|
+
- - "~>"
|
62
48
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
49
|
+
version: '3.18'
|
64
50
|
type: :development
|
65
51
|
prerelease: false
|
66
52
|
version_requirements: !ruby/object:Gem::Requirement
|
67
53
|
requirements:
|
68
|
-
- -
|
54
|
+
- - "~>"
|
69
55
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
56
|
+
version: '3.18'
|
71
57
|
- !ruby/object:Gem::Dependency
|
72
58
|
name: rake
|
73
59
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,34 +68,20 @@ dependencies:
|
|
82
68
|
- - ">="
|
83
69
|
- !ruby/object:Gem::Version
|
84
70
|
version: '0'
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: listen
|
87
|
-
requirement: !ruby/object:Gem::Requirement
|
88
|
-
requirements:
|
89
|
-
- - "~>"
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
version: 3.0.8
|
92
|
-
type: :development
|
93
|
-
prerelease: false
|
94
|
-
version_requirements: !ruby/object:Gem::Requirement
|
95
|
-
requirements:
|
96
|
-
- - "~>"
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: 3.0.8
|
99
71
|
- !ruby/object:Gem::Dependency
|
100
72
|
name: sawyer
|
101
73
|
requirement: !ruby/object:Gem::Requirement
|
102
74
|
requirements:
|
103
75
|
- - "~>"
|
104
76
|
- !ruby/object:Gem::Version
|
105
|
-
version: 0.
|
77
|
+
version: '0.9'
|
106
78
|
type: :runtime
|
107
79
|
prerelease: false
|
108
80
|
version_requirements: !ruby/object:Gem::Requirement
|
109
81
|
requirements:
|
110
82
|
- - "~>"
|
111
83
|
- !ruby/object:Gem::Version
|
112
|
-
version: 0.
|
84
|
+
version: '0.9'
|
113
85
|
description: Best API wrapper for the best website builder
|
114
86
|
email:
|
115
87
|
- priit@edicy.com
|
@@ -129,6 +101,7 @@ files:
|
|
129
101
|
- lib/voog_api.rb
|
130
102
|
- lib/voog_api/api/articles.rb
|
131
103
|
- lib/voog_api/api/assets.rb
|
104
|
+
- lib/voog_api/api/buy_buttons.rb
|
132
105
|
- lib/voog_api/api/comments.rb
|
133
106
|
- lib/voog_api/api/content_partials.rb
|
134
107
|
- lib/voog_api/api/contents.rb
|
@@ -142,6 +115,8 @@ files:
|
|
142
115
|
- lib/voog_api/api/nodes.rb
|
143
116
|
- lib/voog_api/api/pages.rb
|
144
117
|
- lib/voog_api/api/people.rb
|
118
|
+
- lib/voog_api/api/product_widgets.rb
|
119
|
+
- lib/voog_api/api/redirect_rules.rb
|
145
120
|
- lib/voog_api/api/search.rb
|
146
121
|
- lib/voog_api/api/site.rb
|
147
122
|
- lib/voog_api/api/site_users.rb
|
@@ -155,6 +130,8 @@ files:
|
|
155
130
|
- spec/fixtures/articles/articles.json
|
156
131
|
- spec/fixtures/assets/asset.json
|
157
132
|
- spec/fixtures/assets/assets.json
|
133
|
+
- spec/fixtures/buy_buttons/buy_button.json
|
134
|
+
- spec/fixtures/buy_buttons/buy_buttons.json
|
158
135
|
- spec/fixtures/comments/comment.json
|
159
136
|
- spec/fixtures/comments/comments.json
|
160
137
|
- spec/fixtures/content_partials/content_partial.json
|
@@ -181,6 +158,10 @@ files:
|
|
181
158
|
- spec/fixtures/pages/pages.json
|
182
159
|
- spec/fixtures/people/people.json
|
183
160
|
- spec/fixtures/people/person.json
|
161
|
+
- spec/fixtures/product_widgets/product_widget.json
|
162
|
+
- spec/fixtures/product_widgets/product_widgets.json
|
163
|
+
- spec/fixtures/redirect_rules/redirect_rule.json
|
164
|
+
- spec/fixtures/redirect_rules/redirect_rules.json
|
184
165
|
- spec/fixtures/search/search.json
|
185
166
|
- spec/fixtures/site/site.json
|
186
167
|
- spec/fixtures/site_users/site_user.json
|
@@ -194,6 +175,7 @@ files:
|
|
194
175
|
- spec/spec_helper.rb
|
195
176
|
- spec/voog_api/api/articles_spec.rb
|
196
177
|
- spec/voog_api/api/assets_spec.rb
|
178
|
+
- spec/voog_api/api/buy_buttons_spec.rb
|
197
179
|
- spec/voog_api/api/comments_spec.rb
|
198
180
|
- spec/voog_api/api/content_partials_spec.rb
|
199
181
|
- spec/voog_api/api/contents_spec.rb
|
@@ -207,6 +189,8 @@ files:
|
|
207
189
|
- spec/voog_api/api/nodes_spec.rb
|
208
190
|
- spec/voog_api/api/pages_spec.rb
|
209
191
|
- spec/voog_api/api/people_spec.rb
|
192
|
+
- spec/voog_api/api/product_widgets_spec.rb
|
193
|
+
- spec/voog_api/api/redirect_rules_spec.rb
|
210
194
|
- spec/voog_api/api/search_spec.rb
|
211
195
|
- spec/voog_api/api/site_spec.rb
|
212
196
|
- spec/voog_api/api/site_users_spec.rb
|
@@ -219,7 +203,7 @@ homepage: https://github.com/Edicy/voog.rb
|
|
219
203
|
licenses:
|
220
204
|
- MIT
|
221
205
|
metadata: {}
|
222
|
-
post_install_message:
|
206
|
+
post_install_message:
|
223
207
|
rdoc_options: []
|
224
208
|
require_paths:
|
225
209
|
- lib
|
@@ -234,9 +218,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
234
218
|
- !ruby/object:Gem::Version
|
235
219
|
version: '0'
|
236
220
|
requirements: []
|
237
|
-
|
238
|
-
|
239
|
-
signing_key:
|
221
|
+
rubygems_version: 3.4.10
|
222
|
+
signing_key:
|
240
223
|
specification_version: 4
|
241
224
|
summary: Ruby toolkit for the Voog API
|
242
225
|
test_files:
|
@@ -244,6 +227,8 @@ test_files:
|
|
244
227
|
- spec/fixtures/articles/articles.json
|
245
228
|
- spec/fixtures/assets/asset.json
|
246
229
|
- spec/fixtures/assets/assets.json
|
230
|
+
- spec/fixtures/buy_buttons/buy_button.json
|
231
|
+
- spec/fixtures/buy_buttons/buy_buttons.json
|
247
232
|
- spec/fixtures/comments/comment.json
|
248
233
|
- spec/fixtures/comments/comments.json
|
249
234
|
- spec/fixtures/content_partials/content_partial.json
|
@@ -270,6 +255,10 @@ test_files:
|
|
270
255
|
- spec/fixtures/pages/pages.json
|
271
256
|
- spec/fixtures/people/people.json
|
272
257
|
- spec/fixtures/people/person.json
|
258
|
+
- spec/fixtures/product_widgets/product_widget.json
|
259
|
+
- spec/fixtures/product_widgets/product_widgets.json
|
260
|
+
- spec/fixtures/redirect_rules/redirect_rule.json
|
261
|
+
- spec/fixtures/redirect_rules/redirect_rules.json
|
273
262
|
- spec/fixtures/search/search.json
|
274
263
|
- spec/fixtures/site/site.json
|
275
264
|
- spec/fixtures/site_users/site_user.json
|
@@ -283,6 +272,7 @@ test_files:
|
|
283
272
|
- spec/spec_helper.rb
|
284
273
|
- spec/voog_api/api/articles_spec.rb
|
285
274
|
- spec/voog_api/api/assets_spec.rb
|
275
|
+
- spec/voog_api/api/buy_buttons_spec.rb
|
286
276
|
- spec/voog_api/api/comments_spec.rb
|
287
277
|
- spec/voog_api/api/content_partials_spec.rb
|
288
278
|
- spec/voog_api/api/contents_spec.rb
|
@@ -296,6 +286,8 @@ test_files:
|
|
296
286
|
- spec/voog_api/api/nodes_spec.rb
|
297
287
|
- spec/voog_api/api/pages_spec.rb
|
298
288
|
- spec/voog_api/api/people_spec.rb
|
289
|
+
- spec/voog_api/api/product_widgets_spec.rb
|
290
|
+
- spec/voog_api/api/redirect_rules_spec.rb
|
299
291
|
- spec/voog_api/api/search_spec.rb
|
300
292
|
- spec/voog_api/api/site_spec.rb
|
301
293
|
- spec/voog_api/api/site_users_spec.rb
|
@@ -303,4 +295,3 @@ test_files:
|
|
303
295
|
- spec/voog_api/api/texts_spec.rb
|
304
296
|
- spec/voog_api/api/tickets_spec.rb
|
305
297
|
- spec/voog_spec.rb
|
306
|
-
has_rdoc:
|