voog_api 0.0.14 → 0.0.16

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e3dc505a9b81d3e316a84b4abe72d19ca9744407
4
- data.tar.gz: 7af8ecb40e67dfeafe30949e1c29b94aef159806
2
+ SHA256:
3
+ metadata.gz: a5de2b79ce80ba8056a366fe37a5f8117973519106101575cd040cc1a6c77c3f
4
+ data.tar.gz: 49e1dfe0187babf5a363bb90f488a6d73f8db7b70adba2e4cda1dde75ec95261
5
5
  SHA512:
6
- metadata.gz: 5584904e955fd63822c07959638359a360fb9374c89f72110c161b566114665d0a081dade94e74252dec6dc99198711f4b9ceb1436dc10ce1475eaa97f7e3bc7
7
- data.tar.gz: 80ad80b6de6d07331df0be0ab78988db8dfd491754f5a27ce8e2181dfbd6ef78056687a62245cff11cc5f49b9ce57dff18bd498adf151e1ec55d2071d90f2b1e
6
+ metadata.gz: 03bc3a3ebaa5db6d032f8e1fe75181565596bf6d3b82c59ac287c0b856db8a90a7c46d191c83554c10935233e31ef1b1441a49bd2f5414d15ed73fa273421257
7
+ data.tar.gz: 459805e39d563039c3be9ed7d2d66084c0f863643764bdc72700eb89aacc2041201817fda80b4c74fd99be79fb6c7f0a7693c2bf021936abe4f30d33b6aa880d
@@ -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
@@ -1,10 +1,16 @@
1
1
  require 'json'
2
2
  require 'sawyer'
3
+ require 'faraday'
4
+
5
+ if ::Gem::Requirement.new('>= 2.0').satisfied_by?(::Gem::Version.new(Faraday::VERSION))
6
+ require 'faraday/multipart'
7
+ end
3
8
 
4
9
  require 'voog_api/error'
5
10
 
6
11
  require 'voog_api/api/articles'
7
12
  require 'voog_api/api/assets'
13
+ require 'voog_api/api/buy_buttons'
8
14
  require 'voog_api/api/comments'
9
15
  require 'voog_api/api/content_partials'
10
16
  require 'voog_api/api/contents'
@@ -12,15 +18,17 @@ require 'voog_api/api/element_definitions'
12
18
  require 'voog_api/api/elements'
13
19
  require 'voog_api/api/forms'
14
20
  require 'voog_api/api/languages'
15
- require 'voog_api/api/layouts'
16
21
  require 'voog_api/api/layout_assets'
22
+ require 'voog_api/api/layouts'
17
23
  require 'voog_api/api/media_sets'
18
24
  require 'voog_api/api/nodes'
19
- require 'voog_api/api/site'
20
25
  require 'voog_api/api/pages'
21
26
  require 'voog_api/api/people'
27
+ require 'voog_api/api/product_widgets'
28
+ require 'voog_api/api/redirect_rules'
22
29
  require 'voog_api/api/search'
23
30
  require 'voog_api/api/site_users'
31
+ require 'voog_api/api/site'
24
32
  require 'voog_api/api/tags'
25
33
  require 'voog_api/api/texts'
26
34
  require 'voog_api/api/tickets'
@@ -36,6 +44,7 @@ module Voog
36
44
 
37
45
  include Voog::API::Articles
38
46
  include Voog::API::Assets
47
+ include Voog::API::BuyButtons
39
48
  include Voog::API::Comments
40
49
  include Voog::API::ContentPartials
41
50
  include Voog::API::Contents
@@ -43,12 +52,14 @@ module Voog
43
52
  include Voog::API::Elements
44
53
  include Voog::API::Forms
45
54
  include Voog::API::Languages
46
- include Voog::API::Layouts
47
55
  include Voog::API::LayoutAssets
56
+ include Voog::API::Layouts
48
57
  include Voog::API::MediaSets
49
58
  include Voog::API::Nodes
50
59
  include Voog::API::Pages
51
60
  include Voog::API::People
61
+ include Voog::API::ProductWidgets
62
+ include Voog::API::RedirectRules
52
63
  include Voog::API::Search
53
64
  include Voog::API::Site
54
65
  include Voog::API::SiteUsers
@@ -81,7 +92,7 @@ module Voog
81
92
  def get(url, options = {})
82
93
  request :get, url, nil, options
83
94
  end
84
-
95
+
85
96
  def post(url, data, options = {})
86
97
  request :post, url, data, options
87
98
  end
@@ -101,7 +112,7 @@ module Voog
101
112
  def head(url, options = {})
