rcloud 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 56ce826f07b16ead28300941d10ec2301512d35e
4
+ data.tar.gz: da31518d2bb7110800e8682731e266dcd19fb5e4
5
+ SHA512:
6
+ metadata.gz: 2d9e01f3e6dd5f6d18859f50345ec371a1443e0a2d25b976a6026f93949ebd561158b23d1ba0a21d5bb0a52c1b2e2d70e253e306f9dff5823084c3803e8b6a89
7
+ data.tar.gz: fa307cddcf4b92b0408c6390b4181cf64cff32f9679c937c7d1a778b564f6fd77e2b26db87eb53f5c5dcbe661e6d0759a85264f36669352180bf771c199a5fb2
@@ -0,0 +1,15 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
15
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rcloud.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Linxiangyu
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,105 @@
1
+ # RCloud
2
+
3
+ 融云 Ruby SDK
4
+
5
+ <http://docs.rongcloud.cn/>
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'rcloud'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install rcloud
22
+
23
+ ## 使用
24
+
25
+
26
+ ### 基本使用
27
+
28
+ 使用 `RCloud::Request` 类生成一个请求实例,调用它的方法进行请求。
29
+
30
+ 方法列表见下一个小节。
31
+
32
+ ```ruby
33
+ request = RCloud::Request.new("mgb7ka1nb5dfg", "krO8vJkvpu1yj")
34
+ p request.user_get_token("jjjj","","")
35
+ ```
36
+ 如果正常请求,会返回一个Hash对象,如
37
+
38
+ ```ruby
39
+ {"code"=>200, "userId"=>"fkdskf", "token"=>"cSM+0tuXKeQ8x1DHvzI8uj1M2VmLzSGbhpswesn2LhvH6WoIIAXxUBoMXfPT/DVHIq0Sl9S2VhNgUSr2U3LF3g=="}
40
+ ```
41
+
42
+
43
+ ### 方法名和 url 映射规则, 以及http参数
44
+
45
+ <http://docs.rongcloud.cn/server.html>
46
+
47
+ 所有 Server API 的 url 会被映射为 Ruby 的方法,规则:`method_name = url.downcase.gsub(/\//, '_')[1..-1].to_sym`
48
+
49
+ 比如: /user/getToken => user_gettoken
50
+
51
+ 而 HTTP 的参数会按照文档次序映射为方法的参数。
52
+
53
+ 如果融云API文档中允许传入多个参数,那么可以传入一个参数的值或者数组。
54
+
55
+ **例外**
56
+
57
+ '/chatroom/create' 和 '/group/sync' 两个 API 有的参数需要不定长度的键值对,所以实现上有一些例外。
58
+
59
+ `/chatroom/create` 的参数是一个 Hash, key 是 groupId, value 是 groupName
60
+
61
+ `/group/sync` 的第一个参数是 user, 第二个参数是一个 Hash, key 是 groupId, value 是 groupName
62
+
63
+ 它们对应的方法名称也支持自定义规则。
64
+
65
+ ### 自定义方法名和 url 映射规则
66
+
67
+ 支持自定义url和方法映射规则。Proc接收一个 '/user/getToken' 这样的字符串参数,返回一个方法名字的 symbol对象。
68
+
69
+ ```
70
+ map = Proc.new do |url|
71
+ url.downcase.gsub(/\//, '')[0..-1].to_sym
72
+ end
73
+
74
+ request = RCloud::Request.new("mgb7ka1nb5dfg", "krO8vJkvpu1yj", map)
75
+
76
+ request.usergettoken('fkdskf')
77
+
78
+ ```
79
+
80
+ ### 第三方依赖
81
+
82
+ SDK 使用 rest-client 进行访问,如果认证错误或者其他问题,会触发 RestClient::Exception
83
+
84
+ 关于 rest-client: <https://github.com/rest-client/rest-client>
85
+
86
+ 使用 <https://github.com/seattlerb/minitest> 作为测试框架
87
+
88
+ ## Contributing
89
+
90
+ 1. Fork it ( https://github.com/[my-github-username]/rcloud/fork )
91
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
92
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
93
+ 4. Push to the branch (`git push origin my-new-feature`)
94
+ 5. Create a new Pull Request
95
+
96
+ ## TODO
97
+
98
+ 1. 更好的错误控制和反馈与日志输出
99
+ 2. 产品级别的测试
100
+ 3. 联系发布到官方页面
101
+
102
+ ## Author
103
+
104
+ Lin Xiangyu
105
+ <lxyweb@gmail.com>
@@ -0,0 +1,9 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.libs << "test"
7
+ t.test_files = FileList['test/test*.rb']
8
+ t.verbose = true
9
+ end
@@ -0,0 +1,152 @@
1
+ require "rcloud/version"
2
+ require "rest-client"
3
+ require 'digest/sha1'
4
+ require 'json'
5
+
6
+
7
+ module RCloud
8
+
9
+ class Request
10
+ BASE_URL = "https://api.cn.rong.io"
11
+
12
+ URLS = ["/user/getToken",
13
+ "/user/refresh",
14
+ "/user/checkOnline",
15
+ "/user/block",
16
+ "/user/unblock",
17
+ "/user/block/query",
18
+ "/user/blacklist/add",
19
+ "/user/blacklist/remove",
20
+ "/user/blacklist/query",
21
+ "/message/private/publish",
22
+ "/message/system/publish",
23
+ "/message/group/publish",
24
+ "/message/chatroom/publish",
25
+ "/message/broadcast",
26
+ "/message/history",
27
+ "/message/history/delete",
28
+ "/group/sync",
29
+ "/group/create",
30
+ "/group/join",
31
+ "/group/quit",
32
+ "/group/dismiss",
33
+ "/group/refresh",
34
+ "/chatroom/create",
35
+ "/chatroom/destroy",
36
+ "/chatroom/query",
37
+ "/chatroom/user/query"]
38
+
39
+ SUFFIX = ".json"
40
+
41
+ PARAMS = [ [:userId, :name, :portraitUri], # user
42
+ [:userId, :name, :portraitUri],
43
+ [:userId],
44
+ [:userId, :minute], # block
45
+ [:userId],
46
+ [],
47
+ [:userId, :blackUserId], # blacklist
48
+ [:userId, :blackUserId],
49
+ [:userId],
50
+ [:fromUserId, :toUserId, :objectName, :content, :pushContent, :pushData ], #message
51
+ [:fromUserId, :toUserId, :objectName, :content, :pushContent, :pushData ],
52
+ [:fromUserId, :toGroupId, :objectName, :content, :pushContent, :pushData ],
53
+ [:fromUserId, :toChatroomId, :objectName, :content, :pushContent, :pushData ],
54
+ [:fromUserId, :objectName, :content, :pushContent, :pushData ],
55
+ [:date], # message history
56
+ [:date],
57
+ [:userId], # Group Sync redefine
58
+ [:userId, :groupId, :groupName] ,
59
+ [:userId, :groupId, :groupName] ,
60
+ [:userId, :groupId],
61
+ [:userId, :groupId],
62
+ [:groupId, :groupName],
63
+ [:userId],# Chatroom redefine
64
+ [:chatroomId],#
65
+ [:chatroomId],#
66
+ [:chatroomId]#
67
+ ]
68
+
69
+
70
+ @@app_key = ""
71
+ @@app_sec = ""
72
+ @@mapping = Proc.new do |url|
73
+ url.downcase.gsub(/\//, '_')[1..-1].to_sym
74
+ end
75
+
76
+ def self.creat_api_method(method_name, url, params)
77
+ self.send(:define_method, method_name) do |*args|
78
+ p = Hash.new
79
+ params.each_with_index do |k, i|
80
+ p[k] = *args[i]
81
+ p[k] = p[k][0].to_s
82
+ end
83
+ resp = nil
84
+ begin
85
+ resp = RestClient.post BASE_URL + url + SUFFIX , p , http_header
86
+ rescue => e
87
+ p e
88
+ end
89
+ result = JSON.parse(resp)
90
+ end
91
+ end
92
+
93
+
94
+
95
+ def initialize(app_key, app_sec, mapping = nil)
96
+ @@app_key = app_key
97
+ @@app_sec = app_sec
98
+ @@mapping = mapping if mapping
99
+
100
+ URLS.each_with_index do |url, index|
101
+ Request.creat_api_method(@@mapping.call(url), url, PARAMS[index])
102
+ end
103
+
104
+ self.class.send(:define_method, @@mapping.call("/chatroom/create") ) do |hash|
105
+ p = {}
106
+ hash.each do |k,v|
107
+ p["chatroom[#{k}]"] = v
108
+ end
109
+ resp = RestClient.post BASE_URL + "/chatroom/create" + SUFFIX , p , http_header
110
+ result = JSON.parse(resp)
111
+ end
112
+
113
+ self.class.send(:define_method, @@mapping.call("/group/sync") ) do |*args|
114
+ p = {}
115
+ p["userId"] = args[0].to_s
116
+ hash = *args[1]
117
+ hash.each do |k,v|
118
+ p["group[#{k}]"] = v
119
+ end
120
+ resp = RestClient.post BASE_URL + "/group/sync" + SUFFIX , p , http_header
121
+ result = JSON.parse(resp)
122
+ end
123
+
124
+
125
+ end
126
+
127
+
128
+
129
+ def http_header
130
+ time = Time.now.to_i
131
+ r = Random.new
132
+ random = r.rand(100000000)
133
+ sig_str = @@app_sec + random.to_s + time.to_s
134
+ sig = Digest::SHA1.hexdigest sig_str
135
+ header = {
136
+ "RC-App-Key" => @@app_key,
137
+ "RC-Nonce" => random,
138
+ "RC-Timestamp" => time,
139
+ "RC-Signature" => sig
140
+ }
141
+ end
142
+
143
+ end
144
+
145
+ Agent = Request
146
+ Client = Request
147
+
148
+
149
+ end
150
+
151
+
152
+
@@ -0,0 +1,3 @@
1
+ module Rcloud
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rcloud/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rcloud"
8
+ spec.version = Rcloud::VERSION
9
+ spec.authors = ["Lin Xiangyu"]
10
+ spec.email = ["lxyweb@gmail.com"]
11
+ spec.summary = %q{RongCloud Ruby SDK}
12
+ spec.description = %q{RongCloud Ruby SDK.}
13
+ spec.homepage = "https://github.com/oa414/RCloud"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency 'rest_client', '~> 1.8.3' ,'>= 1.8.0'
22
+ spec.add_runtime_dependency 'json', '~> 1.8.2', '>= 1.8.0'
23
+
24
+ spec.add_development_dependency "minitest", '~> 5.6.0', '>= 5.6.0'
25
+ spec.add_development_dependency "bundler", "~> 1.7"
26
+ spec.add_development_dependency "rake", "~> 10.0"
27
+ end
@@ -0,0 +1,188 @@
1
+ require "./lib/rcloud.rb"
2
+
3
+
4
+ require "minitest/autorun"
5
+
6
+ class TestMeme < Minitest::Test
7
+
8
+
9
+ USERA = "mockuser"
10
+ USERB = "mock_block"
11
+ GROUPA = "mock_group"
12
+ CHATROOMA = "1001"
13
+
14
+
15
+ def setup
16
+ @request = RCloud::Request.new("mgb7ka1nb5dfg", "krO8vJkvpu1yj")
17
+ @request.user_gettoken(USERB)
18
+ @user_id = nil
19
+ @user_token = nil
20
+ end
21
+
22
+ # user
23
+
24
+ def test_user_gettoken
25
+ # {"code":200, "USERA":"jlk456j5", "token":"sfd9823ihufi"}
26
+ resp = @request.user_gettoken(USERA)
27
+ @user_id = resp["user_id"]
28
+ @user_token = resp["token"]
29
+ assert_equal 200, resp["code"]
30
+ end
31
+
32
+ def test_user_refresh
33
+ # {"code":200, "USERA":"jlk456j5", "token":"sfd9823ihufi"}
34
+ resp = @request.user_gettoken(USERA)
35
+ assert_equal 200, resp["code"]
36
+ end
37
+
38
+ def test_user_checkonline
39
+ resp = @request.user_checkonline(USERA)
40
+ assert_equal 200, resp["code"]
41
+ end
42
+
43
+ # block
44
+
45
+ def test_user_block
46
+ resp = @request.user_block(USERA, 1)
47
+ assert_equal 200, resp["code"]
48
+ end
49
+
50
+ def test_user_unblock
51
+ resp = @request.user_unblock(USERA)
52
+ assert_equal 200, resp["code"]
53
+ end
54
+
55
+ def test_user_block_query
56
+ resp = @request.user_block_query()
57
+ assert_equal 200, resp["code"]
58
+ end
59
+
60
+ # blacklist
61
+ def test_user_blacklist_add
62
+ resp = @request.user_blacklist_add(USERA, USERB)
63
+ assert_equal 200, resp["code"]
64
+
65
+ end
66
+
67
+ def test_user_blacklist_remove
68
+ resp = @request.user_blacklist_remove(USERA, USERB)
69
+ assert_equal 200, resp["code"]
70
+ end
71
+
72
+ def test_user_blacklist_query
73
+ resp = @request.user_blacklist_query
74
+ assert_equal 200, resp["code"]
75
+ end
76
+
77
+ # Message
78
+
79
+ def test_message_private_publish
80
+ resp = @request.message_private_publish(USERA, USERB, "RC:TxtMsg", JSON.generate({"content" => "hello", "extra" => "helloExtra"}))
81
+ assert_equal 200, resp["code"]
82
+ end
83
+
84
+
85
+ def test_message_system_publish
86
+ resp = @request.message_system_publish(USERA, USERB, "RC:TxtMsg", JSON.generate({"content" => "hello", "extra" => "helloExtra"}))
87
+ assert_equal 200, resp["code"]
88
+ end
89
+
90
+ def test_message_group_publish
91
+ resp = @request.group_create(USERA, "1001", GROUPA)
92
+ resp = @request.group_join(USERA, GROUPA)
93
+ resp = @request.message_group_publish(USERA, "1001", "RC:TxtMsg", JSON.generate({"content" => "hello", "extra" => "helloExtra"}))
94
+ assert_equal 200, resp["code"]
95
+ end
96
+
97
+ def test_message_chatroom_publish
98
+ resp = @request.chatroom_create({CHATROOMA => GROUPA})
99
+ resp = @request.message_chatroom_publish(USERA, CHATROOMA, "RC:TxtMsg", JSON.generate({"content" => "hello", "extra" => "helloExtra"}))
100
+ assert_equal 200, resp["code"]
101
+ end
102
+
103
+ def test_message_broadcast
104
+ resp = @request.message_broadcast(USERA, "RC:TxtMsg", JSON.generate({"content" => "hello", "extra" => "helloExtra"}))
105
+ assert_equal 200, resp["code"]
106
+ end
107
+ # History
108
+
109
+ def test_message_history
110
+ resp = @request.message_history(DateTime.now.strftime("%Y%m%d%H"))
111
+ assert_equal 200, resp["code"]
112
+ end
113
+
114
+ def test_message_history_delete
115
+ resp = @request.message_history_delete("2015042523")
116
+ assert_equal 200, resp["code"]
117
+ end
118
+
119
+ # Group
120
+
121
+ def test_group_sync #
122
+ resp = @request.group_create(USERA, "1001", GROUPA)
123
+ assert_equal 200, resp["code"]
124
+
125
+ resp = @request.group_sync(USERA, {"1001" => GROUPA})
126
+ assert_equal 200, resp["code"]
127
+
128
+ resp = @request.group_sync(USERA)
129
+ assert_equal 200, resp["code"]
130
+ end
131
+
132
+ def test_group_create
133
+ resp = @request.group_create([USERA, USERB], GROUPA, GROUPA)
134
+ assert_equal 200, resp["code"]
135
+ end
136
+
137
+ def test_group_join
138
+ resp = @request.group_join([USERA,USERB], GROUPA)
139
+ assert_equal 200, resp["code"]
140
+ end
141
+
142
+ def test_group_quit
143
+ resp = @request.group_quit([USERA, USERB], GROUPA)
144
+ assert_equal 200, resp["code"]
145
+
146
+ end
147
+
148
+ def test_group_dismiss
149
+ resp = @request.group_dismiss(USERA, USERB)
150
+ assert_equal 200, resp["code"]
151
+
152
+ end
153
+
154
+ def test_group_refresh #
155
+ resp = @request.group_refresh(GROUPA, GROUPA)
156
+ assert_equal 200, resp["code"]
157
+
158
+ end
159
+
160
+ # ChatRoom
161
+
162
+ def test_chatroom_create
163
+ resp = @request.chatroom_create({CHATROOMA => GROUPA})
164
+ assert_equal 200, resp["code"]
165
+ end
166
+
167
+ def test_chatroom_destroy
168
+ resp = @request.chatroom_create({CHATROOMA => GROUPA})
169
+ resp = @request.chatroom_create({"123" => GROUPA})
170
+ resp = @request.chatroom_destroy([CHATROOMA, "123"])
171
+ assert_equal 200, resp["code"]
172
+ end
173
+
174
+ def test_chatroom_query
175
+ resp = @request.chatroom_create({CHATROOMA => GROUPA})
176
+ resp = @request.chatroom_query(GROUPA)
177
+ assert_equal 200, resp["code"]
178
+ end
179
+
180
+ def test_chatroom_user_query
181
+ resp = @request.chatroom_query(CHATROOMA)
182
+ assert_equal 200, resp["code"]
183
+ end
184
+
185
+
186
+
187
+ end
188
+
metadata ADDED
@@ -0,0 +1,142 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rcloud
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Lin Xiangyu
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest_client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.8.3
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.8.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 1.8.3
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.8.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: json
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 1.8.2
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.8.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 1.8.2
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.8.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: minitest
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 5.6.0
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 5.6.0
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 5.6.0
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 5.6.0
73
+ - !ruby/object:Gem::Dependency
74
+ name: bundler
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '1.7'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: '1.7'
87
+ - !ruby/object:Gem::Dependency
88
+ name: rake
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '10.0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '10.0'
101
+ description: RongCloud Ruby SDK.
102
+ email:
103
+ - lxyweb@gmail.com
104
+ executables: []
105
+ extensions: []
106
+ extra_rdoc_files: []
107
+ files:
108
+ - ".gitignore"
109
+ - Gemfile
110
+ - LICENSE.txt
111
+ - README.md
112
+ - Rakefile
113
+ - lib/rcloud.rb
114
+ - lib/rcloud/version.rb
115
+ - rcloud.gemspec
116
+ - test/test_rcloud.rb
117
+ homepage: https://github.com/oa414/RCloud
118
+ licenses:
119
+ - MIT
120
+ metadata: {}
121
+ post_install_message:
122
+ rdoc_options: []
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ requirements: []
136
+ rubyforge_project:
137
+ rubygems_version: 2.4.3
138
+ signing_key:
139
+ specification_version: 4
140
+ summary: RongCloud Ruby SDK
141
+ test_files:
142
+ - test/test_rcloud.rb