cloudwalk 1.14.3 → 1.15.0

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: 33fe7832c63301d92899b00ab0470140875c73fd
4
- data.tar.gz: 27a31394e1242bd30219e7c1bd211bb4611b7dcd
2
+ SHA256:
3
+ metadata.gz: 838295a5a7120b68dd5aa8be76e4753fd7d975b53eb596d57a68efa94da993e3
4
+ data.tar.gz: fede34b4874dde009ba31713a9241483e85557b65accc7e7d5c52a8ebdd64a15
5
5
  SHA512:
6
- metadata.gz: a372349fb01c4ff26ffe019a1a14405b386e7fcf3e9b8e9974e20ae15474e0b5bac4fc354ce984a3ba02dd27325b5a331168f958568cfb60ecc94e9ebd8eeada
7
- data.tar.gz: 85bd15540d1cd124159a75ca287004cc41836687f612735e556d3a61f6515fbefc1cbe358dc74af635e12fb4c352fde5d2cbf37cfbba24df04a8837c6ba54b04
6
+ metadata.gz: 0403d3c190c1a2cd2e3f16b3ccaf92795311aac6d47c083889fab786df041a2be32bf9df2f3309af755454d043aeafa01a0c70ee80df339a007ba1dadb292bd4
7
+ data.tar.gz: ce8212697573e8a0c0dc9a1845738f61533b277baa484da58c252ccd46d94894c92b749bb81b101f8c927aa89fa8de2d77395406edb0376cc1f63190695643a0
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -9,8 +9,7 @@ require_relative "cloudwalk/config"
9
9
  require_relative "cloudwalk/cw_file_json"
10
10
  require_relative "cloudwalk/deploy"
11
11
  require_relative "cloudwalk/deploy_exception"
12
- require_relative "cloudwalk/posxml/posxml_application"
13
- require_relative "cloudwalk/posxml/posxml_version"
12
+ require_relative "cloudwalk/application"
13
+ require_relative "cloudwalk/application_version"
14
14
  require_relative "cloudwalk/posxml/rake_task"
15
- require_relative "cloudwalk/ruby/ruby_application"
16
15
  require_relative "cloudwalk/ruby/rake_task"