102
113
  request :head, url, nil, options
103
114
  end
104
-
115
+
105
116
  def api_endpoint
106
117
  "#{host_with_protocol}/admin/api".freeze
107
118
  end
@@ -109,7 +120,7 @@ module Voog
109
120
  def host_with_protocol
110
121
  "#{protocol}://#{host}".freeze
111
122
  end
112
-
123
+
113
124
  def agent
114
125
  @agent ||= Sawyer::Agent.new(api_endpoint, sawyer_options) do |http|
115
126
  http.headers[:content_type] = 'application/json'
@@ -129,7 +140,7 @@ module Voog
129
140
  faraday.headers[:user_agent] = 'Voog.rb Ruby wrapper'
130
141
  end
131
142
  end
132
-
143
+
133
144
  def last_response
134
145
  @last_response
135
146
  end
@@ -162,16 +173,16 @@ module Voog
162
173
  end
163
174
 
164
175
  data
165
- end
176
+ end
166
177
 
167
178
  private
168
-
179
+
169
180
  def request(method, path, data, options = {})
170
181
  multipart = options.fetch(:multipart, false) && (method == :post)
171
182
 
172
183
  @last_response = response = multipart ? \
173
184
  multipart_agent.post("#{api_endpoint}/#{path}", data) : \
174
- agent.call(method, URI.encode(path.to_s), data, options.dup)
185
+ agent.call(method, URI.parse(path.to_s), data, options.dup)
175
186
 
176
187
  raise Voog::MovedPermanently.new(response, host_with_protocol) if response.status == 301
177
188
 
@@ -1,3 +1,3 @@
1
1
  module Voog
2
- VERSION = '0.0.14'
2
+ VERSION = '0.0.16'
3
3
  end
@@ -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: {'X-API-TOKEN' => 'afcf30182aecfc8155d390d7d4552d14'}
35
- }).merge(options.fetch(:request, {}))
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
@@ -6,23 +6,23 @@ require 'voog_api/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'voog_api'
8
8
  spec.version = Voog::VERSION
9
- spec.authors = ['Priit Haamer', 'Mikk Pristavka', 'Tanel Jakobsoo']
10
- spec.email = ['priit@edicy.com', 'mikk@fraktal.ee', 'tanel@fraktal.ee']
9
+ spec.authors = ['Priit Haamer', 'Mikk Pristavka', 'Tanel Jakobsoo', 'Peeter Paal']
10
+ spec.email = ['priit@edicy.com', 'mikk@voog.com', 'tanel@voog.com', 'peeter@voog.com']
11
11
  spec.description = %q{Best API wrapper for the best website builder}
12
12
  spec.summary = %q{Ruby toolkit for the Voog API}
13
- spec.homepage = 'https://github.com/Edicy/voog.rb'
13
+ spec.homepage = 'https://github.com/Voog/voog.rb'
14
14
  spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
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', '~> 2.14.1'
23
- spec.add_development_dependency 'webmock', '1.16.0'
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.5.4'
25
+ spec.add_dependency 'sawyer', '~> 0.9'
26
+ spec.add_dependency 'faraday', '>= 0.9', '< 3'
27
+ spec.add_dependency 'faraday-multipart', '> 0' if RUBY_VERSION >= '2.4'
28
28
  end
metadata CHANGED
@@ -1,31 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voog_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Priit Haamer
8
8
  - Mikk Pristavka
9
9
  - Tanel Jakobsoo
10
- autorequire:
10
+ - Peeter Paal
11
+ autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2018-11-27 00:00:00.000000000 Z
14
+ date: 2023-12-20 00:00:00.000000000 Z
14
15
  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
16
  - !ruby/object:Gem::Dependency
30
17
  name: guard-rspec
31
18
  requirement: !ruby/object:Gem::Requirement
@@ -46,28 +33,28 @@ dependencies:
46
33
  requirements:
47
34
  - - "~>"
48
35
  - !ruby/object:Gem::Version
49
- version: 2.14.1
36
+ version: '3.0'
50
37
  type: :development
51
38
  prerelease: false
52
39
  version_requirements: !ruby/object:Gem::Requirement
53
40
  requirements:
54
41
  - - "~>"
55
42
  - !ruby/object:Gem::Version
56
- version: 2.14.1
43
+ version: '3.0'
57
44
  - !ruby/object:Gem::Dependency
58
45
  name: webmock
59
46
  requirement: !ruby/object:Gem::Requirement
60
47
  requirements:
61
- - - '='
48
+ - - "~>"
62
49
  - !ruby/object:Gem::Version
63
- version: 1.16.0
50
+ version: '3.18'
64
51
  type: :development
