apollo_commons_ruby 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/CODE_OF_CONDUCT.md +74 -0
  4. data/Gemfile +6 -0
  5. data/Gemfile.lock +19 -0
  6. data/README.md +40 -0
  7. data/Rakefile +2 -0
  8. data/apollo_commons_ruby-0.2.0.gem +0 -0
  9. data/apollo_commons_ruby-0.3.0.gem +0 -0
  10. data/apollo_commons_ruby-0.4.0.gem +0 -0
  11. data/apollo_commons_ruby-0.5.0.gem +0 -0
  12. data/apollo_commons_ruby-0.6.0.gem +0 -0
  13. data/apollo_commons_ruby.gemspec +26 -0
  14. data/bin/console +14 -0
  15. data/bin/setup +8 -0
  16. data/lib/apollo_commons_ruby.rb +34 -0
  17. data/lib/apollo_commons_ruby/DomainEvent.rb +122 -0
  18. data/lib/apollo_commons_ruby/FileUtils.rb +41 -0
  19. data/lib/apollo_commons_ruby/MarioEvent.rb +45 -0
  20. data/lib/apollo_commons_ruby/NetworkUtils.rb +67 -0
  21. data/lib/apollo_commons_ruby/Operation.rb +4 -0
  22. data/lib/apollo_commons_ruby/ResolveTemplate.rb +53 -0
  23. data/lib/apollo_commons_ruby/SecretConfig.rb +15 -0
  24. data/lib/apollo_commons_ruby/TemplateBuilder.rb +26 -0
  25. data/lib/apollo_commons_ruby/TemplatesHelper.rb +814 -0
  26. data/lib/apollo_commons_ruby/TemplatesRakefile.rb +816 -0
  27. data/lib/apollo_commons_ruby/ViewGroup.rb +62 -0
  28. data/lib/apollo_commons_ruby/ViewGroupComponent.rb +66 -0
  29. data/lib/apollo_commons_ruby/ViewGroupDefinition.rb +61 -0
  30. data/lib/tasks/add_translations.rake +9 -0
  31. data/lib/tasks/checkValidJson.rake +17 -0
  32. data/lib/tasks/delete_domain_event.rake +7 -0
  33. data/lib/tasks/delete_view_group.rake +7 -0
  34. data/lib/tasks/delete_view_group_component.rake +7 -0
  35. data/lib/tasks/delete_view_group_definition.rake +7 -0
  36. data/lib/tasks/deploy_all_templates.rake +7 -0
  37. data/lib/tasks/runTests.rake +27 -0
  38. data/lib/tasks/update_all.rake +36 -0
  39. data/lib/tasks/update_all_domain_events.rake +24 -0
  40. data/lib/tasks/update_all_view_group_components.rake +18 -0
  41. data/lib/tasks/update_domain_event.rake +11 -0
  42. data/lib/tasks/update_one_template.rake +42 -0
  43. data/lib/tasks/update_translations.rake +24 -0
  44. data/lib/tasks/update_view_group_component.rake +9 -0
  45. data/lib/tasks/update_view_group_definition.rake +7 -0
  46. data/lib/tasks/update_view_group_for_user_0.rake +36 -0
  47. data/lib/version.rb +3 -0
  48. metadata +91 -0
