raas-client-rails 0.1.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.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +48 -0
- data/Rakefile +8 -0
- data/app/assets/config/raas_client_rails_manifest.js +1 -0
- data/app/assets/stylesheets/raas/client/rails/application.css +15 -0
- data/app/controllers/raas/client/rails/application_controller.rb +8 -0
- data/app/controllers/raas/client/rails/raas_controller.rb +135 -0
- data/app/controllers/raas/client/rails/rest_client.rb +160 -0
- data/app/helpers/raas/client/rails/application_helper.rb +8 -0
- data/app/helpers/raas/client/rails/raa_s_helper.rb +4 -0
- data/app/jobs/raas/client/rails/application_job.rb +8 -0
- data/app/mailers/raas/client/rails/application_mailer.rb +10 -0
- data/app/models/raas/client/rails/application_record.rb +9 -0
- data/app/views/layouts/raas/client/rails/application.html.erb +15 -0
- data/config/routes.rb +9 -0
- data/lib/raas/client/rails/engine.rb +16 -0
- data/lib/raas/client/rails/version.rb +7 -0
- data/lib/raas/client/rails.rb +9 -0
- data/lib/tasks/raas/client/rails_tasks.rake +4 -0
- metadata +79 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 94c1331c5b736d7cec268742acd323958041d1a1ee484a5064594e8329ac9898
|
4
|
+
data.tar.gz: aaef60ac317c3ede890f2558f22e1887ddc209390856d54231c180239acf1013
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0b3b5c343c7b6be739cb2ebadeca642767370e0daa73820c9f6784ea23a21d94779b061674ec8a97c22ef2c1f582b44df85512718f4e621d840972a5f8d1b943
|
7
|
+
data.tar.gz: 5c2e4dd67fd2d05ceb8c82df9016ed6c4d60162db928027f4ac8adff044c5646c6d22ef3ecc8c62d590b3dce7bd00c53bdf80a50ad302e34854382a987c38460
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2023 Yasuhiro Miyake
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
# Raas::Client::Rails
|
2
|
+
|
3
|
+
Adding extra endpoints to access RaaS. These endpoints allows you to fetch external token to access RaaS or enables you to invoke specific functions through them.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
### Set your Credentials
|
8
|
+
|
9
|
+
`landscape`, `application`, `token` should be set correctly.
|
10
|
+
You can manage these variables by adding external files such as **RaaS.yml** on your parents app. Of course, you can directly hard code these values on you app as follows.
|
11
|
+
These credentials are provided by SuTech. Please, ask [SuTech](https://www.sutech.co.jp/) adminisators for further inquiries.
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
Raas::Client::Rails::Engine.config.raas_client_rails.landscape = 'LANDSCAPE'
|
15
|
+
Raas::Client::Rails::Engine.config.raas_client_rails.application = 'APP'
|
16
|
+
Raas::Client::Rails::Engine.config.raas_client_rails.token = 'TOKEN VALUE'
|
17
|
+
```
|
18
|
+
|
19
|
+
This condifuration is **mandatory** please, do not forget before you start interacting with APIs below.
|
20
|
+
|
21
|
+
### APIs
|
22
|
+
|
23
|
+
Once you install your gem, your application has several extra endpoints to interact with RaaS.
|
24
|
+
|
25
|
+
- `/raas/report/session` : Generate external session by using your credentials for report
|
26
|
+
- `/raas/datatraveler/session` : Generate external session by using your credentials for report
|
27
|
+
- `/raas/health` : Ask RaaS to get current health condition
|
28
|
+
|
29
|
+
## Installation
|
30
|
+
|
31
|
+
Add this line to your application's Gemfile:
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
gem "raas-client-rails"
|
35
|
+
```
|
36
|
+
|
37
|
+
And then execute:
|
38
|
+
```bash
|
39
|
+
$ bundle
|
40
|
+
```
|
41
|
+
|
42
|
+
Or install it yourself as:
|
43
|
+
```bash
|
44
|
+
$ gem install raas-client-rails
|
45
|
+
```
|
46
|
+
|
47
|
+
## License
|
48
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
//= link_directory ../stylesheets/raas/client/rails .css
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
+
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
9
|
+
* compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
|
10
|
+
* files in this directory. Styles in this file should be added after the last require_* statement.
|
11
|
+
* It is generally better to create a new file per style scope.
|
12
|
+
*
|
13
|
+
*= require_tree .
|
14
|
+
*= require_self
|
15
|
+
*/
|
@@ -0,0 +1,135 @@
|
|
1
|
+
module Raas::Client::Rails
|
2
|
+
|
3
|
+
require_relative 'rest_client'
|
4
|
+
|
5
|
+
class RaasController < ApplicationController
|
6
|
+
|
7
|
+
MSA_REPORT = "report";
|
8
|
+
MSA_DT = "datatraveler";
|
9
|
+
|
10
|
+
#/raas/health
|
11
|
+
def health()
|
12
|
+
prepare(params)
|
13
|
+
render plain: "Moving #{@tenant}/#{@subsystem}";
|
14
|
+
end
|
15
|
+
|
16
|
+
def prepare(params)
|
17
|
+
# seven arguments are needed to make this work
|
18
|
+
application = Raas::Client::Rails::Engine.config.raas_client_rails.landscape
|
19
|
+
landscape = Raas::Client::Rails::Engine.config.raas_client_rails.application
|
20
|
+
token = Raas::Client::Rails::Engine.config.raas_client_rails.token
|
21
|
+
@backUrl = params[:backUrl]
|
22
|
+
@subUrl = params[:subUrl]
|
23
|
+
@tenant = params[:tenant]
|
24
|
+
@subsystem = params[:sub]
|
25
|
+
@restClient = RestClient.new(application,landscape,token)
|
26
|
+
end
|
27
|
+
|
28
|
+
def report_session()
|
29
|
+
Rails.logger.warn("session parameter=#{params}");
|
30
|
+
prepare(params)
|
31
|
+
response = @restClient.createExternalSession(MSA_REPORT,@backUrl,@subUrl,@tenant,@subsystem)
|
32
|
+
render json: response.body
|
33
|
+
end
|
34
|
+
|
35
|
+
def datatraveler_session()
|
36
|
+
Rails.logger.warn("session parameter=#{params}")
|
37
|
+
prepare(params)
|
38
|
+
response = @restClient.createExternalSession(MSA_DT,@backUrl,@subUrl,@tenant,@subsystem)
|
39
|
+
render json: response.body
|
40
|
+
end
|
41
|
+
|
42
|
+
MIME_TYPE_HTML = "html"
|
43
|
+
MIME_TYPE_FILE = "file"
|
44
|
+
MIME_TYPE_JSON = "json"
|
45
|
+
|
46
|
+
#/raas/get
|
47
|
+
def get()
|
48
|
+
prepare(params)
|
49
|
+
path = params[:path]
|
50
|
+
parameters = params[:parameters]
|
51
|
+
mimeType = params[:mimeType]
|
52
|
+
fileName = params[:fileName]
|
53
|
+
type = params[:type]
|
54
|
+
#by default return HTML
|
55
|
+
if mimeType.nil?
|
56
|
+
mimeType = MIME_TYPE_HTML
|
57
|
+
end
|
58
|
+
#by default return download.pdf
|
59
|
+
if fileName.nil?
|
60
|
+
fileName = "download"
|
61
|
+
end
|
62
|
+
if type.nil?
|
63
|
+
type = "application/pdf"
|
64
|
+
end
|
65
|
+
#by default empty Hash if nothing is assigned
|
66
|
+
if parameters.nil?
|
67
|
+
payload = Hash.new
|
68
|
+
else
|
69
|
+
payload = parameters
|
70
|
+
end
|
71
|
+
Rails.logger.warn("get path=#{path} parameters=#{payload}");
|
72
|
+
response = @restClient.get(path,payload,@tenant,@subsystem)
|
73
|
+
handleMime(mimeType, fileName, type, response)
|
74
|
+
end
|
75
|
+
|
76
|
+
# How you return the value? This can be changed by passing mimeType through parameter
|
77
|
+
def handleMime(mimeType, fileName,type, response)
|
78
|
+
case mimeType
|
79
|
+
when MIME_TYPE_HTML
|
80
|
+
#sanitize response automatically
|
81
|
+
render html: response.body
|
82
|
+
when MIME_TYPE_JSON
|
83
|
+
render json: response.body
|
84
|
+
when MIME_TYPE_FILE
|
85
|
+
send_data(response, filename: fileName, type: type)
|
86
|
+
end
|
87
|
+
# p "#{fileName} #{type} #{mimeType}"
|
88
|
+
end
|
89
|
+
|
90
|
+
#/raas/delete
|
91
|
+
def delete()
|
92
|
+
prepare(params)
|
93
|
+
path = params[:path]
|
94
|
+
parameters = params[:parameters]
|
95
|
+
if parameters.nil?
|
96
|
+
payload = nil
|
97
|
+
else
|
98
|
+
payload = JSON.parse(parameters)
|
99
|
+
end
|
100
|
+
Rails.logger.warn("delete path=#{path} parameters=#{parameters}");
|
101
|
+
return @restClient.delete(path,payload,@tenant,@subsystem)
|
102
|
+
end
|
103
|
+
|
104
|
+
#/raas/post
|
105
|
+
def post()
|
106
|
+
prepare(params)
|
107
|
+
path = params[:path]
|
108
|
+
requestBody = params[:requestbody]
|
109
|
+
if requestBody.nil?
|
110
|
+
payload = nil
|
111
|
+
else
|
112
|
+
payload = JSON.parse(requestBody)
|
113
|
+
end
|
114
|
+
Rails.logger.warn("post path=#{path} requestBody=#{requestBody}");
|
115
|
+
response = @restClient.post(path,payload,@tenant,@subsystem)
|
116
|
+
return response.body;
|
117
|
+
end
|
118
|
+
|
119
|
+
#/raas/put
|
120
|
+
def put()
|
121
|
+
prepare(params)
|
122
|
+
path = params[:path]
|
123
|
+
requestBody = params[:requestbody]
|
124
|
+
if requestBody.nil?
|
125
|
+
payload = nil
|
126
|
+
else
|
127
|
+
payload = JSON.parse(requestBody)
|
128
|
+
end
|
129
|
+
Rails.logger.warn("post path=#{path} requestBody=#{requestBody}");
|
130
|
+
response = @restClient.put(path,payload,@tenant,@subsystem)
|
131
|
+
return response.body;
|
132
|
+
end
|
133
|
+
|
134
|
+
end
|
135
|
+
end
|
@@ -0,0 +1,160 @@
|
|
1
|
+
module Raas::Client::Rails
|
2
|
+
require 'net/http'
|
3
|
+
require 'uri'
|
4
|
+
require 'json'
|
5
|
+
require 'securerandom'
|
6
|
+
|
7
|
+
# Rest Client for RaaS
|
8
|
+
class RestClient
|
9
|
+
GET = "get"
|
10
|
+
POST = "post"
|
11
|
+
PUT = "put"
|
12
|
+
DELETE = "delete"
|
13
|
+
APEX_DOMAIN = "functions.asaservice.inc";
|
14
|
+
|
15
|
+
def initialize(application,landscape,token)
|
16
|
+
@application = application
|
17
|
+
@landscape = landscape
|
18
|
+
@token = token
|
19
|
+
end
|
20
|
+
|
21
|
+
# ResponseEntity<String> resp = raasClient.createExternalSession(Constant.MSA_REPORT,req.getBackUrl(),req.getSubUrl(), saasContextProvider.getTenant(), saasContextProvider.getSub());
|
22
|
+
|
23
|
+
|
24
|
+
def createExternalSession(msa,backUrl,subUrl,tenant,subsystem)
|
25
|
+
body = Hash.new
|
26
|
+
body["backUrl"] = backUrl
|
27
|
+
body["subUrl"] = subUrl
|
28
|
+
body["tenant"] = tenant
|
29
|
+
body["sub"] = subsystem
|
30
|
+
return proxy(body,POST,"/#{msa}/external/session",nil,@token)
|
31
|
+
end
|
32
|
+
|
33
|
+
def getUserToken()
|
34
|
+
#No trace level... so that adding [TRACE] for filtering
|
35
|
+
Rails.logger.debug("[TRACE] getUserToken is started");
|
36
|
+
#Use Rails default cache system, this simply use cache otherwise fetch and store
|
37
|
+
Rails.logger.debug("Attempt to recycle token");
|
38
|
+
cacheName = "#{@tenant}+++#{@sub}"
|
39
|
+
@@t = @tenant
|
40
|
+
@@s = @sub
|
41
|
+
Rails.logger.debug("Cache name is #{cacheName}")
|
42
|
+
# p cacheName
|
43
|
+
return token = Rails.cache.fetch(cacheName) do
|
44
|
+
Rails.logger.debug("No cache found, fetch it by api");
|
45
|
+
Rails.logger.debug("tenant #=> #{@@t} / sub #=> #{@@s}")
|
46
|
+
response = getUserTokenImpl( "report" , @@t , @@s);
|
47
|
+
Rails.logger.debug(response.body)
|
48
|
+
return JSON.parse(response.body);
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# fetch token from RaaS because no cache
|
53
|
+
def getUserTokenImpl(msa,tenant,sub)
|
54
|
+
body = Hash.new
|
55
|
+
body["tenant"] = tenant
|
56
|
+
body["sub"] = sub
|
57
|
+
response = proxy(body,POST,"/#{msa}/external/token",nil,@token);
|
58
|
+
end
|
59
|
+
|
60
|
+
def get(requestUrl, params,tenant,sub)
|
61
|
+
@tenant = tenant
|
62
|
+
@sub = sub
|
63
|
+
json = getUserToken()
|
64
|
+
return proxy(nil, GET,requestUrl,params,json["token"]);
|
65
|
+
end
|
66
|
+
|
67
|
+
def delete(requestUrl, params,tenant,sub)
|
68
|
+
@tenant = tenant
|
69
|
+
@sub = sub
|
70
|
+
json = getUserToken()
|
71
|
+
return proxy(nil, DELETE,requestUrl,params,json["token"]);
|
72
|
+
end
|
73
|
+
|
74
|
+
def put(requestUrl,body,tenant,sub)
|
75
|
+
@tenant = tenant
|
76
|
+
@sub = sub
|
77
|
+
json = getUserToken()
|
78
|
+
return proxy(body , PUT,requestUrl,nil,json["token"]);
|
79
|
+
end
|
80
|
+
|
81
|
+
def post(requestUrl,body,tenant,sub)
|
82
|
+
@tenant = tenant
|
83
|
+
@sub = sub
|
84
|
+
json = getUserToken()
|
85
|
+
return proxy(body , POST,requestUrl,nil,json["token"]);
|
86
|
+
end
|
87
|
+
|
88
|
+
def proxy(body,method,requestUrl,params,token)
|
89
|
+
Rails.logger.warn("method:#{method} url:#{requestUrl} token:#{token} params:#{params}" );
|
90
|
+
#TraceID seems to be different... is it OK!?
|
91
|
+
traceId = SecureRandom.uuid;
|
92
|
+
Rails.logger.debug("[TRACE] traceId=#{traceId}")
|
93
|
+
# p "token: #{token}"
|
94
|
+
domain = decideDomain();
|
95
|
+
uri = "https://#{domain}#{requestUrl}"
|
96
|
+
url = URI.parse(uri)
|
97
|
+
unless params.nil?
|
98
|
+
#should I do like this!?
|
99
|
+
parameters_hash = params.to_unsafe_h
|
100
|
+
url.query = URI.encode_www_form(parameters_hash) unless params.nil?
|
101
|
+
end
|
102
|
+
# replacing context path form urI to match actual gateway URI
|
103
|
+
headers = {
|
104
|
+
'TRACE' => traceId,
|
105
|
+
'Content-Type' => 'application/json',
|
106
|
+
'Accept' => 'application/json',
|
107
|
+
'Authorization' => "Bearer #{token}"
|
108
|
+
}
|
109
|
+
#restTemplate.exchange alternative
|
110
|
+
case method
|
111
|
+
when GET
|
112
|
+
httpEntity = Net::HTTP::Get.new(url.to_s,headers)
|
113
|
+
when POST
|
114
|
+
httpEntity = Net::HTTP::Post.new(url.to_s,headers)
|
115
|
+
when DELETE
|
116
|
+
httpEntity = Net::HTTP::Delete.new(url.to_s,headers)
|
117
|
+
when PUT
|
118
|
+
httpEntity = Net::HTTP::Put.new(url.to_s,headers)
|
119
|
+
else
|
120
|
+
puts "method is not be defined..."
|
121
|
+
end
|
122
|
+
httpEntity['Accept-Encoding'] = '' #delete acceptEncoding here
|
123
|
+
httpEntity.body = body.to_json if body
|
124
|
+
retry_count = 0
|
125
|
+
max_retries = 4
|
126
|
+
host = URI(url.to_s).host
|
127
|
+
port = URI(url.to_s).port
|
128
|
+
begin
|
129
|
+
Rails.logger.debug(url.to_s);
|
130
|
+
Rails.logger.debug(body);
|
131
|
+
Rails.logger.debug(httpEntity);
|
132
|
+
http = Net::HTTP.new(host,port)
|
133
|
+
http.use_ssl = true
|
134
|
+
# p url.to_s
|
135
|
+
response = http.request(httpEntity)
|
136
|
+
Rails.logger.debug(response);
|
137
|
+
return response;
|
138
|
+
rescue => e
|
139
|
+
retry_count += 1
|
140
|
+
if retry_count <= max_retries
|
141
|
+
Rails.logger.debug("Retry attempt #{retry_count}")
|
142
|
+
sleep(4) #wait 4 seconds
|
143
|
+
retry
|
144
|
+
else
|
145
|
+
Rails.logger.error("retry method for the following url #{uri} has failed #{e}");
|
146
|
+
Rails.logger.error(e.backtrace);
|
147
|
+
raise e
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def decideDomain()
|
153
|
+
if "prod" == @landscape then
|
154
|
+
return "#{@application}.#{APEX_DOMAIN}"
|
155
|
+
else
|
156
|
+
return "#{@application}.#{@landscape}.#{APEX_DOMAIN}"
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Raas client rails</title>
|
5
|
+
<%= csrf_meta_tags %>
|
6
|
+
<%= csp_meta_tag %>
|
7
|
+
|
8
|
+
<%= stylesheet_link_tag "raas/client/rails/application", media: "all" %>
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
|
12
|
+
<%= yield %>
|
13
|
+
|
14
|
+
</body>
|
15
|
+
</html>
|
data/config/routes.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
Raas::Client::Rails::Engine.routes.draw do
|
2
|
+
get '/raas/health', to: 'raas#health'
|
3
|
+
post '/raas/report/session', to: 'raas#report_session'
|
4
|
+
post '/raas/datatraveler/session', to: 'raas#datatraveler_session'
|
5
|
+
get '/raas', to: 'raas#get'
|
6
|
+
delete '/raas', to: 'raas#delete'
|
7
|
+
post '/raas', to: 'raas#post'
|
8
|
+
put '/raas', to: 'raas#put'
|
9
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
puts "Loading Raas::Client::Rails::Engine..."
|
2
|
+
module Raas
|
3
|
+
module Client
|
4
|
+
module Rails
|
5
|
+
class Engine < ::Rails::Engine
|
6
|
+
isolate_namespace Raas::Client::Rails
|
7
|
+
config.raas_client_rails = Configuration.new
|
8
|
+
config.autoload_paths << File.expand_path('lib', __dir__)
|
9
|
+
end
|
10
|
+
|
11
|
+
class Configuration
|
12
|
+
attr_accessor :landscape, :application, :token
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: raas-client-rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sunao Suzuki
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-07-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 6.1.7
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 6.1.7
|
27
|
+
description: Enable your app to interact with RaaS
|
28
|
+
email:
|
29
|
+
- sunao@sutech.co.jp
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- MIT-LICENSE
|
35
|
+
- README.md
|
36
|
+
- Rakefile
|
37
|
+
- app/assets/config/raas_client_rails_manifest.js
|
38
|
+
- app/assets/stylesheets/raas/client/rails/application.css
|
39
|
+
- app/controllers/raas/client/rails/application_controller.rb
|
40
|
+
- app/controllers/raas/client/rails/raas_controller.rb
|
41
|
+
- app/controllers/raas/client/rails/rest_client.rb
|
42
|
+
- app/helpers/raas/client/rails/application_helper.rb
|
43
|
+
- app/helpers/raas/client/rails/raa_s_helper.rb
|
44
|
+
- app/jobs/raas/client/rails/application_job.rb
|
45
|
+
- app/mailers/raas/client/rails/application_mailer.rb
|
46
|
+
- app/models/raas/client/rails/application_record.rb
|
47
|
+
- app/views/layouts/raas/client/rails/application.html.erb
|
48
|
+
- config/routes.rb
|
49
|
+
- lib/raas/client/rails.rb
|
50
|
+
- lib/raas/client/rails/engine.rb
|
51
|
+
- lib/raas/client/rails/version.rb
|
52
|
+
- lib/tasks/raas/client/rails_tasks.rake
|
53
|
+
homepage: https://www.sutech.co.jp/
|
54
|
+
licenses:
|
55
|
+
- MIT
|
56
|
+
metadata:
|
57
|
+
homepage_uri: https://www.sutech.co.jp/
|
58
|
+
source_code_uri: https://github.com/SuTechDevelop/raas-client-for-rails
|
59
|
+
changelog_uri: https://github.com/SuTechDevelop/raas-client-for-rails/activity
|
60
|
+
post_install_message:
|
61
|
+
rdoc_options: []
|
62
|
+
require_paths:
|
63
|
+
- lib
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
requirements: []
|
75
|
+
rubygems_version: 3.2.15
|
76
|
+
signing_key:
|
77
|
+
specification_version: 4
|
78
|
+
summary: Summary
|
79
|
+
test_files: []
|