65
52
  prerelease: false
66
53
  version_requirements: !ruby/object:Gem::Requirement
67
54
  requirements:
68
- - - '='
55
+ - - "~>"
69
56
  - !ruby/object:Gem::Version
70
- version: 1.16.0
57
+ version: '3.18'
71
58
  - !ruby/object:Gem::Dependency
72
59
  name: rake
73
60
  requirement: !ruby/object:Gem::Requirement
@@ -83,38 +70,59 @@ dependencies:
83
70
  - !ruby/object:Gem::Version
84
71
  version: '0'
85
72
  - !ruby/object:Gem::Dependency
86
- name: listen
73
+ name: sawyer
87
74
  requirement: !ruby/object:Gem::Requirement
88
75
  requirements:
89
76
  - - "~>"
90
77
  - !ruby/object:Gem::Version
91
- version: 3.0.8
92
- type: :development
78
+ version: '0.9'
79
+ type: :runtime
93
80
  prerelease: false
94
81
  version_requirements: !ruby/object:Gem::Requirement
95
82
  requirements:
96
83
  - - "~>"
97
84
  - !ruby/object:Gem::Version
98
- version: 3.0.8
85
+ version: '0.9'
99
86
  - !ruby/object:Gem::Dependency
100
- name: sawyer
87
+ name: faraday
101
88
  requirement: !ruby/object:Gem::Requirement
102
89
  requirements:
103
- - - "~>"
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0.9'
93
+ - - "<"
104
94
  - !ruby/object:Gem::Version
105
- version: 0.5.4
95
+ version: '3'
106
96
  type: :runtime
107
97
  prerelease: false
108
98
  version_requirements: !ruby/object:Gem::Requirement
109
99
  requirements:
110
- - - "~>"
100
+ - - ">="
111
101
  - !ruby/object:Gem::Version
112
- version: 0.5.4
102
+ version: '0.9'
103
+ - - "<"
104
+ - !ruby/object:Gem::Version
105
+ version: '3'
106
+ - !ruby/object:Gem::Dependency
107
+ name: faraday-multipart
108
+ requirement: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">"
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ type: :runtime
114
+ prerelease: false
115
+ version_requirements: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">"
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
113
120
  description: Best API wrapper for the best website builder
114
121
  email:
115
122
  - priit@edicy.com
116
- - mikk@fraktal.ee
117
- - tanel@fraktal.ee
123
+ - mikk@voog.com
124
+ - tanel@voog.com
125
+ - peeter@voog.com
118
126
  executables: []
119
127
  extensions: []
120
128
  extra_rdoc_files: []
@@ -129,6 +137,7 @@ files:
129
137
  - lib/voog_api.rb
130
138
  - lib/voog_api/api/articles.rb
131
139
  - lib/voog_api/api/assets.rb
140
+ - lib/voog_api/api/buy_buttons.rb
132
141
  - lib/voog_api/api/comments.rb
133
142
  - lib/voog_api/api/content_partials.rb
134
143
  - lib/voog_api/api/contents.rb
@@ -142,6 +151,8 @@ files:
142
151
  - lib/voog_api/api/nodes.rb
143
152
  - lib/voog_api/api/pages.rb
144
153
  - lib/voog_api/api/people.rb
154
+ - lib/voog_api/api/product_widgets.rb
155
+ - lib/voog_api/api/redirect_rules.rb
145
156
  - lib/voog_api/api/search.rb
146
157
  - lib/voog_api/api/site.rb
147
158
  - lib/voog_api/api/site_users.rb
@@ -155,6 +166,8 @@ files:
155
166
  - spec/fixtures/articles/articles.json
156
167
  - spec/fixtures/assets/asset.json
157
168
  - spec/fixtures/assets/assets.json
169
+ - spec/fixtures/buy_buttons/buy_button.json
170
+ - spec/fixtures/buy_buttons/buy_buttons.json
158
171
  - spec/fixtures/comments/comment.json
159
172
  - spec/fixtures/comments/comments.json
160
173
  - spec/fixtures/content_partials/content_partial.json
@@ -181,6 +194,10 @@ files:
181
194
  - spec/fixtures/pages/pages.json
182
195
  - spec/fixtures/people/people.json
183
196
  - spec/fixtures/people/person.json
197
+ - spec/fixtures/product_widgets/product_widget.json
198
+ - spec/fixtures/product_widgets/product_widgets.json
199
+ - spec/fixtures/redirect_rules/redirect_rule.json
200
+ - spec/fixtures/redirect_rules/redirect_rules.json
184
201
  - spec/fixtures/search/search.json