@@ -0,0 +1,68 @@
1
+ module Cloudwalk
2
+ class Application
3
+ include Cloudwalk::ManagerHelper
4
+
5
+ # NEW
6
+ def self.find(name)
7
+ self.all.find do |app|
8
+ app["name"] == name
9
+ end
10
+ end
11
+
12
+ def self.all
13
+ if @apps
14
+ @apps
15
+ else
16
+ response = JSON.parse(Net::HTTP.get(URI("#{self.host}/v1/apps?access_token=#{self.token}&per_page=100")))
17
+ raise ManagerException.new(response["message"]) if response["message"]
18
+
19
+ total_pages = response["pagination"]["total_pages"].to_i
20
+ @apps = response["apps"].collect {|r| r["app"] }
21
+ (total_pages - 1).times do |page|
22
+ url = "#{self.host}/v1/apps?access_token=#{self.token}&per_page=100&page=#{page+2}"
23
+ response = JSON.parse(Net::HTTP.get(URI(url)))
24
+ raise ManagerException.new(response["message"]) if response["message"]
25
+
26
+ @apps.concat(response["apps"].collect {|r| r["app"] })
27
+ end
28
+ @apps
29
+ end
30
+ end
31
+
32
+ # BASE
33
+
34
+ def self.get(id)
35
+ url = "#{self.host}/v1/apps/#{id}?access_token=#{self.token}"
36
+ response = JSON.parse(Net::HTTP.get(URI(url)))
37
+ raise ManagerException.new(response["message"]) if response["message"]
38
+
39
+ response["app"]
40
+ end
41
+
42
+ def self.get_name(id)
43
+ get(id)["name"]
44
+ end
45
+
46
+ def self.update(app_id, bytecode, app_parameters = nil)
47
+ url = "#{self.host}/v1/apps/#{app_id}?access_token=#{self.token}"
48
+ uri = URI(url)
49
+ form = {"bytecode" => Base64.strict_encode64(bytecode)}
50
+ response = nil
51
+
52
+ if app_parameters
53
+ form["authorizer_url"] = app_parameters["authorizer_url"]
54
+ form["description"] = app_parameters["description"]
55
+ form["pos_display_label"] = app_parameters["pos_display_label"]
56
+ form["displayable"] = app_parameters["pos_display_label"] != "X"
57
+ end
58
+
59
+ Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
60
+ request = Net::HTTP::Put.new(uri)
61
+ request.set_form_data(form)
62
+ response = http.request(request)
63
+ end
64
+ [response.code.to_i == 200, response]
65
+ end
66
+
67
+ end
68
+ end
@@ -0,0 +1,74 @@
1
+ module Cloudwalk
2
+ class ApplicationVersion
3
+ include Cloudwalk::ManagerHelper
4
+
5
+ def self.get_or_create(app, version)
6
+ response = JSON.parse(Net::HTTP.get(URI("#{self.host}/v1/apps/#{app_id}/versions?access_token=#{self.token}&per_page=100")))
7
+ raise ManagerException.new(response["message"]) if response["message"]
8
+
9
+ #TODO
10
+ #`curl -X GET "https://api-staging.cloudwalk.io/v1/apps/posxml/3082/versions?access_token=#{self.token}`
11
+ end
12
+
13
+ def self.all(app_id)
14
+ response = JSON.parse(Net::HTTP.get(URI("#{self.host}/v1/apps/#{app_id}/versions?access_token=#{self.token}&per_page=100")))
15
+ raise ManagerException.new(response["message"]) if response["message"]
16
+
17
+ total_pages = response["pagination"]["total_pages"].to_i
18
+ versions = response["appversions"]
19
+
20
+ (total_pages - 1).times do |page|
21
+ url = "#{self.host}/v1/apps/#{app_id}/versions?access_token=#{self.token}&per_page=100&page=#{page+2}"
22
+ response = JSON.parse(Net::HTTP.get(URI(url)))
23
+ raise ManagerException.new(response["message"]) if response["message"]
24
+
25
+ versions.concat(response["appversions"])
26
+ end
27
+ versions
28
+ end
29
+
30
+ def self.get(app_id, id)
31
+ url = "#{self.host}/v1/apps/#{app_id}/versions/#{id}?access_token=#{token}"
32
+ response = JSON.parse(Net::HTTP.get(URI(url)))
33
+ if response["message"]
34
+ raise ManagerException.new(response["message"])
35
+ else
36
+ response["app_version"]
37
+ end
38
+ end
39
+
40
+
41
+ # NEW
42
+ def self.find(app_name, version_name)
43
+ applications = Cloudwalk::Application.all
44
+ application = applications.find { |app_json| app_json["name"] == xml2posxml(app_name) }
45
+ versions = Cloudwalk::ApplicationVersion.all(application["id"])
46
+ version = versions.find { |json| json["app_version"]["number"] == version_name }
47
+
48
+ [application, (version && version["app_version"])]
49
+ end
50
+
51
+ # NEW B4
52
+ def self.update(app_id, version_id, bytecode, app_parameters = nil)
53
+ url = "#{self.host}/v1/apps/#{app_id}/versions?access_token=#{self.token}"
54
+ uri = URI(url)
55
+ form = {"bytecode" => Base64.strict_encode64(bytecode)}
56
+ response = nil
57
+
58
+ if app_parameters
59
+ form["authorizer_url"] = app_parameters["authorizer_url"]
60
+ form["number"] = app_parameters["version"]
61
+ form["displayable"] = app_parameters["displayable"]
62
+ form["pos_display_label"] = app_parameters["pos_display_label"]
63
+ end
64
+
65
+ Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
66
+ request = Net::HTTP::Post.new(uri)
67
+ request.set_form_data(form)
68
+ response = http.request(request)
69
+ end
70
+ [response.code.to_i == 201, response]
71
+ end
72
+ end
73
+ end
74
+
@@ -49,6 +49,13 @@ module Cloudwalk
49
49
  false
