automation-api 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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