Class: AliyunMns::Topic
- Inherits:
-
Object
- Object
- AliyunMns::Topic
- Defined in:
- lib/aliyun_mns/topic.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#subscription_name ⇒ Object
readonly
Returns the value of attribute subscription_name.
Class Method Summary collapse
Instance Method Summary collapse
-
#create(opts = {}) ⇒ Object
创建topic.
-
#delete ⇒ Object
删除topic.
-
#get_topic_attributes ⇒ Object
获取topic属性.
-
#initialize(name, subscription_name = nil) ⇒ Topic
constructor
A new instance of Topic.
- #message_path ⇒ Object
-
#publish_message(opts = {}) ⇒ Object
发布消息.
-
#subscribe(opts = {}) ⇒ Object
订阅topic.
- #subscribe_path ⇒ Object
- #topic_path ⇒ Object
-
#unsubscribe ⇒ Object
退订topic.
Constructor Details
#initialize(name, subscription_name = nil) ⇒ Topic
Returns a new instance of Topic.
19 20 21 22 |
# File 'lib/aliyun_mns/topic.rb', line 19 def initialize(name, subscription_name = nil) @name = name @subscription_name = subscription_name unless subscription_name.nil? end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
3 4 5 |
# File 'lib/aliyun_mns/topic.rb', line 3 def name @name end |
#subscription_name ⇒ Object (readonly)
Returns the value of attribute subscription_name.
3 4 5 |
# File 'lib/aliyun_mns/topic.rb', line 3 def subscription_name @subscription_name end |
Class Method Details
.[](name, subscription_name = nil) ⇒ Object
7 8 9 |
# File 'lib/aliyun_mns/topic.rb', line 7 def [](name, subscription_name = nil) Topic.new(name, subscription_name) end |
.topics(opts = {}) ⇒ Object
11 12 13 14 15 16 |
# File 'lib/aliyun_mns/topic.rb', line 11 def topics(opts = {}) = {query: "x-mns-prefix", offset: "x-mns-marker", size: "x-mns-ret-number"} mqs_headers = opts.slice(*.keys).reduce({}) { |mqs_headers, item| k, v = *item; mqs_headers.merge!([k] => v) } response = Request.get("/topics", mqs_headers: mqs_headers) Hash.xml_array(response, "Topics", "Topic").collect { |item| Topic.new(URI(item["TopicURL"]).path.sub!(/^\/topics\//, "")) } end |
Instance Method Details
#create(opts = {}) ⇒ Object
创建topic
25 26 27 28 29 30 31 32 |
# File 'lib/aliyun_mns/topic.rb', line 25 def create(opts={}) Request.put(topic_path) do |request| = { :MaximumMessageSize => 65536 }.merge(opts) request.content :Topic, end end |
#delete ⇒ Object
删除topic
35 36 37 |
# File 'lib/aliyun_mns/topic.rb', line 35 def delete Request.delete(topic_path) end |
#get_topic_attributes ⇒ Object
获取topic属性
40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/aliyun_mns/topic.rb', line 40 def get_topic_attributes topic_hash = Hash.from_xml(Request.get(topic_path)) { :topic_name => topic_hash["Topic"]["TopicName"], :create_time => topic_hash["Topic"]["CreateTime"], :last_modify_time => topic_hash["Topic"]["LastModifyTime"], :maximum_message_size => topic_hash["Topic"]["MaximumMessageSize"], :message_retention_period => topic_hash["Topic"]["MessageRetentionPeriod"], :message_ount => topic_hash["Topic"]["MessageCount"], :logging_enabled => topic_hash["Topic"]["LoggingEnabled"] } end |
#message_path ⇒ Object
89 90 91 |
# File 'lib/aliyun_mns/topic.rb', line 89 def "/topics/#{name}/messages" end |
#publish_message(opts = {}) ⇒ Object
发布消息
71 72 73 74 75 76 77 78 79 |
# File 'lib/aliyun_mns/topic.rb', line 71 def (opts = {}) if opts[:MessageBody].nil? || opts[:MessageBody].blank? raise RequestException.new(Exception.new("publish message parameters invalid")) else Request.post() do |request| request.content(:Message, opts) end end end |
#subscribe(opts = {}) ⇒ Object
订阅topic
55 56 57 58 59 60 61 62 63 |
# File 'lib/aliyun_mns/topic.rb', line 55 def subscribe(opts = {}) if opts[:Endpoint].nil? || opts[:Endpoint].blank? raise RequestException.new(Exception.new("subscribe parameters invalid")) else Request.put(subscribe_path) do |request| request.content(:Subscription, opts) end end end |
#subscribe_path ⇒ Object
85 86 87 |
# File 'lib/aliyun_mns/topic.rb', line 85 def subscribe_path "/topics/#{name}/subscriptions/#{subscription_name}" end |
#topic_path ⇒ Object
81 82 83 |
# File 'lib/aliyun_mns/topic.rb', line 81 def topic_path "/topics/#{name}" end |
#unsubscribe ⇒ Object
退订topic
66 67 68 |
# File 'lib/aliyun_mns/topic.rb', line 66 def unsubscribe Request.delete(subscribe_path) end |