50
50
  end
51
51
 
52
+ def self.convert_old_cwfile(cwfile)
53
+ if cwfile["apps"].nil?
54
+ cwfile = Hash.[]("apps",[cwfile])
55
+ end
56
+ cwfile
57
+ end
58
+
52
59
  # Load Scenarios
53
60
  # 1. Pure true
54
61
  # - Cwfile.json exists.
@@ -83,7 +90,7 @@ module Cloudwalk
83
90
  # - Cwfile.json.lock not exists.
84
91
  # R: ASK: Cwfile.json not exists, should I create a skeleton or get the last versions available for the files we have here?
85
92
  def self.setup(without_lock_check = false)
86
- if self.cwfile = load_cwfile
93
+ if self.cwfile = self.convert_old_cwfile(load_cwfile)
87
94
  if without_lock_check
88
95
  true
89
96
  elsif CwFileJson.exists_lock?
@@ -108,21 +115,17 @@ module Cloudwalk
108
115
 
109
116
  def self.lock_build
110
117
  config = []
111
- if self.ruby?
112
- if app = Cloudwalk::Ruby::RubyApplication.find(self.cwfile["name"])
113
- config << build_application(:ruby, app)
118
+ self.cwfile["apps"].each do |app_local|
119
+ app, version = Cloudwalk::ApplicationVersion.find(app_local["name"], app_local["version"])
120
+ if app && version
121
+ detail = Cloudwalk::ApplicationVersion.get(app["id"], version["id"])
122
+ config << build_application(app, version, detail["module_ids"])
123
+ elsif app
124
+ app = Cloudwalk::Application.find(xml2posxml(app_local["name"]))
125
+
126
+ config << build_application(app, app_local["version"], app_local["modules"])
114
127
  else
115
- # TODO App not found, what to do?
116
- end
117
- else
118
- self.cwfile["apps"].each do |app_local|
119
- app, version = Cloudwalk::Posxml::PosxmlVersion.find(app_local["name"], app_local["version"])
120
- if app && version
121
- detail = Cloudwalk::Posxml::PosxmlVersion.get(app["id"], version["id"])
122
- config << build_application(:posxml, app, version, detail["module_ids"])
123
- else
124
- raise Cloudwalk::CwFileJsonException.new("App (#{app_local["name"]}) Version (#{app_local["version"]}) not found")
125
- end
128
+ raise Cloudwalk::CwFileJsonException.new("App (#{app_local["name"]}) Version (#{app_local["version"]}) not found")
126
129
  end
127
130
  end
128
131
 
@@ -130,35 +133,26 @@ module Cloudwalk
130
133
  end
131
134
 
132
135
  def self.build_module(mod)
133
- if module_version = Cloudwalk::Posxml::PosxmlVersion.get(mod["app_id"], mod["version_id"])
136
+ app, ver = Cloudwalk::ApplicationVersion.find(mod.first, mod.last)
137
+ if module_version = Cloudwalk::ApplicationVersion.get(app["id"], ver["id"])
134
138
  {
135
- "name" => Cloudwalk::Posxml::PosxmlApplication.get_name(module_version["app_id"]),
139
+ "name" => Cloudwalk::Application.get_name(app["id"]),
136
140
  "version" => module_version["number"],
137
141
  "id" => module_version["app_id"],
138
142
  "version_id" => module_version["id"]
139
143
  }
140
144
  else
141
- raise Cloudwalk::CwFileJsonException.new("App (#{mod['app_id']}) Module Version (#{mod['version_id']}) not found")
145
+ raise Cloudwalk::CwFileJsonException.new("App (#{mod.first}) Module Version (#{mod.last}) not found")
142
146
  end
143
147
  end
144
148
 
