ringcentral-rss 0.0.2 → 0.0.3
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 +5 -5
- data/lib/ringcentral-rss.rb +1 -1
- data/lib/ringcentral-rss/atom_feed.rb +5 -0
- data/test/test_entry.rb +31 -0
- data/test/test_feed.rb +62 -0
- metadata +32 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db25e81b6d8b5ae39d1d9600fa87b4b31de905f8
|
4
|
+
data.tar.gz: f2dc8d51fbbffc5a2740061a70a9349465ac6588
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da8609e3c27717d33c5c76509d2f58dc058f752f0e93714e9eb4ea589b43560d8d03076565ab05081c386683e3731665b86ce0929d9d807d6fb34fe1d4f55dcf
|
7
|
+
data.tar.gz: d950ba999e5dacd84cb1ab5d8986480c07d3d14cb1e2630ccba2fdb3b9e2124cfde29c1ce26ab626dae9cdfb5e67e729f17aee8bd4059a11435dfe7142985f5c
|
data/README.md
CHANGED
@@ -39,9 +39,9 @@ res = client.http.get do |req|
|
|
39
39
|
end
|
40
40
|
|
41
41
|
rc_feed = RingCentral::RSS::AtomFeed.new res
|
42
|
-
xml = rc_feed.
|
42
|
+
xml = rc_feed.to_xml
|
43
43
|
|
44
|
-
xml = RingCentral::RSS::AtomFeed.new(res).
|
44
|
+
xml = RingCentral::RSS::AtomFeed.new(res).to_xml
|
45
45
|
```
|
46
46
|
|
47
47
|
## Demo Scripts
|
@@ -55,9 +55,9 @@ Demo scripts are located in the [`scripts` directory of the GitHub repo](https:/
|
|
55
55
|
|
56
56
|
The genesis of this is the requirement to have RingCentral SMS messages available via a RSS feed. There are 3 ways to accomplish this:
|
57
57
|
|
58
|
-
1. Have a proxy feed that always retrieves the message-store API response and converts it to RSS
|
59
|
-
1. Have a script that
|
60
|
-
1. Have a script that
|
58
|
+
1. Have a proxy feed that always retrieves the `message-store` API response and converts it to RSS
|
59
|
+
1. Have a script that subscribes to the `message-store` eventFilter and publishes to a remote feed
|
60
|
+
1. Have a script that polls the `message-store` API and publishes to a remote feed
|
61
61
|
|
62
62
|
The library code will convert RingCentral message-store API response and message objects into an XML feed. The included Sinatra web service will host this as a proxy feed (option #1 above).
|
63
63
|
|
data/lib/ringcentral-rss.rb
CHANGED
@@ -11,6 +11,7 @@ module RingCentral
|
|
11
11
|
else
|
12
12
|
@feed_name = 'RingCentral Feed'
|
13
13
|
end
|
14
|
+
@feed = nil
|
14
15
|
load_message_store_response(response) unless response.nil?
|
15
16
|
end
|
16
17
|
|
@@ -24,6 +25,10 @@ module RingCentral
|
|
24
25
|
end
|
25
26
|
end
|
26
27
|
end
|
28
|
+
|
29
|
+
def to_xml
|
30
|
+
(!@feed.nil? && @feed.is_a?(Atom::Feed)) ? @feed.to_xml : nil
|
31
|
+
end
|
27
32
|
end
|
28
33
|
end
|
29
34
|
end
|
data/test/test_entry.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require './test/test_base.rb'
|
2
|
+
require 'ringcentral-rss'
|
3
|
+
require 'nokogiri'
|
4
|
+
|
5
|
+
class RingCentralRSSEntryTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_main
|
8
|
+
message = {
|
9
|
+
'to' => [{'phoneNumber' => '+16505551212'}],
|
10
|
+
'from' => {'phoneNumber' => '+14155551212'},
|
11
|
+
'subject' => 'hello world!',
|
12
|
+
'direction' => 'Inbound',
|
13
|
+
'type' => 'SMS',
|
14
|
+
'lastModifiedTime' => '2015-01-01T00:00:00+0000'
|
15
|
+
}
|
16
|
+
|
17
|
+
entry = RingCentral::RSS::AtomEntry.new message
|
18
|
+
xml = entry.entry.to_xml
|
19
|
+
|
20
|
+
doc = Nokogiri::XML xml
|
21
|
+
doc.remove_namespaces!
|
22
|
+
|
23
|
+
doc.xpath('//summary').each do |el|
|
24
|
+
assert_equal message['subject'], el.text
|
25
|
+
end
|
26
|
+
|
27
|
+
doc.xpath('//title').each do |el|
|
28
|
+
assert_equal entry.build_title(message), el.text
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/test/test_feed.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
require './test/test_base.rb'
|
2
|
+
require 'faraday'
|
3
|
+
require 'nokogiri'
|
4
|
+
require 'ringcentral-rss'
|
5
|
+
|
6
|
+
class RingCentralRSSFeedTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_main
|
9
|
+
headers = {'date' => 'Wed, 09 Nov 2016 06:46:16 GMT'}
|
10
|
+
xml_time = '2016-11-09T06:46:16+00:00'
|
11
|
+
|
12
|
+
message = {
|
13
|
+
'to' => [{'phoneNumber' => '+16505551212'}],
|
14
|
+
'from' => {'phoneNumber' => '+14155551212'},
|
15
|
+
'subject' => 'hello world!',
|
16
|
+
'direction' => 'Inbound',
|
17
|
+
'type' => 'SMS',
|
18
|
+
'lastModifiedTime' => '2015-01-01T00:00:00+0000'
|
19
|
+
}
|
20
|
+
|
21
|
+
body = {
|
22
|
+
'uri' => 'https://platform.devtest.ringcentral.com/restapi/v1.0/account/~/extension/~/message-store',
|
23
|
+
'records' => [ message ]
|
24
|
+
}
|
25
|
+
|
26
|
+
stubs = Faraday::Adapter::Test::Stubs.new do |stub|
|
27
|
+
stub.get('/message-store') { |env| [200, headers, body] }
|
28
|
+
end
|
29
|
+
|
30
|
+
test = Faraday.new do |builder|
|
31
|
+
builder.adapter :test, stubs
|
32
|
+
end
|
33
|
+
|
34
|
+
res = test.get '/message-store'
|
35
|
+
|
36
|
+
feed = RingCentral::RSS::AtomFeed.new
|
37
|
+
assert_equal nil, feed.to_xml
|
38
|
+
|
39
|
+
feed.load_message_store_response res
|
40
|
+
|
41
|
+
xml = feed.to_xml
|
42
|
+
|
43
|
+
doc = Nokogiri::XML xml
|
44
|
+
doc.remove_namespaces!
|
45
|
+
|
46
|
+
doc.xpath('//feed/link').each do |el|
|
47
|
+
assert_equal body['uri'], el.attribute('href').value
|
48
|
+
end
|
49
|
+
|
50
|
+
doc.xpath('//feed/title').each do |el|
|
51
|
+
assert_equal 'RingCentral Feed', el.text
|
52
|
+
end
|
53
|
+
|
54
|
+
doc.xpath('//feed/updated').each do |el|
|
55
|
+
assert_equal xml_time, el.text
|
56
|
+
end
|
57
|
+
|
58
|
+
doc.xpath('//feed/entry/summary').each do |el|
|
59
|
+
assert_equal message['subject'], el.text
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ringcentral-rss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Wang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ratom
|
@@ -44,6 +44,34 @@ dependencies:
|
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: faraday
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.9'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0.9'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: nokogiri
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '1.6'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '1.6'
|
47
75
|
- !ruby/object:Gem::Dependency
|
48
76
|
name: rake
|
49
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,6 +129,8 @@ files:
|
|
101
129
|
- lib/ringcentral-rss/atom_entry.rb
|
102
130
|
- lib/ringcentral-rss/atom_feed.rb
|
103
131
|
- test/test_base.rb
|
132
|
+
- test/test_entry.rb
|
133
|
+
- test/test_feed.rb
|
104
134
|
- test/test_setup.rb
|
105
135
|
homepage: https://github.com/grokify/
|
106
136
|
licenses:
|