@@ -0,0 +1,62 @@
1
+ require 'fileutils'
2
+ require 'json'
3
+ require 'pp'
4
+ require_relative './NetworkUtils'
5
+ require_relative './FileUtils'
6
+ require_relative './Operation'
7
+ require_relative './SecretConfig'
8
+
9
+ $environmentProperties = nil
10
+ $operation = nil
11
+ $viewGroup = nil
12
+ $secretConfig = nil
13
+
14
+ class ViewGroup
15
+ attr_reader :tenantId
16
+ attr_reader :projectId
17
+ attr_reader :viewGroupDefinition
18
+ attr_reader :domainId
19
+ attr_reader :tenantUserId
20
+ attr_reader :viewGroupName
21
+
22
+ def initialize(configuration_json, view_group_definition, view_group_name, domain_id, tenant_user_id)
23
+ @tenantId = configuration_json["tenantId"]
24
+ @projectId = configuration_json["projectId"]
25
+ @viewGroupDefinition = view_group_definition
26
+ @viewGroupName = view_group_name
27
+ @domainId = domain_id
28
+ @tenantUserId = tenant_user_id
29
+ end
30
+ end
31
+
32
+ def handle_view_group_task(env, operation)
33
+ viewGroupDefinitionName = env["view_group_definition"]
34
+ environment = env["environment"]
35
+ viewGroupName = env["view_group_name"]
36
+ domainId = env["domain"]
37
+ tenantUserId = env["tenant_user_id"]
38
+ tenantId = ENV["tenant_id"]
39
+ projectId = ENV["project_id"]
40
+ handle_view_group(viewGroupDefinitionName, environment, tenantId, projectId, viewGroupName, domainId, tenantUserId, operation)
41
+ end
42
+
43
+ def handle_view_group(viewGroupDefinitionName, environment, tenantId, projectId, viewGroupName, domainId, tenantUserId, operation)
44
+ $operation = operation
45
+ load_environment_properties(environment, tenantId, projectId)
46
+ prepare_view_group(viewGroupDefinitionName, viewGroupName, domainId, tenantUserId)
47
+ perform_view_group_operation
48
+ end
49
+
50
+ def prepare_view_group(viewGroupDefinitionName, viewGroupName, domainId, tenantUserId)
51
+ $viewGroup = ViewGroup.new($environmentProperties, viewGroupDefinitionName, viewGroupName, domainId, tenantUserId)
52
+ end
53
+
54
+ def perform_view_group_operation
55
+ baseMarioUrl = $environmentProperties["apolloMarioBaseUrl"]
56
+ authToken = $secretConfig.authToken
57
+ marioUrl = baseMarioUrl + "/apollo-mario/1.0/tenants/" + $viewGroup.tenantId + "/projects/" + $viewGroup.projectId + "/domains/" + $viewGroup.domainId + "/tenant-users/" + $viewGroup.tenantUserId + "/view-group-definitions/" + $viewGroup.viewGroupDefinition + "/view-groups/" + $viewGroup.viewGroupName
58
+ replace_environment_based_config_in_string(marioUrl, $environmentProperties)
59
+ if $operation == Operation::DELETE
60
+ make_DELETE_request(marioUrl, authToken)
61
+ end
62
+ end
@@ -0,0 +1,66 @@
1
+ require 'fileutils'
2
+ require 'json'
3
+ require 'pp'
4
+ require_relative './NetworkUtils'
5
+ require_relative './FileUtils'
6
+ require_relative './Operation'
7
+ require_relative './SecretConfig'
8
+
9
+ $environmentProperties = nil
10
+ $operation = nil
11
+ $viewGroupComponent = nil
12
+ $secretConfig = nil
13
+
14
+ class ViewGroupComponent
15
+ attr_reader :tenantId
16
+ attr_reader :projectId
17
+ attr_reader :viewGroupDefinition
18
+ attr_reader :viewGroupComponent
19
+ attr_reader :requestBody
20
+
21
+ def initialize(configuration_json, view_group_definition, view_group_component)
22
+ @tenantId = configuration_json["tenantId"]
23
+ @projectId = configuration_json["projectId"]
24
+ @viewGroupDefinition = view_group_definition
25
+ @viewGroupComponent = view_group_component
26
+ view_group_component_properties = File.read("./configs/" + view_group_definition + "/" + view_group_component + "/view_group_component_properties.json")
27
+ @requestBody = JSON.parse view_group_component_properties
28
+ end
29
+ end
30
+
31
+ def handle_view_group_component_task(env, operation)
32
+ viewGroupDefinitionName = env["view_group_definition"]
33
+ environment = env["environment"]
34
+ component = env["view_group_component"]
35
+ tenantId = ENV["tenant_id"]
36
+ projectId = ENV["project_id"]
37
+ handle_view_group_component(viewGroupDefinitionName, environment, tenantId, projectId, component, operation)
38
+ end
39
+
40
+ def handle_view_group_component(viewGroupDefinitionName, environment, tenantId, projectId, component, operation)
41
+ $operation = operation
42
+ load_environment_properties(environment, tenantId, projectId)
43
+ prepare_view_group_component(viewGroupDefinitionName, component)
44
+ perform_view_group_component_operation
45
+ end
46
+
47
+ def prepare_view_group_component(view_group_definition, component)
48
+ $viewGroupComponent = ViewGroupComponent.new($environmentProperties, view_group_definition, component)
49
+ end
50
+
51
+ def perform_view_group_component_operation
52
+ raise_exception_if_string_empty($viewGroupComponent.requestBody["templateGroup"], "templateGroup")
53
+ baseMarioUrl = $environmentProperties["apolloMarioBaseUrl"]
54
+ authToken = $secretConfig.authToken
55
+ marioUrl = baseMarioUrl + "/apollo-mario/1.0/tenants/" + $viewGroupComponent.tenantId + "/projects/" + $viewGroupComponent.projectId + "/view-group-definitions/" + $viewGroupComponent.viewGroupDefinition + "/components/" + $viewGroupComponent.viewGroupComponent
56
+ replace_environment_based_config_in_string(marioUrl, $environmentProperties)
57
+ if $operation == Operation::PUT
58
+ make_PUT_request(marioUrl,
59
+ replace_environment_based_config_in_string(JSON.generate($viewGroupComponent.requestBody), $environmentProperties),
60
+ authToken)
61
+ return
62
+ end
63
+ if $operation == Operation::DELETE
64
+ make_DELETE_request(marioUrl, authToken)
65
+ end
66
+ end
@@ -0,0 +1,61 @@
1
+ require 'fileutils'
2
+ require 'json'
3
+ require 'pp'
4
+ require_relative './NetworkUtils'
5
+ require_relative './FileUtils'
6
+ require_relative './Operation'
7
+ require_relative './SecretConfig'
8
+
9
+ $environmentProperties = nil
10
+ $operation = nil
11
+ $viewGroupDefinition = nil
12
+ $secretConfig = nil
13
+
14
+ class ViewGroupDefinition
15
+ attr_reader :tenantId
16
+ attr_reader :projectId
17
+ attr_reader :viewGroupDefinition
18
+ attr_reader :requestBody
19
+
20
+ def initialize(configuration_json, view_group_definition)
21
+ @tenantId = configuration_json["tenantId"]
22
+ @projectId = configuration_json["projectId"]
23
+ @viewGroupDefinition = view_group_definition
24
+ view_group_definition_properties = File.read("./configs/" + view_group_definition + "/view_group_definition_properties.json")
25
+ @requestBody = JSON.parse view_group_definition_properties
26
+ end
27
+ end
28
+
29
+ def handle_view_group_definition_task(env, operation)
30
+ viewGroupDefinitionName = env["view_group_definition"]
31
+ environment = env["environment"]
32
+ tenantId = ENV["tenant_id"]
33
+ projectId = ENV["project_id"]
34
+ handle_view_group_definition(viewGroupDefinitionName, environment, tenantId, projectId, operation)
35
+ end
36
+
37
+ def handle_view_group_definition(viewGroupDefinitionName, environment, tenantId, projectId, operation)
38
+ $operation = operation
39
+ load_environment_properties(environment, tenantId, projectId)
40
+ prepare_view_group_definition(viewGroupDefinitionName)
41
+ perform_view_group_definition_operation
42
+ end
43
+
44
+ def prepare_view_group_definition(view_group_definition)
45
+ $viewGroupDefinition = ViewGroupDefinition.new($environmentProperties, view_group_definition)
46
+ end
47
+
48
+ def perform_view_group_definition_operation
49
+ baseMarioUrl = $environmentProperties["apolloMarioBaseUrl"]
50
+ authToken = $secretConfig.authToken
51
+
52
+ marioUrl = baseMarioUrl + "/apollo-mario/1.0/tenants/" + $viewGroupDefinition.tenantId + "/projects/" + $viewGroupDefinition.projectId + "/view-group-definitions/" + $viewGroupDefinition.viewGroupDefinition
53
+ replace_environment_based_config_in_string(marioUrl, $environmentProperties)
54
+ if $operation == Operation::PUT
55
+ make_PUT_request(marioUrl, replace_environment_based_config_in_string(JSON.generate($viewGroupDefinition.requestBody), $environmentProperties), authToken)
56
+ return
57
+ end
58
+ if $operation == Operation::DELETE
59
+ make_DELETE_request(marioUrl, authToken)
60
+ end
61
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../apollo_commons_ruby/TemplatesRakefile'
2
+ require_relative '../apollo_commons_ruby/TemplatesHelper'
3
+
4
+ desc "Add translated language"
5
+ task :add_translations do
6
+ language = ENV["language"]
7
+ puts "Adding Translations for language #{language}"
8
+ add_translations_for_language(language)
9
+ end
@@ -0,0 +1,17 @@
1
+ require_relative '../apollo_commons_ruby/TemplatesRakefile'
2
+ require_relative '../apollo_commons_ruby/TemplatesHelper'
3
+
4
+ desc "Check if all JSON files in the repo are valid"
5
+ task :checkValidJson do
6
+ require 'find'
7
+ Find.find(Dir.pwd) do |file|
8
+ # process
9
+ if (file.include? ".json" and file.include? "Templates/")
10
+ data = read_data_from_file_path(file)
11
+ puts file
12
+ if data.strip != ""
13
+ parsedData = JSON.parse(data)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ require_relative '../apollo_commons_ruby/DomainEvent'
2
+ require_relative '../apollo_commons_ruby/Operation'
3
+
4
+ desc "Delete Domain Event"
5
+ task :delete_domain_event do
6
+ handle_domain_event_task(ENV, Operation::DELETE)
7
+ end
@@ -0,0 +1,7 @@
1
+ require_relative '../apollo_commons_ruby/ViewGroup'
2
+ require_relative '../apollo_commons_ruby/Operation'
3
+
4
+ desc "Delete View Group for user"
5
+ task :delete_view_group do
6
+ handle_view_group_task(ENV, Operation::DELETE)
7
+ end
@@ -0,0 +1,7 @@
1
+ require_relative '../apollo_commons_ruby/ViewGroupComponent'
2
+ require_relative '../apollo_commons_ruby/Operation'
3
+
4
+ desc "Delete View Group Component"
5
+ task :delete_view_group_component do
6
+ handle_view_group_component_task(ENV, Operation::DELETE)
7
+ end
@@ -0,0 +1,7 @@
1
+ require_relative '../apollo_commons_ruby/ViewGroupDefinition'
2
+ require_relative '../apollo_commons_ruby/Operation'
3
+
4
+ desc "Delete View Group Definition"
5
+ task :delete_view_group_definition do
6
+ handle_view_group_definition_task(ENV, Operation::DELETE)
7
+ end
@@ -0,0 +1,7 @@
1
+ require_relative '../apollo_commons_ruby/TemplatesRakefile'
2
+ require_relative '../apollo_commons_ruby/TemplatesHelper'
3
+
4
+ desc "Deploy All templates"
5
+ task :deploy_all_templates do
6
+ deploy_all_templates()
7
+ end
@@ -0,0 +1,27 @@
1
+ require_relative '../apollo_commons_ruby/TemplatesRakefile'
2
+ require_relative '../apollo_commons_ruby/TemplatesHelper'
3
+
4
+ desc "Unit test"
5
+ task :runTests do
6
+ require 'find'
7
+ if !Dir.pwd.include? "/Users/ios-ci/.jenkins/jobs/"
8
+ puts "Make sure that you have NodeJS installed."
9
+ puts "Export the necessary functions. Eg: exports.functionName = functionName;"
10
+ puts "For running individual tests, use the command: node <filename>.js"
11
+ puts "Example: node AndroidCurrencyUtilsTest.js"
12
+ end
13
+ puts "\n"
14
+ puts "NodeJS version: "
15
+ system("node -v")
16
+ puts "\n"
17
+ Find.find(Dir.pwd + "/commons/tests/") do |file|
18
+ if (file.include? ".js" and !file.include? "TestUtils.js")
19
+ puts "Running tests from " + file.sub(Dir.pwd, '')
20
+ result = system("node " + file)
21
+ if (!result)
22
+ exec("exit 1")
23
+ end
24
+ puts "\n"
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,36 @@
1
+ require_relative '../apollo_commons_ruby/ViewGroupDefinition'
2
+ require_relative '../apollo_commons_ruby/ViewGroupComponent'
3
+ require_relative '../apollo_commons_ruby/DomainEvent'
4
+ require_relative '../apollo_commons_ruby/MarioEvent'
5
+ require_relative '../apollo_commons_ruby/Operation'
6
+
7
+ desc "Update all"
8
+ task :update_all do
9
+ environment = ENV["environment"]
10
+ tenantId = ENV["tenant_id"]
11
+ projectId = ENV["project_id"]
12
+
13
+ Dir.foreach('./configs') do |viewGroupDefinition|
14
+ next if viewGroupDefinition == '.' || viewGroupDefinition == '..' || viewGroupDefinition == '.DS_Store' || viewGroupDefinition.start_with?('0_') == true
15
+
16
+ puts "Updating definition " + viewGroupDefinition
17
+ handle_view_group_definition(viewGroupDefinition, environment, tenantId, projectId, Operation::PUT)
18
+
19
+ Dir.foreach('./configs/' + viewGroupDefinition) do |viewGroupComponent|
20
+ next if viewGroupComponent == '.' || viewGroupComponent == '..' || viewGroupComponent == 'view_group_definition_properties.json'
21
+
22
+ puts "Updating component " + viewGroupComponent
23
+ handle_view_group_component(viewGroupDefinition, environment, tenantId, projectId, viewGroupComponent, Operation::PUT)
24
+
25
+ Dir.foreach('./configs/' + viewGroupDefinition + "/" + viewGroupComponent) do |topic|
26
+ next if topic == '.' || topic == '..' || topic == 'view_group_component_properties.json'
27
+
28
+ Dir.foreach('./configs/' + viewGroupDefinition + "/" + viewGroupComponent + "/" + topic) do |eventName|
29
+ next if eventName == '.' || eventName == '..'
30
+ puts "Updating domain event for topic " + topic + " and eventName = " + eventName
31
+ handle_domain_event(viewGroupDefinition, environment, tenantId, projectId, viewGroupComponent, topic, eventName, Operation::PUT)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../apollo_commons_ruby/ViewGroupDefinition'
2
+ require_relative '../apollo_commons_ruby/ViewGroupComponent'
3
+ require_relative '../apollo_commons_ruby/DomainEvent'
4
+ require_relative '../apollo_commons_ruby/Operation'
5
+
6
+ desc "Update all Domain Events"
7
+ task :update_all_domain_events do
8
+ handle_view_group_definition_task(ENV, Operation::PUT)
9
+ handle_view_group_component_task(ENV, Operation::PUT)
10
+ viewGroupDefinition = ENV["view_group_definition"]
11
+ viewGroupComponent = ENV["view_group_component"]
12
+ environment = ENV["environment"]
13
+ tenantId = ENV["tenant_id"]
14
+ projectId = ENV["project_id"]
15
+
16
+ Dir.foreach('./configs/' + viewGroupDefinition + "/" + viewGroupComponent) do |topic|
17
+ next if topic == '.' || topic == '..' || topic == 'view_group_component_properties.json'
18
+ Dir.foreach('./configs/' + viewGroupDefinition + "/" + viewGroupComponent + "/" + topic) do |eventName|
19
+ next if eventName == '.' || eventName == '..'
20
+ puts "Updating domain event for topic " + topic + " and eventName = " + eventName
21
+ handle_domain_event(viewGroupDefinition, environment, tenantId, projectId, viewGroupComponent, topic, eventName, Operation::PUT)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,18 @@
1
+ require_relative '../apollo_commons_ruby/ViewGroupDefinition'
2
+ require_relative '../apollo_commons_ruby/ViewGroupComponent'
3
+ require_relative '../apollo_commons_ruby/Operation'
4
+
5
+ desc "Update all View Group Components"
6
+ task :update_all_view_group_components do
7
+ handle_view_group_definition_task(ENV, Operation::PUT)
8
+ viewGroupDefinition = ENV["view_group_definition"]
9
+ environment = ENV["environment"]
10
+ tenantId = ENV["tenant_id"]
11
+ projectId = ENV["project_id"]
12
+
13
+ Dir.foreach('./configs/' + viewGroupDefinition) do |component|
14
+ next if component == '.' || component == '..' || component == 'view_group_definition_properties.json'
15
+ puts "Updating component " + component
16
+ handle_view_group_component(viewGroupDefinition, environment, tenantId, projectId, component, Operation::PUT)
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ require_relative '../apollo_commons_ruby/ViewGroupDefinition'
2
+ require_relative '../apollo_commons_ruby/ViewGroupComponent'
3
+ require_relative '../apollo_commons_ruby/DomainEvent'
4
+ require_relative '../apollo_commons_ruby/Operation'
5
+
6
+ desc "Update Domain Event"
7
+ task :update_domain_event do
8
+ handle_view_group_definition_task(ENV, Operation::PUT)
9
+ handle_view_group_component_task(ENV, Operation::PUT)
10
+ handle_domain_event_task(ENV, Operation::PUT)
11
+ end
@@ -0,0 +1,42 @@
1
+ require_relative '../apollo_commons_ruby/TemplatesRakefile'
2
+ require_relative '../apollo_commons_ruby/TemplatesHelper'
3
+
4
+ desc "Update given template name to Inbox/Apollo-config"
5
+ task :update_one_template do
6
+ task_to_schedule = OpenStruct.new
7
+ task_to_schedule.environment = ENV['environment']
8
+ task_to_schedule.template_group = ENV['template_group']
9
+ task_to_schedule.language = ENV['language']
10
+ task_to_schedule.view_type = ENV['view_type']
11
+ task_to_schedule.template_name = ENV['template_name']
12
+ task_to_schedule.version = ENV['version']
13
+ task_to_schedule.tenant_id = ENV['tenant_id']
14
+ task_to_schedule.project_id = ENV['project_id']
15
+ if ENV['should_update_inbox'] == 'true'
16
+ task_to_schedule.should_update_inbox = true
17
+ else
18
+ task_to_schedule.should_update_inbox = false
19
+ end
20
+ if ENV['scope_id'] === nil
21
+ raise "scope_id is mandatory for deploying templates."
22
+ end
23
+ task_to_schedule.scope_id = ENV['scope_id']
24
+ task_to_schedule.task_id = 1
25
+
26
+ # current_dir = Dir.pwd
27
+ # if !current_dir.include? "/Users/ios-ci/.jenkins/jobs/"
28
+ # puts "This rake command is no more supported. Please use jenkins build http://iosci.corp.zeta.in:8080/job/"
29
+ # return nil
30
+ # end
31
+
32
+ if task_to_schedule.environment == nil or task_to_schedule.template_group == nil
33
+ puts "`environment`, `template_group` has to be passed. Environment = `Prod`/'PreProd'/`Staging`"
34
+ return
35
+ end
36
+
37
+ if task_to_schedule.environment.eql?("Prod")
38
+ #perform_git_checks
39
+ end
40
+
41
+ deploy_one_template(task_to_schedule)
42
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../apollo_commons_ruby/TemplatesRakefile'
2
+ require_relative '../apollo_commons_ruby/TemplatesHelper'
3
+
4
+ desc "Replace translation strings in an existing resource file from new provided translations"
5
+ task :update_translations do
6
+ # Expectations:
7
+ # 1) Source file should have traslated strings in key,translated_string format per line
8
+ # 2) Destination will be always be one of the languages added to Resources folder previously
9
+ source_csv_file_path = ENV['source_csv']
10
+ language = ENV['language']
11
+ if source_csv_file_path == nil
12
+ log_error("source_csv has to be passed.")
13
+ abort()
14
+ end
15
+
16
+ if language == nil
17
+ log_error("language has to be passed.")
18
+ abort()
19
+ end
20
+
21
+ language_file_path = "Resources/#{language}.json"
22
+ update_existing_translations(source_csv_file_path, language_file_path)
23
+
24
+ end