145
- def self.build_application(type, app, version = nil, modules_remote = nil)
146
- if type == :ruby
147
- {
148
- "name" => app["name"],
149
- "id" => app["id"],
150
- "modules" => [],
151
- "version" => "1.0.0"
152
- }
153
- else
154
- {
155
- "name" => app["name"],
156
- "id" => app["id"],
157
- "modules" => modules_remote.collect {|mod| build_module(mod)},
158
- "version" => version["number"],
159
- "version_id" => version["id"]
160
- }
161
- end
149
+ def self.build_application(app, version = nil, modules_remote = nil)
150
+ {
151
+ "name" => app["name"],
152
+ "id" => app["id"],
153
+ "modules" => modules_remote.collect {|mod| build_module(mod)},
154
+ "version" => version["number"] || version,
155
+ }
162
156
  end
163
157
 
164
158
  def self.exists?
@@ -256,11 +250,11 @@ module Cloudwalk
256
250
 
257
251
  if remote_app
258
252
  remote_posxml_app = remote_app["posxml_app"]
259
- remote_versions = Cloudwalk::Posxml::PosxmlVersion.all(remote_posxml_app["id"])
253
+ remote_versions = Cloudwalk::ApplicationVersion.all(remote_posxml_app["id"])
260
254
  remote_version_json = remote_versions.find { |json| json["app_version"]["number"] == version }
261
255
 
262
256
  if remote_version_json && (remote_version = remote_version_json["app_version"])
263
- remote_version_detail = Cloudwalk::Posxml::PosxmlVersion.get(remote_posxml_app["id"], remote_version["id"])
257
+ remote_version_detail = Cloudwalk::ApplicationVersion.get(remote_posxml_app["id"], remote_version["id"])
264
258
  # TODO: Check if application exists locally
265
259
  build_application(local_app, config, remote_posxml_app, remote_version, remote_version_detail["app_version"]["module_ids"])
266
260
  else
@@ -30,7 +30,7 @@ module Cloudwalk
30
30
 
31
31
  app_cwfile = self.cwfile["apps"].find {|config| config["name"] == posxml2xml(posxml) }
32
32
 