185
202
  - spec/fixtures/site/site.json
186
203
  - spec/fixtures/site_users/site_user.json
@@ -194,6 +211,7 @@ files:
194
211
  - spec/spec_helper.rb
195
212
  - spec/voog_api/api/articles_spec.rb
196
213
  - spec/voog_api/api/assets_spec.rb
214
+ - spec/voog_api/api/buy_buttons_spec.rb
197
215
  - spec/voog_api/api/comments_spec.rb
198
216
  - spec/voog_api/api/content_partials_spec.rb
199
217
  - spec/voog_api/api/contents_spec.rb
@@ -207,6 +225,8 @@ files:
207
225
  - spec/voog_api/api/nodes_spec.rb
208
226
  - spec/voog_api/api/pages_spec.rb
209
227
  - spec/voog_api/api/people_spec.rb
228
+ - spec/voog_api/api/product_widgets_spec.rb
229
+ - spec/voog_api/api/redirect_rules_spec.rb
210
230
  - spec/voog_api/api/search_spec.rb
211
231
  - spec/voog_api/api/site_spec.rb
212
232
  - spec/voog_api/api/site_users_spec.rb
@@ -215,11 +235,11 @@ files:
215
235
  - spec/voog_api/api/tickets_spec.rb
216
236
  - spec/voog_spec.rb
217
237
  - voog_api.gemspec
218
- homepage: https://github.com/Edicy/voog.rb
238
+ homepage: https://github.com/Voog/voog.rb
219
239
  licenses:
220
240
  - MIT
221
241
  metadata: {}
222
- post_install_message:
242
+ post_install_message:
223
243
  rdoc_options: []
224
244
  require_paths:
225
245
  - lib
@@ -234,9 +254,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
234
254
  - !ruby/object:Gem::Version
235
255
  version: '0'
236
256
  requirements: []
237
- rubyforge_project:
238
- rubygems_version: 2.2.2
239
- signing_key:
257
+ rubygems_version: 3.4.10
258
+ signing_key:
240
259
  specification_version: 4
241
260
  summary: Ruby toolkit for the Voog API
242
261
  test_files:
@@ -244,6 +263,8 @@ test_files:
244
263
  - spec/fixtures/articles/articles.json
245
264
  - spec/fixtures/assets/asset.json
246
265
  - spec/fixtures/assets/assets.json
266
+ - spec/fixtures/buy_buttons/buy_button.json
267
+ - spec/fixtures/buy_buttons/buy_buttons.json
247
268
  - spec/fixtures/comments/comment.json
248
269
  - spec/fixtures/comments/comments.json
249
270
  - spec/fixtures/content_partials/content_partial.json
@@ -270,6 +291,10 @@ test_files:
270
291
  - spec/fixtures/pages/pages.json
271
292
  - spec/fixtures/people/people.json
272
293
  - spec/fixtures/people/person.json
294
+ - spec/fixtures/product_widgets/product_widget.json
295
+ - spec/fixtures/product_widgets/product_widgets.json
296
+ - spec/fixtures/redirect_rules/redirect_rule.json
297
+ - spec/fixtures/redirect_rules/redirect_rules.json
273
298
  - spec/fixtures/search/search.json
274
299
  - spec/fixtures/site/site.json
275
300
  - spec/fixtures/site_users/site_user.json
@@ -283,6 +308,7 @@ test_files:
283
308
  - spec/spec_helper.rb
284
309
  - spec/voog_api/api/articles_spec.rb
285
310
  - spec/voog_api/api/assets_spec.rb
311
+ - spec/voog_api/api/buy_buttons_spec.rb
286
312
  - spec/voog_api/api/comments_spec.rb
287
313
  - spec/voog_api/api/content_partials_spec.rb
288
314
  - spec/voog_api/api/contents_spec.rb
@@ -296,6 +322,8 @@ test_files:
296
322
  - spec/voog_api/api/nodes_spec.rb
297
323
  - spec/voog_api/api/pages_spec.rb
298
324
  - spec/voog_api/api/people_spec.rb
325
+ - spec/voog_api/api/product_widgets_spec.rb
326
+ - spec/voog_api/api/redirect_rules_spec.rb
299
327
  - spec/voog_api/api/search_spec.rb
300
328
  - spec/voog_api/api/site_spec.rb
301
329
  - spec/voog_api/api/site_users_spec.rb
@@ -303,4 +331,3 @@ test_files:
303
331
  - spec/voog_api/api/texts_spec.rb
304
332
  - spec/voog_api/api/tickets_spec.rb
305
333
  - spec/voog_spec.rb
306
- has_rdoc: