automation-api 0.3.0

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.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/.dependabot/config.yml +8 -0
  3. data/.gitignore +13 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +3 -0
  6. data/.ruby-version +1 -0
  7. data/.travis.yml +7 -0
  8. data/CHANGELONG.md +13 -0
  9. data/Dockerfile +16 -0
  10. data/Gemfile +6 -0
  11. data/Gemfile.lock +149 -0
  12. data/Jenkinsfile +31 -0
  13. data/README.md +176 -0
  14. data/Rakefile +44 -0
  15. data/automation-api.gemspec +42 -0
  16. data/bin/console +17 -0
  17. data/bin/setup +8 -0
  18. data/config/basic.yml +16 -0
  19. data/config/essential.yml +21 -0
  20. data/config/loyalty.yml +7 -0
  21. data/config/online.yml +17 -0
  22. data/config/profile.yml.example +231 -0
  23. data/config/restrictions.yml +55 -0
  24. data/config/starter.yml +11 -0
  25. data/docker-compose.yml +12 -0
  26. data/exe/store-gen +6 -0
  27. data/lib/automation/api.rb +17 -0
  28. data/lib/automation/api/cli.rb +320 -0
  29. data/lib/automation/api/client.rb +133 -0
  30. data/lib/automation/api/requests.rb +26 -0
  31. data/lib/automation/api/requests/account_owner.rb +22 -0
  32. data/lib/automation/api/requests/app_sync.rb +93 -0
  33. data/lib/automation/api/requests/button_pages.rb +34 -0
  34. data/lib/automation/api/requests/buttons.rb +34 -0
  35. data/lib/automation/api/requests/categories.rb +34 -0
  36. data/lib/automation/api/requests/collection.rb +32 -0
  37. data/lib/automation/api/requests/customers.rb +34 -0
  38. data/lib/automation/api/requests/departments.rb +34 -0
  39. data/lib/automation/api/requests/employees.rb +34 -0
  40. data/lib/automation/api/requests/entitlements.rb +33 -0
  41. data/lib/automation/api/requests/features.rb +33 -0
  42. data/lib/automation/api/requests/helper.rb +59 -0
  43. data/lib/automation/api/requests/location_preferences.rb +22 -0
  44. data/lib/automation/api/requests/loyalty_provisioning.rb +22 -0
  45. data/lib/automation/api/requests/matrix_products.rb +34 -0
  46. data/lib/automation/api/requests/modifiers.rb +34 -0
  47. data/lib/automation/api/requests/named_discounts.rb +34 -0
  48. data/lib/automation/api/requests/online_orders.rb +18 -0
  49. data/lib/automation/api/requests/registers.rb +30 -0
  50. data/lib/automation/api/requests/sales.rb +22 -0
  51. data/lib/automation/api/requests/sales_restrictions.rb +34 -0
  52. data/lib/automation/api/requests/settings.rb +22 -0
  53. data/lib/automation/api/requests/stock_items.rb +34 -0
  54. data/lib/automation/api/requests/tax_rate_service_taxes.rb +34 -0
  55. data/lib/automation/api/requests/taxes.rb +34 -0
  56. data/lib/automation/api/requests/tenders.rb +38 -0
  57. data/lib/automation/api/version.rb +7 -0
  58. metadata +321 -0
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'automation/api/requests/account_owner'
4
+ require 'automation/api/requests/app_sync'
5
+ require 'automation/api/requests/buttons'
6
+ require 'automation/api/requests/button_pages'
7
+ require 'automation/api/requests/categories'
8
+ require 'automation/api/requests/customers'
9
+ require 'automation/api/requests/departments'
10
+ require 'automation/api/requests/employees'
11
+ require 'automation/api/requests/entitlements'
12
+ require 'automation/api/requests/features'
13
+ require 'automation/api/requests/location_preferences'
14
+ require 'automation/api/requests/loyalty_provisioning'
15
+ require 'automation/api/requests/matrix_products'
16
+ require 'automation/api/requests/modifiers'
17
+ require 'automation/api/requests/named_discounts'
18
+ require 'automation/api/requests/online_orders'
19
+ require 'automation/api/requests/registers'
20
+ require 'automation/api/requests/sales'
21
+ require 'automation/api/requests/sales_restrictions'
22
+ require 'automation/api/requests/settings'
23
+ require 'automation/api/requests/stock_items'
24
+ require 'automation/api/requests/taxes'
25
+ require 'automation/api/requests/tax_rate_service_taxes'
26
+ require 'automation/api/requests/tenders'
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'helper'
4
+
5
+ module Automation
6
+ module API
7
+ module Requests
8
+ # Automation::API::Requests::AccountOwner
9
+ module AccountOwner
10
+ include Helper
11
+
12
+ def account_owner
13
+ get("#{@base_uri}/account_owner")
14
+ end
15
+
16
+ def update_account_owner(params)
17
+ patch("#{@base_uri}/account_owner", params: params)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'graphql/client'
4
+ require 'graphql/client/http'
5
+
6
+ module Automation
7
+ module API
8
+ module Requests
9
+ # Automation::API::Requests::AppSync
10
+ module AppSync
11
+ GRAPHQL_ENDPOINT = 'https://fdrvbwlqtngjxogf2325feddm4.appsync-api.us-east-1.amazonaws.com/graphql'
12
+
13
+ GRAPHQL_SEARCH = <<-'GRAPHQL'
14
+ query($storeId: ID) {
15
+ searchChecks(
16
+ filter: {
17
+ storeId: { eq: $storeId }
18
+ }
19
+ ) {
20
+ items {
21
+ id
22
+ version
23
+ }
24
+ }
25
+ }
26
+ GRAPHQL
27
+
28
+ GRAPHQL_DELETE = <<-"GRAPHQL"
29
+ mutation ($input: DeleteCheckInput!) {
30
+ deleteCheck(input: $input) {
31
+ id
32
+ }
33
+ }
34
+ GRAPHQL
35
+
36
+ def search_checks
37
+ client.query(
38
+ search_query,
39
+ variables: { storeId: uuid.downcase },
40
+ context: { token: jwt_token }
41
+ ).data.search_checks.items
42
+ end
43
+
44
+ def delete_check(id, version)
45
+ client.query(
46
+ delete_mutation,
47
+ variables: { input: { id: id, expectedVersion: version } },
48
+ context: { token: jwt_token }
49
+ ).data.delete_check
50
+ end
51
+
52
+ private
53
+
54
+ def http
55
+ @http ||= ::GraphQL::Client::HTTP.new(GRAPHQL_ENDPOINT) do
56
+ def headers(context) # rubocop:disable Lint/NestedMethodDefinition
57
+ {
58
+ 'User-Agent': 'Automation API',
59
+ 'Authorization': context[:token]
60
+ }
61
+ end
62
+ end
63
+ end
64
+
65
+ def schema
66
+ @schema ||= GraphQL::Client.load_schema(
67
+ GraphQL::Client.dump_schema(http, context: { token: jwt_token })
68
+ )
69
+ end
70
+
71
+ def client
72
+ @client ||= ::GraphQL::Client.new(schema: schema, execute: http)
73
+ end
74
+
75
+ def search_query
76
+ if AppSync.const_defined?(:SearchQuery)
77
+ AppSync::SearchQuery
78
+ else
79
+ AppSync.const_set(:SearchQuery, client.parse(GRAPHQL_SEARCH))
80
+ end
81
+ end
82
+
83
+ def delete_mutation
84
+ if AppSync.const_defined?(:DeleteQuery)
85
+ AppSync::DeleteQuery
86
+ else
87
+ AppSync.const_set(:DeleteQuery, client.parse(GRAPHQL_DELETE))
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'helper'
4
+
5
+ module Automation
6
+ module API
7
+ module Requests
8
+ # Automation::API::Requests::ButtonPages
9
+ module ButtonPages
10
+ include Helper
11
+
12
+ def button_pages
13
+ get("#{@base_uri}/button_pages")
14
+ end
15
+
16
+ def button_page(id:)
17
+ get("#{@base_uri}/button_pages/#{id}")
18
+ end
19
+
20
+ def create_button_page(button_page:)
21
+ post("#{@base_uri}/button_pages", params: button_page)
22
+ end
23
+
24
+ def update_button_page(id:, button_page:)
25
+ patch("#{@base_uri}/button_pages/#{id}", params: button_page)
26
+ end
27
+
28
+ def delete_button_page(id:)
29
+ delete("#{@base_uri}/button_pages/#{id}")
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'helper'
4
+
5
+ module Automation
6
+ module API
7
+ module Requests
8
+ # Automation::API::Requests::Buttons
9
+ module Buttons
10
+ include Helper
11
+
12
+ def buttons(button_page_id:)
13
+ get("#{@base_uri}/button_pages/#{button_page_id}/buttons")
14
+ end
15
+
16
+ def button(button_page_id:, id:)
17
+ get("#{@base_uri}/button_pages/#{button_page_id}/buttons/#{id}")
18
+ end
19
+
20
+ def create_button(button_page_id:, button:)
21
+ post("#{@base_uri}/button_pages/#{button_page_id}/buttons", params: button)
22
+ end
23
+
24
+ def update_button(button_page_id:, id:, button:)
25
+ patch("#{@base_uri}/button_pages/#{button_page_id}/buttons/#{id}", params: button)
26
+ end
27
+
28
+ def delete_button(button_page_id:, id:)
29
+ delete("#{@base_uri}/button_pages/#{button_page_id}/buttons/#{id}")
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'helper'
4
+
5
+ module Automation
6
+ module API
7
+ module Requests
8
+ # Automation::API::Requests::Categories
9
+ module Categories
10
+ include Helper
11
+
12
+ def categories(department_id:)
13
+ get("#{@base_uri}/departments/#{department_id}/categories")
14
+ end
15
+
16
+ def category(department_id:, id:)
17
+ get("#{@base_uri}/departments/#{department_id}/categories/#{id}")
18
+ end
19
+
20
+ def create_category(department_id:, category:)
21
+ post("#{@base_uri}/departments/#{department_id}/categories", params: category)
22
+ end
23
+
24
+ def update_category(department_id:, id:, category:)
25
+ patch("#{@base_uri}/departments/#{department_id}/categories/#{id}", params: category)
26
+ end
27
+
28
+ def delete_category(department_id:, id:)
29
+ delete("#{@base_uri}/departments/#{department_id}/categories/#{id}")
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Automation
4
+ module API
5
+ module Requests
6
+ # Automation::API::Requests::Collection
7
+ class Collection
8
+ def initialize(records)
9
+ @records = records
10
+ end
11
+
12
+ def find_by(criteria)
13
+ key, value = criteria.first
14
+
15
+ @records.find { |record| record[key] == value }
16
+ end
17
+
18
+ private
19
+
20
+ def method_missing(method, *args, &block)
21
+ super unless @records.respond_to?(method)
22
+
23
+ @records.send(method, *args, &block)
24
+ end
25
+
26
+ def respond_to_missing?(method, *_args, &_block)
27
+ @records.respond_to?(method)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'helper'
4
+
5
+ module Automation
6
+ module API
7
+ module Requests
8
+ # Automation::API::Requests::Customers
9
+ module Customers
10
+ include Helper
11
+
12
+ def customers
13
+ get("#{@base_uri}/customers")
14
+ end
15
+
16
+ def customer(id:)
17
+ get("#{@base_uri}/customers/#{id}")
18
+ end
19
+
20
+ def create_customer(customer:)
21
+ post("#{@base_uri}/customers", params: customer)
22
+ end
23
+
24
+ def update_customer(id:, customer:)
25
+ patch("#{@base_uri}/customers/#{id}", params: customer)
26
+ end
27
+
28
+ def delete_customer(id:)
29
+ delete("#{@base_uri}/customers/#{id}")
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'helper'
4
+
5
+ module Automation
6
+ module API
7
+ module Requests
8
+ # Automation::API::Requests::Departments
9
+ module Departments
10
+ include Helper
11
+
12
+ def departments
13
+ get("#{@base_uri}/departments")
14
+ end
15
+
16
+ def department(id:)
17
+ get("#{@base_uri}/departments/#{id}")
18
+ end
19
+
20
+ def create_department(department:)
21
+ post("#{@base_uri}/departments", params: department)
22
+ end
23
+
24
+ def update_department(id:, department:)
25
+ patch("#{@base_uri}/departments/#{id}", params: department)
26
+ end
27
+
28
+ def delete_department(id:)
29
+ delete("#{@base_uri}/departments/#{id}")
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'helper'
4
+
5
+ module Automation
6
+ module API
7
+ module Requests
8
+ # Automation::API::Requests::Employees
9
+ module Employees
10
+ include Helper
11
+
12
+ def employees
13
+ get("#{@base_uri}/employees")
14
+ end
15
+
16
+ def employee(id:)
17
+ get("#{@base_uri}/employees/#{id}")
18
+ end
19
+
20
+ def create_employee(employee:)
21
+ post("#{@base_uri}/employees", params: employee)
22
+ end
23
+
24
+ def update_employee(id:, employee:)
25
+ patch("#{@base_uri}/employees/#{id}", params: employee)
26
+ end
27
+
28
+ def delete_employee(id:)
29
+ delete("#{@base_uri}/employees/#{id}")
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'helper'
4
+
5
+ module Automation
6
+ module API
7
+ module Requests
8
+ # Automation::API::Requests::Entitlements
9
+ module Entitlements
10
+ include Helper
11
+
12
+ def activate_entitlement(entitlement)
13
+ params = { entitlement: entitlement }
14
+
15
+ post("#{@base_uri}/entitlements", params: params)
16
+ end
17
+
18
+ def deactivate_entitlement(entitlement)
19
+ params = { entitlement: entitlement }
20
+
21
+ delete_with_payload("#{@base_uri}/entitlements", params: params)
22
+ end
23
+
24
+ def update_entitlements(activate: [], deactivate: [])
25
+ params = { active_entitlements: activate,
26
+ inactive_entitlements: deactivate }
27
+
28
+ patch("#{@base_uri}/entitlements", params: params)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'helper'
4
+
5
+ module Automation
6
+ module API
7
+ module Requests
8
+ # Automation::API::Requests::Features
9
+ module Features
10
+ include Helper
11
+
12
+ def activate_feature(feature)
13
+ params = { feature: feature }
14
+
15
+ post("#{@base_uri}/features", params: params)
16
+ end
17
+
18
+ def deactivate_feature(feature)
19
+ params = { feature: feature }
20
+
21
+ delete_with_payload("#{@base_uri}/features", params: params)
22
+ end
23
+
24
+ def update_features(activate: [], deactivate: [])
25
+ params = { active_features: activate,
26
+ inactive_features: deactivate }
27
+
28
+ patch("#{@base_uri}/features", params: params)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end