33
- ret, response = Cloudwalk::Posxml::PosxmlVersion.update(
33
+ ret, response = Cloudwalk::ApplicationVersion.update(
34
34
  app_lock["id"], app_lock["version_id"], File.read(path), app_cwfile
35
35
  )
36
36
  if ret
@@ -42,7 +42,7 @@ module Cloudwalk
42
42
  end
43
43
 
44
44
  def name
45
- self.cwfile["name"]
45
+ self.cwfile["apps"].first["name"]
46
46
  end
47
47
 
48
48
  def ruby
@@ -57,8 +57,8 @@ module Cloudwalk
57
57
  raise Cloudwalk::DeployException.new("application #{self.name} not found at Manager, please create it")
58
58
  end
59
59
 
60
- ret, response = Cloudwalk::Ruby::RubyApplication.update(
61
- app_lock["id"], File.read(zip), self.cwfile
60
+ ret, response = Cloudwalk::ApplicationVersion.update(
61
+ app_lock["id"], app_lock["version_id"], File.read(zip), self.cwfile["apps"].first
62
62
  )
63
63
  if ret
64
64
  STDOUT.write("\r=> Success Deployed \n")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudwalk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.3
4
+ version: 1.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thiago Scalone
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-02 00:00:00.000000000 Z
11
+ date: 2020-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -54,6 +54,8 @@ files:
54
54
  - exe/x86_64-pc-linux-gnu
55
55
  - exe/x86_64-w64-mingw32.exe
56
56
  - lib/cloudwalk.rb
57
+ - lib/cloudwalk/application.rb
58
+ - lib/cloudwalk/application_version.rb
57
59
  - lib/cloudwalk/config.rb
58
60
  - lib/cloudwalk/cw_file_json.rb
59
61
  - lib/cloudwalk/cw_file_json_exception.rb
@@ -61,11 +63,8 @@ files:
61
63
  - lib/cloudwalk/deploy_exception.rb
62
64
  - lib/cloudwalk/manager_exception.rb
63
65
  - lib/cloudwalk/manager_helper.rb
64
- - lib/cloudwalk/posxml/posxml_application.rb
65
- - lib/cloudwalk/posxml/posxml_version.rb
66
66
  - lib/cloudwalk/posxml/rake_task.rb
67
67
  - lib/cloudwalk/ruby/rake_task.rb
68
- - lib/cloudwalk/ruby/ruby_application.rb
69
68
  homepage: https://cloudwalk.io/cli
70
69
  licenses:
71
70
  - MIT
@@ -85,8 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
84
  - !ruby/object:Gem::Version
86
85
  version: '0'
87
86
  requirements: []
88
- rubyforge_project:
89
- rubygems_version: 2.6.14
87
+ rubygems_version: 3.0.6
90
88
  signing_key:
91
89
  specification_version: 4
92
90
  summary: CLI for Cloudwalk projects
@@ -1,40 +0,0 @@
1
- module Cloudwalk
2
- module Posxml
3
- class PosxmlApplication
4
- include Cloudwalk::ManagerHelper
5
-
6
- def self.all
7
- if @apps
8
- @apps
9
- else
10
- response = JSON.parse(Net::HTTP.get(URI("#{self.host}/v1/apps/posxml?access_token=#{self.token}&per_page=100")))
11
- raise ManagerException.new(response["message"]) if response["message"]
12
-
13
- total_pages = response["pagination"]["total_pages"].to_i
14
- apps = response["posxmlapps"]
15
- (total_pages - 1).times do |page|
16
- url = "#{self.host}/v1/apps/posxml?access_token=#{self.token}&per_page=100&page=#{page+2}"
17
- response = JSON.parse(Net::HTTP.get(URI(url)))
18
- raise ManagerException.new(response["message"]) if response["message"]
19
-
20
- apps.concat(response["posxmlapps"])
21
- end
22
- @apps = apps
23
- end
24
- end
25
-
26
- def self.get(id)
27
- url = "#{self.host}/v1/apps/posxml/#{id}?access_token=#{self.token}"
28
- response = JSON.parse(Net::HTTP.get(URI(url)))
29
- raise ManagerException.new(response["message"]) if response["message"]
30
-
31
- response["posxml_app"]
32
- end
33
-
34
- def self.get_name(id)
35
- get(id)["name"]
36
- end
37
- end
38
- end
39
- end
40
-
@@ -1,77 +0,0 @@
1
- module Cloudwalk
2
- module Posxml
3
- class PosxmlVersion
4
- include Cloudwalk::ManagerHelper
5
-
6
- def self.get_or_create(app, version)
7
- response = JSON.parse(Net::HTTP.get(URI("#{self.host}/v1/apps/posxml/#{app_id}/versions?access_token=#{self.token}&per_page=100")))
8
- raise ManagerException.new(response["message"]) if response["message"]
9
-
10
- #TODO
11
- #`curl -X GET "https://api-staging.cloudwalk.io/v1/apps/posxml/3082/versions?access_token=#{self.token}`
12
- end
13
-
14
- def self.all(app_id)
15
- response = JSON.parse(Net::HTTP.get(URI("#{self.host}/v1/apps/posxml/#{app_id}/versions?access_token=#{self.token}&per_page=100")))
16
- raise ManagerException.new(response["message"]) if response["message"]
17
-
18
- total_pages = response["pagination"]["total_pages"].to_i
19
- versions = response["appversions"]
20
-
21
- (total_pages - 1).times do |page|
22
- url = "#{self.host}/v1/apps/posxml/#{app_id}/versions?access_token=#{self.token}&per_page=100&page=#{page+2}"
23
- response = JSON.parse(Net::HTTP.get(URI(url)))
24
- raise ManagerException.new(response["message"]) if response["message"]
25
-
26
- versions.concat(response["posxmlapps"])
27
- end
28
- versions
29
- end
30
-
31
- def self.get(app_id, id)
32
- url = "#{self.host}/v1/apps/posxml/#{app_id}/versions/#{id}?access_token=#{token}"
33
- response = JSON.parse(Net::HTTP.get(URI(url)))
34
- if response["message"]
35
- raise ManagerException.new(response["message"])
36
- else
37
- response["app_version"]
38
- end
39
- end
40
-
41
-
42
- # NEW
43
- def self.find(app_name, version_name)
44
- applications = Cloudwalk::Posxml::PosxmlApplication.all
45
- app_remote = applications.find { |app_json| app_json["posxml_app"]["name"] == xml2posxml(app_name) }
46
- app_posxml = app_remote["posxml_app"]
47
- versions = Cloudwalk::Posxml::PosxmlVersion.all(app_posxml["id"])
48
- version = versions.find { |json| json["app_version"]["number"] == version_name }
49
-
50
- [app_posxml, (version && version["app_version"])]
51
- end
52
-
53
- # NEW B4
54
- def self.update(app_id, version_id, bytecode, app_parameters = nil)
55
- url = "#{self.host}/v1/apps/posxml/#{app_id}/versions/#{version_id}?access_token=#{self.token}"
56
- uri = URI(url)
57
- form = {"bytecode" => Base64.strict_encode64(bytecode)}
58
- response = nil
59
-
60
- if app_parameters
61
- form["authorizer_url"] = app_parameters["authorizer_url"]
62
- form["description"] = app_parameters["description"]
63
- form["pos_display_label"] = app_parameters["pos_display_label"]
64
- form["displayable"] = app_parameters["pos_display_label"] != "X"
65
- end
66
-
67
- Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
68
- request = Net::HTTP::Put.new(uri)
69
- request.set_form_data(form)
70
- response = http.request(request)
71
- end
72
- [response.code.to_i == 200, response]
73
- end
74
- end
75
- end
76
- end
77
-
@@ -1,70 +0,0 @@
1
- module Cloudwalk
2
- module Ruby
3
- class RubyApplication
4
- include Cloudwalk::ManagerHelper
5
-
6
- # NEW
7
- def self.find(name)
8
- self.all.find do |app|
9
- app["name"] == name
10
- end
11
- end
12
-
13
- def self.all
14
- if @apps
15
- @apps
16
- else
17
- response = JSON.parse(Net::HTTP.get(URI("#{self.host}/v1/apps/ruby?access_token=#{self.token}&per_page=100")))
18
- raise ManagerException.new(response["message"]) if response["message"]
19
-
20
- total_pages = response["pagination"]["total_pages"].to_i
21
- @apps = response["rubyapps"].collect {|r| r["ruby_app"] }
22
- (total_pages - 1).times do |page|
23
- url = "#{self.host}/v1/apps/ruby?access_token=#{self.token}&per_page=100&page=#{page+2}"
24
- response = JSON.parse(Net::HTTP.get(URI(url)))
25
- raise ManagerException.new(response["message"]) if response["message"]
26
-
27
- @apps.concat(response["ruby_app"])
28
- end
29
- @apps
30
- end
31
- end
32
-
33
- # BASE
34
-
35
- def self.get(id)
36
- url = "#{self.host}/v1/apps/ruby/#{id}?access_token=#{self.token}"
37
- response = JSON.parse(Net::HTTP.get(URI(url)))
38
- raise ManagerException.new(response["message"]) if response["message"]
39
-
40
- response["ruby_app"]
41
- end
42
-
43
- def self.get_name(id)
44
- get(id)["name"]
45
- end
46
-
47
- def self.update(app_id, bytecode, app_parameters = nil)
48
- url = "#{self.host}/v1/apps/ruby/#{app_id}?access_token=#{self.token}"
49
- uri = URI(url)
50
- form = {"bytecode" => Base64.strict_encode64(bytecode)}
51
- response = nil
52
-
53
- if app_parameters
54
- form["authorizer_url"] = app_parameters["authorizer_url"]
55
- form["description"] = app_parameters["description"]
56
- form["pos_display_label"] = app_parameters["pos_display_label"]
57
- form["displayable"] = app_parameters["pos_display_label"] != "X"
58
- end
59
-
60
- Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
61
- request = Net::HTTP::Put.new(uri)
62
- request.set_form_data(form)
63
- response = http.request(request)
64
- end
65
- [response.code.to_i == 200, response]
66
- end
67
- end
68
- end
69
- end
70
-