aliyun_iot 0.1.3 → 0.1.4
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 +4 -4
- data/README.md +3 -1
- data/lib/aliyun_iot.rb +1 -0
- data/lib/aliyun_iot/message.rb +16 -12
- data/lib/aliyun_iot/product.rb +6 -4
- data/lib/aliyun_iot/queue.rb +24 -13
- data/lib/aliyun_iot/result.rb +16 -0
- data/lib/aliyun_iot/topic.rb +7 -7
- data/lib/aliyun_iot/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b77eea144b0719d2d909bf02bf10fb08c3bfa6e6
|
4
|
+
data.tar.gz: 2b0450faec422ce648dbd016d5656cc1167545ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ecde67ef1d5385fa84b19be5d14e6100a00d921ab9bc67959a9dcb84dd5a3744f3b7270eb3f9c34ed7189017b167f33fe3ad5a1d6562e28d1082257fcbef720
|
7
|
+
data.tar.gz: 98f5eccf02d8dc2edc26c8bb657aca565294229b774a8b7ba33c1dcdd2f204112c074165b799648124a8214eeda128e34cc85f62d13c549cf6127031f8b395b5
|
data/README.md
CHANGED
@@ -60,6 +60,7 @@ production:
|
|
60
60
|
```ruby
|
61
61
|
AliyunIot::Queue.queues ## 列出所有队列
|
62
62
|
AliyunIot::Queue[QueueName].receive_message(WaitSeconds) ## 消费消息
|
63
|
+
AliyunIot::Queue[QueueName].batch_receive_message(MessageCount, WaitSeconds) ## 批量消费消息
|
63
64
|
AliyunIot::Queue[QueueName].peek ## 查看消息
|
64
65
|
AliyunIot::Queue[QueueName].create({DelaySeconds, MaximumMessageSize, MessageRetentionPeriod, VisibilityTimeout, PollingWaitSeconds, LoggingEnabled}) ## 创建队列
|
65
66
|
AliyunIot::Queue[QueueName].delete ## 删除队列
|
@@ -82,7 +83,8 @@ production:
|
|
82
83
|
|
83
84
|
```ruby
|
84
85
|
AliyunIot::Product.create(Name) ## 创建产品
|
85
|
-
AliyunIot::Product.
|
86
|
+
AliyunIot::Product.batch_get_device_state({DeviceName.1, DeviceName.2 ....}) ## 批量查询设备状态
|
87
|
+
AliyunIot::Product.check_regist_state(ApplyId) ## 查询注册状态
|
86
88
|
AliyunIot::Product.list_regist_info(ApplyId, PageSize, CurrentPage) ## 批量查询注册状态
|
87
89
|
AliyunIot::Product[ProductKey].update({ProductName, ProductDesc}) ## 修改产品信息
|
88
90
|
AliyunIot::Product[ProductKey].list({PageSize, CurrentPage}) ## 查询产品的设备列表
|
data/lib/aliyun_iot.rb
CHANGED
data/lib/aliyun_iot/message.rb
CHANGED
@@ -1,20 +1,12 @@
|
|
1
1
|
require "aliyun_iot/request/xml"
|
2
2
|
module AliyunIot
|
3
3
|
class Message
|
4
|
-
attr_reader :queue, :id, :body_md5, :body, :receipt_handle, :enqueue_at, :first_enqueue_at, :next_visible_at, :dequeue_count, :priority
|
4
|
+
attr_reader :h, :queue, :id, :body_md5, :body, :receipt_handle, :enqueue_at, :first_enqueue_at, :next_visible_at, :dequeue_count, :priority
|
5
5
|
|
6
|
-
def initialize(queue,
|
7
|
-
h =
|
6
|
+
def initialize(queue, h)
|
7
|
+
@h = h
|
8
8
|
@queue = queue
|
9
|
-
|
10
|
-
@body_md5 = h["MessageBodyMD5"]
|
11
|
-
@body = h["MessageBody"]
|
12
|
-
@enqueue_at = Time.at(h["EnqueueTime"].to_i/1000.0)
|
13
|
-
@first_enqueue_at = Time.at(h["FirstDequeueTime"].to_i/1000.0)
|
14
|
-
@dequeue_count = h["DequeueCount"].to_i
|
15
|
-
@priority = h["Priority"].to_i
|
16
|
-
@receipt_handle = h["ReceiptHandle"]
|
17
|
-
@next_visible_at = Time.at(h["NextVisibleTime"].to_i/1000.0)
|
9
|
+
set_message_info
|
18
10
|
end
|
19
11
|
|
20
12
|
#删除消息
|
@@ -56,6 +48,18 @@ module AliyunIot
|
|
56
48
|
end
|
57
49
|
|
58
50
|
private
|
51
|
+
|
52
|
+
def set_message_info
|
53
|
+
@id = h["MessageId"]
|
54
|
+
@body_md5 = h["MessageBodyMD5"]
|
55
|
+
@body = h["MessageBody"]
|
56
|
+
@enqueue_at = Time.at(h["EnqueueTime"].to_i/1000.0)
|
57
|
+
@first_enqueue_at = Time.at(h["FirstDequeueTime"].to_i/1000.0)
|
58
|
+
@dequeue_count = h["DequeueCount"].to_i
|
59
|
+
@priority = h["Priority"].to_i
|
60
|
+
@receipt_handle = h["ReceiptHandle"]
|
61
|
+
@next_visible_at = Time.at(h["NextVisibleTime"].to_i/1000.0)
|
62
|
+
end
|
59
63
|
|
60
64
|
def set_data(query)
|
61
65
|
{mqs_headers: {"x-mns-version" => "2015-06-06"}, query: query}
|
data/lib/aliyun_iot/product.rb
CHANGED
@@ -51,13 +51,15 @@ module AliyunIot
|
|
51
51
|
def regist_devices(params = {})
|
52
52
|
execute params, 'ApplyDeviceWithNames'
|
53
53
|
end
|
54
|
+
|
55
|
+
def batch_get_device_state(params = {})
|
56
|
+
execute params, 'BatchGetDeviceState'
|
57
|
+
end
|
54
58
|
|
55
59
|
def pub(params = {})
|
56
60
|
raise RequestException.new(Exception.new("message MessageContent is empty!")) if params[:MessageContent].nil?
|
57
|
-
|
58
|
-
|
59
|
-
params[:MessageContent] = Base64.urlsafe_encode64(params[:MessageContent]).chomp
|
60
|
-
execute params.merge(default_params), 'Pub'
|
61
|
+
params[:MessageContent] = Base64.encode64(params[:MessageContent]).chomp
|
62
|
+
execute params, 'Pub'
|
61
63
|
end
|
62
64
|
|
63
65
|
def sub(params = {})
|
data/lib/aliyun_iot/queue.rb
CHANGED
@@ -16,7 +16,7 @@ module AliyunIot
|
|
16
16
|
def queues(opts = {})
|
17
17
|
mqs_options = {query: "x-mns-prefix", offset: "x-mns-marker", size: "x-mns-ret-number"}
|
18
18
|
mqs_headers = opts.slice(*mqs_options.keys).reduce({}) { |mqs_headers, item| k, v = *item; mqs_headers.merge!(mqs_options[k] => v) }
|
19
|
-
response = Request::Xml.get("/queues", mqs_headers
|
19
|
+
response = Request::Xml.get("/queues", mqs_headers)
|
20
20
|
Hash.xml_array(response, "Queues", "Queue").collect { |item| Queue.new(URI(item["QueueURL"]).path.sub!(/^\/queues\//, "")) }
|
21
21
|
end
|
22
22
|
end
|
@@ -28,7 +28,7 @@ module AliyunIot
|
|
28
28
|
|
29
29
|
#创建队列
|
30
30
|
def create(opts = {})
|
31
|
-
Request::Xml.put(queue_path
|
31
|
+
Request::Xml.put(queue_path) do |request|
|
32
32
|
msg_options = {
|
33
33
|
:VisibilityTimeout => 30,
|
34
34
|
:DelaySeconds => 0,
|
@@ -36,39 +36,50 @@ module AliyunIot
|
|
36
36
|
:MessageRetentionPeriod => 345600,
|
37
37
|
:PollingWaitSeconds => 0
|
38
38
|
}.merge(opts)
|
39
|
-
request.
|
39
|
+
request.content(:Queue, msg_options)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
43
|
#查看消息
|
44
44
|
def peek
|
45
|
-
|
46
|
-
Request::Xml.get(messages_path, request_opts)
|
45
|
+
Request::Xml.get(messages_path, query: {peekonly: true})
|
47
46
|
end
|
48
47
|
|
49
48
|
#删除队列
|
50
49
|
def delete
|
51
|
-
Request::Xml.delete
|
50
|
+
Request::Xml.delete queue_path
|
52
51
|
end
|
53
52
|
|
54
53
|
#发送消息
|
55
54
|
def send_message(message, opts = {})
|
56
|
-
Request::Xml.post(messages_path
|
55
|
+
Request::Xml.post(messages_path) do |request|
|
57
56
|
msg_options = {
|
58
57
|
:DelaySeconds => 0,
|
59
58
|
:Priority => 8
|
60
59
|
}.merge(opts)
|
61
|
-
request.
|
60
|
+
request.content(:Message, msg_options.merge(:MessageBody => message.to_s))
|
62
61
|
end
|
63
62
|
end
|
64
63
|
|
65
64
|
#消费消息
|
66
|
-
def receive_message(wait_seconds =
|
67
|
-
|
68
|
-
request_opts.merge!(query: {waitseconds: wait_seconds}) if wait_seconds
|
69
|
-
result = Request::Xml.get(messages_path, request_opts)
|
65
|
+
def receive_message(wait_seconds = 3)
|
66
|
+
result = Request::Xml.get(messages_path, query: {waitseconds: wait_seconds})
|
70
67
|
return nil if result.nil?
|
71
|
-
|
68
|
+
Result.new(self, result).get_message
|
69
|
+
end
|
70
|
+
|
71
|
+
#批量消费消息
|
72
|
+
def batch_receive_message(num = 16, wait_seconds = 3)
|
73
|
+
result = Request::Xml.get(messages_path, query: {waitseconds: wait_seconds, numOfMessages: num})
|
74
|
+
return nil if result.nil?
|
75
|
+
Result.new(self, result, "Messages", "Message").get_message
|
76
|
+
end
|
77
|
+
|
78
|
+
#设置队列属性
|
79
|
+
def set_attr(opts = {})
|
80
|
+
Request::Xml.put(queue_path, query: {Metaoverride: true}) do |request|
|
81
|
+
request.content(:Queue, opts)
|
82
|
+
end
|
72
83
|
end
|
73
84
|
|
74
85
|
def queue_path
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module AliyunIot
|
2
|
+
class Result
|
3
|
+
|
4
|
+
attr_reader :h, :queue
|
5
|
+
|
6
|
+
def initialize(queue, content, *path)
|
7
|
+
@queue = queue
|
8
|
+
@h = path.blank? ? Hash.xml_object(content, "Message") : Hash.xml_array(content, *path)
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_message
|
12
|
+
h.is_a?(Array) ? h.map{ |message| Message.new(queue, message) } : Message.new(queue, h)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
data/lib/aliyun_iot/topic.rb
CHANGED
@@ -15,7 +15,7 @@ module AliyunIot
|
|
15
15
|
def topics(opts = {})
|
16
16
|
mqs_options = {query: "x-mns-prefix", offset: "x-mns-marker", size: "x-mns-ret-number"}
|
17
17
|
mqs_headers = opts.slice(*mqs_options.keys).reduce({}) { |mqs_headers, item| k, v = *item; mqs_headers.merge!(mqs_options[k] => v) }
|
18
|
-
response = Request::Xml.get("/topics", mqs_headers: mqs_headers
|
18
|
+
response = Request::Xml.get("/topics", mqs_headers: mqs_headers)
|
19
19
|
Hash.xml_array(response, "Topics", "Topic").collect { |item| Topic.new(URI(item["TopicURL"]).path.sub!(/^\/topics\//, "")) }
|
20
20
|
end
|
21
21
|
end
|
@@ -27,7 +27,7 @@ module AliyunIot
|
|
27
27
|
|
28
28
|
#创建topic
|
29
29
|
def create(opts={})
|
30
|
-
Request::Xml.put(topic_path
|
30
|
+
Request::Xml.put(topic_path) do |request|
|
31
31
|
msg_options = {
|
32
32
|
MaximumMessageSize: 65536
|
33
33
|
}.merge(opts)
|
@@ -37,12 +37,12 @@ module AliyunIot
|
|
37
37
|
|
38
38
|
# 删除topic
|
39
39
|
def delete
|
40
|
-
Request::Xml.delete(topic_path
|
40
|
+
Request::Xml.delete(topic_path)
|
41
41
|
end
|
42
42
|
|
43
43
|
# 获取topic属性
|
44
44
|
def get_topic_attributes
|
45
|
-
topic_hash = Hash.from_xml(Request::Xml.get(topic_path
|
45
|
+
topic_hash = Hash.from_xml(Request::Xml.get(topic_path))
|
46
46
|
{
|
47
47
|
topic_name: topic_hash["Topic"]["TopicName"],
|
48
48
|
create_time: topic_hash["Topic"]["CreateTime"],
|
@@ -60,7 +60,7 @@ module AliyunIot
|
|
60
60
|
if opts[:Endpoint].nil? || opts[:Endpoint].blank?
|
61
61
|
raise Request::XmlException.new(Exception.new("subscribe parameters invalid"))
|
62
62
|
else
|
63
|
-
Request::Xml.put(subscribe_path
|
63
|
+
Request::Xml.put(subscribe_path) do |request|
|
64
64
|
request.content(:Subscription, opts)
|
65
65
|
end
|
66
66
|
end
|
@@ -68,7 +68,7 @@ module AliyunIot
|
|
68
68
|
|
69
69
|
#退订topic
|
70
70
|
def unsubscribe
|
71
|
-
Request::Xml.delete(subscribe_path
|
71
|
+
Request::Xml.delete(subscribe_path)
|
72
72
|
end
|
73
73
|
|
74
74
|
#发布消息
|
@@ -76,7 +76,7 @@ module AliyunIot
|
|
76
76
|
if opts[:MessageBody].nil? || opts[:MessageBody].blank?
|
77
77
|
raise Exception.new("publish message parameters invalid")
|
78
78
|
else
|
79
|
-
Request::Xml.post(message_path
|
79
|
+
Request::Xml.post(message_path) do |request|
|
80
80
|
request.content(:Message, opts)
|
81
81
|
end
|
82
82
|
end
|
data/lib/aliyun_iot/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aliyun_iot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CooCOccO
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- lib/aliyun_iot/request/http_client.rb
|
127
127
|
- lib/aliyun_iot/request/json.rb
|
128
128
|
- lib/aliyun_iot/request/xml.rb
|
129
|
+
- lib/aliyun_iot/result.rb
|
129
130
|
- lib/aliyun_iot/topic.rb
|
130
131
|
- lib/aliyun_iot/version.rb
|
131
132
|
- lib/generators/aliyun_iot/install_generator.rb
|