beyond_api 0.11.1.pre → 0.12.0.pre

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.
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "beyond_api/utils"
4
+
5
+ module BeyondApi
6
+ module ShopAddress
7
+
8
+ #
9
+ # A +GET+ request is used to retrieve the details of a shop’s address.
10
+ #
11
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/address' -i -X GET
12
+ #
13
+ # @return [OpenStruct]
14
+ #
15
+ # @example
16
+ # session.shop.address
17
+ #
18
+ def address
19
+ response, status = BeyondApi::Request.get(@session, "/shop/address")
20
+
21
+ handle_response(response, status)
22
+ end
23
+
24
+ #
25
+ # A +PATCH+ request is used to patch a shop’s address partially with json content type.
26
+ #
27
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/address' -i -X PATCH \
28
+ # -H 'Content-Type: application/json' \
29
+ # -H 'Accept: application/hal+json' \
30
+ # -H 'Authorization: Bearer <Access token>' \
31
+ # -d '{
32
+ # "city" : "Barcelona"
33
+ # }'
34
+ #
35
+ # @beyond_api.scopes +shad:u+
36
+ #
37
+ # @param body [Hash] the request body
38
+ #
39
+ # @return [OpenStruct]
40
+ #
41
+ # @example
42
+ # body = {
43
+ # "city" => "Barcelona"
44
+ # }
45
+ #
46
+ # session.shop.update_address(body)
47
+ #
48
+ def update_address(body)
49
+ response, status = BeyondApi::Request.patch(@session, "/shop/address", body)
50
+
51
+ handle_response(response, status)
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,137 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "beyond_api/utils"
4
+
5
+ module BeyondApi
6
+ module ShopAttributes
7
+
8
+ #
9
+ # A +GET+ request is used to retrieve a particular shop attribute by its name.
10
+ #
11
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/attributes/second-unknown-attribute-name' -i -X GET \
12
+ # -H 'Authorization: Bearer <Access token>'
13
+ #
14
+ # @beyond_api.scopes +shat:r+
15
+ #
16
+ # @param attribute_name [String] the attribute name
17
+ #
18
+ # @return [OpenStruct]
19
+ #
20
+ # @example
21
+ # @shop_attribute = session.shop.attribute("second-unknown-attribute-name")
22
+ #
23
+ def attribute(attribute_name)
24
+ response, status = BeyondApi::Request.get(@session, "/shop/attributes/#{attribute_name}")
25
+
26
+ handle_response(response, status)
27
+ end
28
+
29
+ #
30
+ # A +GET+ request is used to retrieve a list of all shop attributes.
31
+ #
32
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/attributes' -i -X GET \
33
+ # -H 'Authorization: Bearer <Access token>'
34
+ #
35
+ # @beyond_api.scopes +shat:r+
36
+ #
37
+ # @option params [Integer] :size the page size
38
+ # @option params [Integer] :page the page number
39
+ #
40
+ # @return [OpenStruct]
41
+ #
42
+ # @example
43
+ # @shop_attributes = session.shop.attributes(size: 5, page: 1)
44
+ #
45
+ def attributes(params = {})
46
+ response, status = BeyondApi::Request.get(@session, "/shop/attributes", params)
47
+
48
+ handle_response(response, status)
49
+ end
50
+
51
+ #
52
+ # A +POST+ request is used to create a shop attribute.
53
+ #
54
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/attributes' -i -X POST \
55
+ # -H 'Content-Type: application/json' \
56
+ # -H 'Authorization: Bearer <Access token>' \
57
+ # -d '{
58
+ # "name" : "second-unknown-attribute-name",
59
+ # "value" : "correct-value",
60
+ # "public" : false
61
+ # }'
62
+ #
63
+ # @beyond_api.scopes +shat:c+
64
+ #
65
+ # @param body [Hash] the request body
66
+ #
67
+ # @return [OpenStruct]
68
+ #
69
+ # @example
70
+ # body = {
71
+ # "name" => "second-unknown-attribute-name",
72
+ # "value" => "correct-value",
73
+ # "public" => false
74
+ # }
75
+ #
76
+ # session.shop.create_attribute(body)
77
+ #
78
+ def create_attribute(body)
79
+ response, status = BeyondApi::Request.post(@session, "/shop/attributes", body)
80
+
81
+ handle_response(response, status)
82
+ end
83
+
84
+ #
85
+ # A +DELETE+ request is used to delete an shop attribute.
86
+ #
87
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/attributes/second-unknown-attribute-name' -i -X DELETE \
88
+ # -H 'Authorization: Bearer <Access token>'
89
+ #
90
+ # @beyond_api.scopes +shat:d+
91
+ #
92
+ # @param attribute_name [String] the attribute name
93
+ #
94
+ # @return true
95
+ #
96
+ # @example
97
+ # session.shop.delete_attribute("second-unknown-attribute-name")
98
+ #
99
+ def delete_attribute(attribute_name)
100
+ response, status = BeyondApi::Request.delete(@session, "/shop/attributes/#{attribute_name}")
101
+
102
+ handle_response(response, status, respond_with_true: true)
103
+ end
104
+
105
+ #
106
+ # A +PUT+ request is used to update a shop attribute. This operation is idempotent and will create a new shop attribute if required.
107
+ #
108
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/attributes/second-unknown-attribute-name' -i -X PUT \
109
+ # -H 'Content-Type: application/json' \
110
+ # -H 'Authorization: Bearer <Access token>' \
111
+ # -d '{
112
+ # "value" : "new-value",
113
+ # "public" : false
114
+ # }'
115
+ #
116
+ # @beyond_api.scopes +shat:u+
117
+ #
118
+ # @param attribute_name [String] the attribute name
119
+ # @param body [Hash] the request body
120
+ #
121
+ # @return [OpenStruct]
122
+ #
123
+ # @example
124
+ # body = {
125
+ # "value" => "new-value",
126
+ # "public" => false
127
+ # }
128
+ #
129
+ # session.shop.update_attribute("second-unknown-attribute-name", body)
130
+ #
131
+ def update_attribute(attribute_name, body)
132
+ response, status = BeyondApi::Request.put(@session, "/shop/attributes/#{attribute_name}", body)
133
+
134
+ handle_response(response, status)
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,155 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "beyond_api/utils"
4
+
5
+ module BeyondApi
6
+ module ShopImages
7
+
8
+ #
9
+ # A +POST+ request is used to create a shop image.
10
+ #
11
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/images' -i -X POST \
12
+ # -H 'Content-Type: application/json' \
13
+ # -H 'Accept: application/hal+json' \
14
+ # -H 'Authorization: Bearer <Access token>' \
15
+ # -d '{
16
+ # "dataUri" : "file.png?hash=212-2323-4343",
17
+ # "label" : "logo"
18
+ # }'
19
+ #
20
+ # @beyond_api.scopes +shim:c+
21
+ #
22
+ # @param body [Hash] the request body
23
+ #
24
+ # @return true
25
+ #
26
+ # @example
27
+ # body = {
28
+ # "data_uri" => "file.png?hash=212-2323-4343",
29
+ # "label" => "logo"
30
+ # }
31
+ #
32
+ # session.shop.create_image(body)
33
+ #
34
+ def create_image(body)
35
+ response, status = BeyondApi::Request.post(@session, "/shop/images", body)
36
+
37
+ handle_response(response, status, respond_with_true: true)
38
+ end
39
+
40
+ #
41
+ # A +DELETE+ request is used to delete a shop image.
42
+ #
43
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/images/6a7646dc-7f26-4730-a98f-52f9b63978fb' -i -X DELETE \
44
+ # -H 'Content-Type: application/json' \
45
+ # -H 'Accept: application/hal+json' \
46
+ # -H 'Authorization: Bearer <Access token>'
47
+ #
48
+ # @beyond_api.scopes +shim:d+
49
+ #
50
+ # @param image_id [String] the image UUID
51
+ #
52
+ # @return true
53
+ #
54
+ # @example
55
+ # session.shop.delete_image("6a7646dc-7f26-4730-a98f-52f9b63978fb")
56
+ #
57
+ def delete_image(image_id)
58
+ response, status = BeyondApi::Request.delete(@session, "/shop/images/#{image_id}")
59
+
60
+ handle_response(response, status, respond_with_true: true)
61
+ end
62
+
63
+ #
64
+ # A +GET+ request is used to retrieve a single shop image.
65
+ #
66
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/images/2feee7ac-f1cb-4faf-9488-f3ce07394141' -i -X GET \
67
+ # -H 'Accept: application/hal+json'
68
+ #
69
+ # @param image_id [String] the image UUID
70
+ #
71
+ # @return [OpenStruct]
72
+ #
73
+ # @example
74
+ # @image = session.shop.image("2feee7ac-f1cb-4faf-9488-f3ce07394141")
75
+ #
76
+ def image(image_id)
77
+ response, status = BeyondApi::Request.get(@session, "/shop/images/#{image_id}")
78
+
79
+ handle_response(response, status)
80
+ end
81
+
82
+ #
83
+ # A +GET+ request is used to retrieve the images of a shop.
84
+ #
85
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/images' -i -X GET \
86
+ # -H 'Accept: application/hal+json'
87
+ #
88
+ # @option params [Integer] :size the page size
89
+ # @option params [Integer] :page the page number
90
+ #
91
+ # @return [OpenStruct]
92
+ #
93
+ # @example
94
+ # @images = session.shop.images(size: 5, page: 1)
95
+ #
96
+ def images(params = {})
97
+ response, status = BeyondApi::Request.get(@session, "/shop/images", params)
98
+
99
+ handle_response(response, status)
100
+ end
101
+
102
+ #
103
+ # A +GET+ request is issued to search for shop images by label.
104
+ #
105
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/images/search/find-by-label?label=logo' -i -X GET \
106
+ # -H 'Accept: application/hal+json'
107
+ #
108
+ # @param label [String] the image label
109
+ #
110
+ # @return [OpenStruct]
111
+ #
112
+ # @example
113
+ # session.shop.search_images_by_label("logo")
114
+ #
115
+ def search_images_by_label(label)
116
+ response, status = BeyondApi::Request.get(@session, "/shop/images/search/find-by-label", { label: label })
117
+
118
+ handle_response(response, status)
119
+ end
120
+
121
+ #
122
+ # A +POST+ request is used to upload a shop image. The body of the request must contain the content of the image.
123
+ #
124
+ # $ curl --data-binary '@/home/epages/sample.png' 'https://api-shop.beyondshop.cloud/api/shop/images?fileName=sample.png&label=invoice logo' -X POST \
125
+ # -H 'Content-Type: image/png' \
126
+ # -H 'Authorization: Bearer <Access token>'
127
+ #
128
+ # @beyond_api.scopes +shim:c+
129
+ #
130
+ # @param image_path [String] the image path
131
+ # @param image_name [String] the image name
132
+ # @param label [String] the image label
133
+ #
134
+ # @return true
135
+ #
136
+ # @example
137
+ # session.shop.upload_image("/home/epages/sample.png", "sample.png", "invoice logo")
138
+ #
139
+ def upload_image(image_path, image_name, label)
140
+ content_type = case File.extname(image_path)
141
+ when ".png"
142
+ "image/png"
143
+ when ".jpg", ".jpeg"
144
+ "image/jpeg"
145
+ when ".gif"
146
+ "image/gif"
147
+ end
148
+ image_binary = File.binread(image_path)
149
+
150
+ response, status = BeyondApi::Request.upload(@session, "/shop/images", image_binary, content_type, { file_name: image_name, label: label })
151
+
152
+ handle_response(response, status, respond_with_true: true)
153
+ end
154
+ end
155
+ end
@@ -0,0 +1,124 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "beyond_api/utils"
4
+
5
+ module BeyondApi
6
+ module ShopLegals
7
+
8
+ #
9
+ # A +GET+ request is used to retrieve a specific part of the legal content information.
10
+ #
11
+ # $ curl 'https://api-shop.beyondshop.cloud/api/legal-content/right-of-withdrawal' -i -X GET \
12
+ # -H 'Content-Type: application/json' \
13
+ # -H 'Accept: application/json'
14
+ #
15
+ # @param legal_content_type [String] the legal content type
16
+ #
17
+ # @return [OpenStruct]
18
+ #
19
+ # @example
20
+ # @legal_content = session.shop.legal_content("right-of-withdrawal")
21
+ #
22
+ def legal_content(legal_content_type)
23
+ response, status = BeyondApi::Request.get(@session, "/legal-content/#{legal_content_type}")
24
+
25
+ handle_response(response, status)
26
+ end
27
+
28
+ #
29
+ # A +GET+ request is used to retrieve the legal content of a shop.
30
+ #
31
+ # $ curl 'https://api-shop.beyondshop.cloud/api/legal-content' -i -X GET \
32
+ # -H 'Content-Type: application/json' \
33
+ # -H 'Accept: application/json'
34
+ #
35
+ # @option params [Integer] :size the page size
36
+ # @option params [Integer] :page the page number
37
+ #
38
+ # @return [OpenStruct]
39
+ #
40
+ # @example
41
+ # @legal_content = session.shop.legal_contents(size: 5, page: 1)
42
+ #
43
+ def legal_contents(params = {})
44
+ response, status = BeyondApi::Request.get(@session, "/legal-content", params)
45
+
46
+ handle_response(response, status)
47
+ end
48
+
49
+ #
50
+ # A +GET+ request is used to retrieve the details of the legal resource.
51
+ #
52
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/legal' -i -X GET \
53
+ # -H 'Authorization: Bearer <Access token>'
54
+ #
55
+ # @beyond_api.scopes +legl:r+
56
+ #
57
+ # @return [OpenStruct]
58
+ #
59
+ # @example
60
+ # @legal_details = session.shop.legal_details
61
+ #
62
+ def legal_details
63
+ response, status = BeyondApi::Request.get(@session, "/shop/legal")
64
+
65
+ handle_response(response, status)
66
+ end
67
+
68
+ #
69
+ # A +PUT+ request is used to update the content of a specific part of the legal content information. Changes on the properties type and mandatory will be ignored.
70
+ #
71
+ # $ curl 'https://api-shop.beyondshop.cloud/api/legal-content/legal-notice' -i -X PUT \
72
+ # -H 'Content-Type: application/json' \
73
+ # -H 'Accept: application/json' \
74
+ # -H 'Authorization: Bearer <Access token>' \
75
+ # -d '{
76
+ # "content" : "new legal content"
77
+ # }'
78
+ #
79
+ # @beyond_api.scopes +lcnt:u+
80
+ #
81
+ # @param body [Hash] the request body
82
+ #
83
+ # @return [OpenStruct]
84
+ #
85
+ # @example
86
+ # session.shop.update_legal_content(body)
87
+ #
88
+ def update_legal_content(body)
89
+ response, status = BeyondApi::Request.put(@session, "/legal-content/legal-notice")
90
+
91
+ handle_response(response, status)
92
+ end
93
+
94
+ #
95
+ # A +PATCH+ request is used to update a legal resource partially with json content type.
96
+ #
97
+ # $ curl 'https://api-shop.beyondshop.cloud/api/shop/legal' -i -X PATCH \
98
+ # -H 'Content-Type: application/json' \
99
+ # -H 'Accept: application/hal+json' \
100
+ # -H 'Authorization: Bearer <Access token>' \
101
+ # -d '{
102
+ # "vatId" : "GB 111111111"
103
+ # }'
104
+ #
105
+ # @beyond_api.scopes +legl:u+
106
+ #
107
+ # @param body [Hash] the request body
108
+ #
109
+ # @return [OpenStruct]
110
+ #
111
+ # @example
112
+ # body = {
113
+ # "vat_id" => "GB 111111111"
114
+ # }
115
+ #
116
+ # session.shop.update_legal_details(body)
117
+ #
118
+ def update_legal_details(body)
119
+ response, status = BeyondApi::Request.patch(@session, "/shop/legal")
120
+
121
+ handle_response(response, status)
122
+ end
123
+ end
124
+ end