lean_cloud 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +28 -4
- data/examples/AVOSRealtimeGroups.rb +4 -0
- data/examples/file.rb +6 -0
- data/examples/live_file.rb +9 -0
- data/examples/live_room.rb +158 -0
- data/lib/lean_cloud.rb +9 -0
- data/lib/lean_cloud/base.rb +22 -7
- data/lib/lean_cloud/client.rb +13 -6
- data/lib/lean_cloud/configuration.rb +7 -7
- data/lib/lean_cloud/helper.rb +8 -18
- data/lib/lean_cloud/modules/function.rb +1 -1
- data/lib/lean_cloud/modules/message.rb +1 -1
- data/lib/lean_cloud/modules/sms.rb +2 -2
- data/lib/lean_cloud/modules/stats.rb +2 -2
- data/lib/lean_cloud/modules/user.rb +8 -8
- data/lib/lean_cloud/route.rb +4 -3
- data/lib/lean_cloud/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 020545fc7a28d1a7a1292f102076cea9d1e22cf7
|
4
|
+
data.tar.gz: 40ece99f5a9db440af06602ae1672709e91f4559
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70fe9d230da9f82aa3604be29716d361709b8c13567ba8405d2b4c4509daf510c86564bbd01f44af3a8cfae6c385880523f03e776648539291b8c4c383644b97
|
7
|
+
data.tar.gz: 6843d9561ee16ba62081b238097275625dc86b32d0fa399fa1ff1f888db44ac4b4c32287c9327a1bcc705c16b4524bc1dfb49928167eebca2b8a1a5ed40329f8
|
data/README.md
CHANGED
@@ -2,22 +2,46 @@
|
|
2
2
|
|
3
3
|
This project rocks and uses MIT-LICENSE.
|
4
4
|
|
5
|
+
|
6
|
+
## Usage
|
7
|
+
|
8
|
+
```
|
9
|
+
gem "lean_cloud"
|
10
|
+
|
11
|
+
LeanCloud::Feedback.create({}) # 用户反馈
|
12
|
+
LeanCloud::Function.run(function)
|
13
|
+
....
|
14
|
+
```
|
15
|
+
### 更多请查看 lib/lean_cloud/modules
|
16
|
+
|
5
17
|
# 配置
|
6
18
|
|
7
19
|
```
|
8
20
|
LeanCloud.configure do
|
9
|
-
config.app_id
|
10
|
-
config.app_key
|
11
|
-
config.
|
12
|
-
config.
|
21
|
+
config.app_id = "11f6ad8ec52a2984abaafd7c3b516503785c2072"
|
22
|
+
config.app_key = "11f6ad8ec52a2984abaafd7c3b516503785c2072"
|
23
|
+
config.master_key = "11f6ad8ec52a2984abaafd7c3b516503785c2072"
|
24
|
+
config.host = "https://leancloud.cn"
|
25
|
+
config.version = "1.1"
|
13
26
|
end
|
14
27
|
```
|
15
28
|
|
16
29
|
# 在数据管理中添加一个class(GameScore)后:
|
17
30
|
|
18
31
|
```
|
32
|
+
# the namespace option will generate https://leancloud.cn/1.1/classes/GameScore
|
19
33
|
LeanCloud.register "GameScore", namespace: "classes/GameScore" do
|
20
34
|
only :create, :update, :show, :destroy, :search
|
35
|
+
|
36
|
+
# GET https://leancloud.cn/1.1/classes/GameScore/sms/:code
|
37
|
+
match "sms/:code", via: :get, as: get_code # LeanCloud::GameScore.get_code(code)
|
38
|
+
# GET https://leancloud.cn/1.1/sms/:code
|
39
|
+
match "sms/:code", via: :get, as: get_code, unscope: true # LeanCloud::GameScore.get_code(code)
|
40
|
+
# GET https://leancloud.cn/1.1/classes/GameScore/:id/sms/:code
|
41
|
+
match "sms/:code", via: :get, as: get_code, on: :member # LeanCloud::GameScore.get_code(id, code)
|
42
|
+
|
43
|
+
# GET https://leancloud.cn/1.1/classes/GameScore/result
|
44
|
+
route :result
|
21
45
|
end
|
22
46
|
```
|
23
47
|
|
data/examples/file.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
# 文件接口
|
2
|
+
LeanCloud::Base.register "LiveFile", namespace: "classes/LiveFile" do
|
3
|
+
# https://leancloud.cn/1.1/classes/LiveFile
|
4
|
+
only :create, :show, :search, :update, :destroy
|
5
|
+
|
6
|
+
cattr_accessor :columns
|
7
|
+
self.columns = %i(file liveRoom userUUID selected mime_type)
|
8
|
+
|
9
|
+
end
|
@@ -0,0 +1,158 @@
|
|
1
|
+
LeanCloud::Base.register "LiveRoom", namespace: "classes/LiveRoom" do
|
2
|
+
extend ActiveModel::Naming
|
3
|
+
include ActiveModel::Validations
|
4
|
+
|
5
|
+
only :create, :update, :show, :destroy, :search
|
6
|
+
|
7
|
+
cattr_accessor :columns, :status_hash
|
8
|
+
self.columns = %i(objectId title sourceTitle sourceType sourceId status cover liveTopic liveStartAt liveEndAt hosts avosGroup admins event_id)
|
9
|
+
self.status_hash = {open: "开启", closed: "关闭", hidden: "隐藏", ready: "待开启"}
|
10
|
+
attr_accessor *columns
|
11
|
+
|
12
|
+
validates :title, :event_id, :status, :cover, :liveTopic, :liveStartAt, :liveEndAt, :hosts, :admins, presence: true
|
13
|
+
validates :status, :inclusion => { :in => status_hash.keys.map(&:to_s) }
|
14
|
+
|
15
|
+
class << self
|
16
|
+
|
17
|
+
def primary_key
|
18
|
+
:id
|
19
|
+
end
|
20
|
+
|
21
|
+
def find(*args,&block)
|
22
|
+
new show(*args, &block)
|
23
|
+
end
|
24
|
+
|
25
|
+
def id
|
26
|
+
objectId
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_with_upload(attributes,&block)
|
30
|
+
room = new(attributes)
|
31
|
+
return room.errors if !room.valid?
|
32
|
+
|
33
|
+
cover = room.cover
|
34
|
+
request = LeanCloud::File.upload(cover.original_filename) do |req|
|
35
|
+
req.headers["Content-Type"] = cover.content_type
|
36
|
+
req.body = cover.tempfile.read
|
37
|
+
end
|
38
|
+
|
39
|
+
if !request.is_a?(Hash) || !request.key?("objectId")
|
40
|
+
|
41
|
+
room.errors.add(:base, request)
|
42
|
+
return room
|
43
|
+
end
|
44
|
+
|
45
|
+
attributes[:cover] = {
|
46
|
+
objectId: request["objectId"],
|
47
|
+
className: "_File",
|
48
|
+
__type: "Pointer"
|
49
|
+
}
|
50
|
+
|
51
|
+
attributes[:avosGroup] = {
|
52
|
+
__type: "Pointer",
|
53
|
+
objectId: LeanCloud::AVOSRealtimeGroups.create(m: [])["objectId"],
|
54
|
+
"className" => 'AVOSRealtimeGroups'
|
55
|
+
}
|
56
|
+
|
57
|
+
result = create_without_upload(attributes, &block)
|
58
|
+
|
59
|
+
Rails.logger.info result.to_json
|
60
|
+
|
61
|
+
if !request.is_a?(Hash) || result.key?("objectId")
|
62
|
+
room.errors.add(:base, result)
|
63
|
+
room
|
64
|
+
else
|
65
|
+
room
|
66
|
+
end
|
67
|
+
end
|
68
|
+
alias_method_chain :create, :upload
|
69
|
+
end
|
70
|
+
|
71
|
+
def initialize(attrs={})
|
72
|
+
assign_attributes(attrs)
|
73
|
+
end
|
74
|
+
|
75
|
+
def event_id=(val)
|
76
|
+
event = Event.find(val)
|
77
|
+
self.sourceTitle = event.title
|
78
|
+
self.sourceType = event.class.name
|
79
|
+
self.sourceId = val
|
80
|
+
@event_id = val
|
81
|
+
end
|
82
|
+
|
83
|
+
def event
|
84
|
+
@event ||= sourceType.constantize.find(sourceId)
|
85
|
+
end
|
86
|
+
|
87
|
+
def assign_attributes(attrs={})
|
88
|
+
attrs.symbolize_keys.slice(*self.class.columns).each do |attribute, value|
|
89
|
+
send("#{attribute}=", value)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def attributes
|
94
|
+
self.class.columns.map {|attribute| [attribute, send(attribute)]}.to_h
|
95
|
+
end
|
96
|
+
|
97
|
+
def hide
|
98
|
+
update(status: "hidden")
|
99
|
+
end
|
100
|
+
|
101
|
+
def update(attrs={})
|
102
|
+
self.class.update(id, attrs) if id.present?
|
103
|
+
end
|
104
|
+
|
105
|
+
def hosts=(val)
|
106
|
+
@hosts = val.to_s.split(',') if val.present?
|
107
|
+
end
|
108
|
+
|
109
|
+
def admins=(val)
|
110
|
+
@admins = val.to_s.split(',') if val.present?
|
111
|
+
end
|
112
|
+
|
113
|
+
def save
|
114
|
+
id.present? ? update(attributes) : self.class.create(attributes)
|
115
|
+
end
|
116
|
+
|
117
|
+
def destroy
|
118
|
+
self.class.destroy(id)
|
119
|
+
end
|
120
|
+
|
121
|
+
def to_key
|
122
|
+
[id]
|
123
|
+
end
|
124
|
+
|
125
|
+
def status_name
|
126
|
+
STATUS[status.to_sym]
|
127
|
+
end
|
128
|
+
|
129
|
+
def liveStartAt=(val)
|
130
|
+
@liveStartAt = {
|
131
|
+
__type: "Date",
|
132
|
+
"iso" => val
|
133
|
+
}
|
134
|
+
end
|
135
|
+
|
136
|
+
def liveEndAt=(val)
|
137
|
+
@liveEndAt = {
|
138
|
+
__type: "Date",
|
139
|
+
"iso" => val
|
140
|
+
}
|
141
|
+
end
|
142
|
+
|
143
|
+
# 踢人
|
144
|
+
def kick(ids=[])
|
145
|
+
update(hosts: {__op: "Remove", objects: ids}) if ids.present?
|
146
|
+
end
|
147
|
+
|
148
|
+
# 查看聊天记录
|
149
|
+
def logs
|
150
|
+
LeanCloud::Message.logs(convid: avosGroup["objectId"]) if avosGroup.is_a?(Hash).present?
|
151
|
+
end
|
152
|
+
|
153
|
+
# class << self
|
154
|
+
# def self.column_names
|
155
|
+
# ATTRIBUTES
|
156
|
+
# end
|
157
|
+
# end
|
158
|
+
end
|
data/lib/lean_cloud.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'lean_cloud/modules'
|
2
2
|
require 'lean_cloud/configuration'
|
3
|
+
require 'logger'
|
3
4
|
module LeanCloud
|
4
5
|
class << self
|
5
6
|
|
@@ -10,6 +11,14 @@ module LeanCloud
|
|
10
11
|
def config
|
11
12
|
@config ||= Configuration.instance
|
12
13
|
end
|
14
|
+
|
15
|
+
def logger
|
16
|
+
if defined?(Rails)
|
17
|
+
Rails.logger
|
18
|
+
else
|
19
|
+
Logger.new(STDOUT)
|
20
|
+
end
|
21
|
+
end
|
13
22
|
end
|
14
23
|
|
15
24
|
def config
|
data/lib/lean_cloud/base.rb
CHANGED
@@ -2,6 +2,7 @@ require 'lean_cloud'
|
|
2
2
|
require 'lean_cloud/helper'
|
3
3
|
require 'lean_cloud/client'
|
4
4
|
require 'active_support/core_ext/module/attribute_accessors'
|
5
|
+
require 'active_support/core_ext/object/blank'
|
5
6
|
require 'active_support/json/decoding'
|
6
7
|
require 'active_support/json/encoding'
|
7
8
|
module LeanCloud
|
@@ -10,7 +11,7 @@ module LeanCloud
|
|
10
11
|
|
11
12
|
class << self
|
12
13
|
def register(klass, options={}, &block)
|
13
|
-
klass = if !LeanCloud.const_defined?(klass)
|
14
|
+
klass = if !LeanCloud.const_defined?(klass, false)
|
14
15
|
LeanCloud.const_set(klass, Class.new(self))
|
15
16
|
else
|
16
17
|
LeanCloud.const_get(klass)
|
@@ -19,24 +20,38 @@ module LeanCloud
|
|
19
20
|
klass.class_eval do
|
20
21
|
include Helper
|
21
22
|
|
22
|
-
cattr_accessor :routes, :namespace
|
23
|
+
cattr_accessor :routes, :namespace, :settings
|
23
24
|
|
24
25
|
self.routes ||= []
|
26
|
+
self.settings = {}
|
25
27
|
self.namespace = options[:namespace]
|
26
28
|
|
27
|
-
|
28
|
-
|
29
29
|
class_exec(&block)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
def client
|
34
|
-
Client.new(
|
33
|
+
def client(options={}, &block)
|
34
|
+
Client.new(settings).instance(options,&block)
|
35
35
|
end
|
36
36
|
|
37
37
|
def dispatch(route, *args, &block)
|
38
38
|
options = args.extract_options!
|
39
|
-
|
39
|
+
data = parse_data(route, options)
|
40
|
+
request = client(&route.block).send(route.request, route.url(*args), data, &block)
|
41
|
+
LeanCloud.logger.info request.to_json
|
42
|
+
parse_body(request)
|
43
|
+
end
|
44
|
+
|
45
|
+
def parse_data(route, data)
|
46
|
+
if route.request == :get
|
47
|
+
data
|
48
|
+
elsif data.present?
|
49
|
+
data.to_json
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def parse_body(request)
|
54
|
+
JSON.parse(request.body) rescue request.body
|
40
55
|
end
|
41
56
|
end
|
42
57
|
end
|
data/lib/lean_cloud/client.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'lean_cloud/version'
|
1
2
|
require 'active_support/hash_with_indifferent_access'
|
2
3
|
require 'active_support/core_ext/module/delegation'
|
3
4
|
module LeanCloud
|
@@ -5,23 +6,29 @@ module LeanCloud
|
|
5
6
|
|
6
7
|
attr_accessor :options
|
7
8
|
|
8
|
-
delegate :app_id, :app_key, :version, :http_adapter, :host, to: :options
|
9
|
+
delegate :app_id, :app_key, :master_key, :version, :http_adapter, :host, to: :options
|
9
10
|
delegate :get, :put, :post, :delete, to: :instance
|
10
11
|
|
11
12
|
def initialize(options)
|
12
|
-
@options = options
|
13
|
+
@options = LeanCloud.config.dup.merge(options)
|
13
14
|
end
|
14
15
|
|
15
16
|
def adapter
|
16
17
|
http_adapter
|
17
18
|
end
|
18
19
|
|
19
|
-
def instance
|
20
|
-
adapter.new(url, headers: headers)
|
20
|
+
def instance(options={}, &block)
|
21
|
+
adapter.new(url, headers: headers, &block)
|
21
22
|
end
|
22
23
|
|
23
|
-
def headers
|
24
|
-
{
|
24
|
+
def headers(options={})
|
25
|
+
{
|
26
|
+
"X-AVOSCloud-Application-Id" => app_id,
|
27
|
+
"X-AVOSCloud-Application-Key" => app_key,
|
28
|
+
"X-AVOSCloud-Master-Key" => master_key,
|
29
|
+
'Content-Type' => 'application/json',
|
30
|
+
'User-Agent' => "LeanCloud SDK Ruby / #{LeanCloud::VERSION}"
|
31
|
+
}.merge(options)
|
25
32
|
end
|
26
33
|
|
27
34
|
def url
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'faraday'
|
2
2
|
module LeanCloud
|
3
|
-
class Configuration
|
3
|
+
class Configuration < Hash
|
4
4
|
class << self
|
5
5
|
private :new
|
6
6
|
def instance
|
@@ -9,24 +9,24 @@ module LeanCloud
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def initialize
|
12
|
-
|
12
|
+
{
|
13
13
|
:http_adapter => Faraday,
|
14
14
|
:app_id => nil,
|
15
15
|
:app_key => nil
|
16
|
-
}
|
16
|
+
}.each {|k, v| self[k] = v}
|
17
17
|
end
|
18
18
|
|
19
19
|
def respond_to?(name, include_private = false)
|
20
|
-
super ||
|
20
|
+
super || key?(name.to_sym)
|
21
21
|
end
|
22
22
|
|
23
23
|
private
|
24
24
|
|
25
25
|
def method_missing(name, *args, &blk)
|
26
26
|
if name.to_s =~ /=$/
|
27
|
-
|
28
|
-
elsif
|
29
|
-
|
27
|
+
self[$`.to_sym] = args.first
|
28
|
+
elsif self.key?(name)
|
29
|
+
self[name]
|
30
30
|
else
|
31
31
|
super
|
32
32
|
end
|
data/lib/lean_cloud/helper.rb
CHANGED
@@ -18,30 +18,20 @@ module LeanCloud
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
def route(name, options={})
|
22
|
-
add_route(name, options)
|
21
|
+
def route(name, options={}, &block)
|
22
|
+
add_route(name, options, &block)
|
23
23
|
end
|
24
24
|
|
25
|
-
def match(name, options={})
|
25
|
+
def match(name, options={}, &block)
|
26
26
|
raise "`as' can't be nil!" if !options[:as]
|
27
|
-
add_route(options.delete(:as), options, name)
|
27
|
+
add_route(options.delete(:as), options, name, &block)
|
28
28
|
end
|
29
29
|
|
30
|
-
def add_route(name, options={},match=nil)
|
30
|
+
def add_route(name, options={},match=nil, &block)
|
31
31
|
options[:namespace] ||= namespace
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
def respond_to?(method_id)
|
36
|
-
routes.any? {|route| route.name.to_s == method_id.to_s}
|
37
|
-
end
|
38
|
-
|
39
|
-
def method_missing(method_id, *args, &block)
|
40
|
-
if route=routes.find {|route| route.name.to_s == method_id.to_s}
|
41
|
-
dispatch(route, *args, &block)
|
42
|
-
else
|
43
|
-
super
|
44
|
-
end
|
32
|
+
route = Route.new(name, options, match, &block)
|
33
|
+
define_singleton_method(name) {|*args, &block| dispatch(route, *args, &block) }
|
34
|
+
routes << route
|
45
35
|
end
|
46
36
|
end
|
47
37
|
end
|
@@ -2,8 +2,8 @@
|
|
2
2
|
LeanCloud::Base.register "Sms" do
|
3
3
|
# /1.1/requestSmsCode
|
4
4
|
# 请求发送短信验证码
|
5
|
-
route :requestSmsCode, via: :post
|
5
|
+
route :requestSmsCode, via: :post, as: :deliver
|
6
6
|
# /1.1/verifySmsCode/<code>
|
7
7
|
# 验证短信验证码
|
8
|
-
match "verifySmsCode/:code", via: :post, as: :
|
8
|
+
match "verifySmsCode/:code", via: :post, as: :verify
|
9
9
|
end
|
@@ -3,19 +3,19 @@ LeanCloud::Base.register "User", namespace: "users" do
|
|
3
3
|
# /1.1/login GET 用户登录
|
4
4
|
route :login, via: :get, unscope: true
|
5
5
|
# /1.1/users/<objectId>/updatePassword PUT 更新密码,要求输入旧密码。
|
6
|
-
route :updatePassword, via: :put, on: :member
|
6
|
+
route :updatePassword, via: :put, on: :member, unscope: true
|
7
7
|
# /1.1/requestPasswordReset POST 请求密码重设
|
8
|
-
route :requestPasswordReset, via: :post
|
8
|
+
route :requestPasswordReset, via: :post, unscope: true
|
9
9
|
# /1.1/requestEmailVerify POST 请求验证用户邮箱
|
10
|
-
route :requestEmailVerify, via: :post
|
10
|
+
route :requestEmailVerify, via: :post, unscope: true
|
11
11
|
# /1.1/requestMobilePhoneVerify POST 请求发送用户手机号码验证短信
|
12
|
-
route :requestMobilePhoneVerify, via: :post
|
12
|
+
route :requestMobilePhoneVerify, via: :post, unscope: true
|
13
13
|
# /1.1/verifyMobilePhone/<code> POST 使用 "验证码" 验证用户手机号码
|
14
|
-
match "verifyMobilePhone/:code", via: :post, as: :verify_mobile_phone
|
14
|
+
match "verifyMobilePhone/:code", via: :post, as: :verify_mobile_phone, unscope: true
|
15
15
|
# /1.1/requestLoginSmsCode POST 请求发送手机号码登录短信。
|
16
|
-
route :requestLoginSmsCode, via: :post
|
16
|
+
route :requestLoginSmsCode, via: :post, unscope: true
|
17
17
|
# /1.1/requestPasswordResetBySmsCode POST 请求发送手机短信验证码重置用户密码。
|
18
|
-
route :requestPasswordResetBySmsCode, via: :post
|
18
|
+
route :requestPasswordResetBySmsCode, via: :post, unscope: true
|
19
19
|
# /1.1/resetPasswordBySmsCode/<code> PUT 验证手机短信验证码并重置密码。
|
20
|
-
match "resetPasswordBySmsCode/:code", via: :put, as: :reset_password_by_sms_code
|
20
|
+
match "resetPasswordBySmsCode/:code", via: :put, as: :reset_password_by_sms_code, unscope: true
|
21
21
|
end
|
data/lib/lean_cloud/route.rb
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
module LeanCloud
|
2
2
|
class Route
|
3
|
-
attr_accessor :name, :request, :match, :options
|
4
|
-
def initialize(name, options, match=false)
|
3
|
+
attr_accessor :name, :request, :match, :options, :block
|
4
|
+
def initialize(name, options, match=false, &block)
|
5
5
|
options[:on] ||= :collection
|
6
6
|
@name = name
|
7
7
|
@request = options[:via] ||= :get
|
8
8
|
@match = match
|
9
9
|
@options = options
|
10
|
+
@block = block
|
10
11
|
end
|
11
12
|
|
12
13
|
def url(*args)
|
13
14
|
namespace = options[:namespace] if !options[:unscope]
|
14
15
|
id = args.shift if options[:on].to_sym == :member
|
15
|
-
path = !match ? name.to_s : match.sub(/(:\w+)/, args[0]) if !options[:root]
|
16
|
+
path = !match ? name.to_s : match.sub(/(:\w+)/, args[0].to_s) if !options[:root]
|
16
17
|
[namespace, id, path].compact.join('/')
|
17
18
|
end
|
18
19
|
end
|
data/lib/lean_cloud/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lean_cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- plusrez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -78,6 +78,10 @@ files:
|
|
78
78
|
- MIT-LICENSE
|
79
79
|
- README.md
|
80
80
|
- Rakefile
|
81
|
+
- examples/AVOSRealtimeGroups.rb
|
82
|
+
- examples/file.rb
|
83
|
+
- examples/live_file.rb
|
84
|
+
- examples/live_room.rb
|
81
85
|
- lean_cloud.gemspec
|
82
86
|
- lib/lean_cloud.rb
|
83
87
|
- lib/lean_cloud/base.rb
|