govdelivery-tms 0.8.0

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.
Files changed (65) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +14 -0
  3. data/README.md +324 -0
  4. data/Rakefile +20 -0
  5. data/govdelivery-tms.gemspec +30 -0
  6. data/lib/govdelivery-tms.rb +43 -0
  7. data/lib/govdelivery-tms/base.rb +37 -0
  8. data/lib/govdelivery-tms/client.rb +97 -0
  9. data/lib/govdelivery-tms/collection_resource.rb +54 -0
  10. data/lib/govdelivery-tms/connection.rb +34 -0
  11. data/lib/govdelivery-tms/errors.rb +58 -0
  12. data/lib/govdelivery-tms/instance_resource.rb +219 -0
  13. data/lib/govdelivery-tms/link_header.rb +223 -0
  14. data/lib/govdelivery-tms/logger.rb +36 -0
  15. data/lib/govdelivery-tms/mail/delivery_method.rb +63 -0
  16. data/lib/govdelivery-tms/resource/collections.rb +98 -0
  17. data/lib/govdelivery-tms/resource/command.rb +25 -0
  18. data/lib/govdelivery-tms/resource/command_action.rb +17 -0
  19. data/lib/govdelivery-tms/resource/command_type.rb +20 -0
  20. data/lib/govdelivery-tms/resource/email_message.rb +81 -0
  21. data/lib/govdelivery-tms/resource/email_recipient.rb +31 -0
  22. data/lib/govdelivery-tms/resource/email_recipient_click.rb +8 -0
  23. data/lib/govdelivery-tms/resource/email_recipient_open.rb +8 -0
  24. data/lib/govdelivery-tms/resource/email_template.rb +15 -0
  25. data/lib/govdelivery-tms/resource/from_address.rb +10 -0
  26. data/lib/govdelivery-tms/resource/inbound_sms_message.rb +8 -0
  27. data/lib/govdelivery-tms/resource/ipaws_acknowledgement.rb +9 -0
  28. data/lib/govdelivery-tms/resource/ipaws_alert.rb +38 -0
  29. data/lib/govdelivery-tms/resource/ipaws_category.rb +7 -0
  30. data/lib/govdelivery-tms/resource/ipaws_cog_profile.rb +29 -0
  31. data/lib/govdelivery-tms/resource/ipaws_event_code.rb +7 -0
  32. data/lib/govdelivery-tms/resource/ipaws_nwem_area.rb +18 -0
  33. data/lib/govdelivery-tms/resource/ipaws_nwem_authorization.rb +9 -0
  34. data/lib/govdelivery-tms/resource/ipaws_nwem_auxilary_data.rb +8 -0
  35. data/lib/govdelivery-tms/resource/ipaws_response_type.rb +7 -0
  36. data/lib/govdelivery-tms/resource/ipaws_static_resource.rb +8 -0
  37. data/lib/govdelivery-tms/resource/keyword.rb +30 -0
  38. data/lib/govdelivery-tms/resource/recipient.rb +10 -0
  39. data/lib/govdelivery-tms/resource/sms_message.rb +35 -0
  40. data/lib/govdelivery-tms/resource/webhook.rb +20 -0
  41. data/lib/govdelivery-tms/util/core_ext.rb +27 -0
  42. data/lib/govdelivery-tms/util/hal_link_parser.rb +50 -0
  43. data/lib/govdelivery-tms/version.rb +3 -0
  44. data/spec/client_spec.rb +41 -0
  45. data/spec/command_types_spec.rb +29 -0
  46. data/spec/email_message_spec.rb +102 -0
  47. data/spec/email_template_spec.rb +149 -0
  48. data/spec/errors_spec.rb +13 -0
  49. data/spec/from_address_spec.rb +86 -0
  50. data/spec/inbound_sms_messages_spec.rb +19 -0
  51. data/spec/instance_resource_spec.rb +61 -0
  52. data/spec/ipaws_acknowledgement_spec.rb +16 -0
  53. data/spec/ipaws_alerts_spec.rb +192 -0
  54. data/spec/ipaws_cog_profile_spec.rb +75 -0
  55. data/spec/ipaws_event_codes_spec.rb +35 -0
  56. data/spec/ipaws_nwem_areas_spec.rb +58 -0
  57. data/spec/ipaws_nwem_authorization_spec.rb +16 -0
  58. data/spec/keyword_spec.rb +62 -0
  59. data/spec/keywords_spec.rb +21 -0
  60. data/spec/mail/delivery_method_spec.rb +52 -0
  61. data/spec/sms_message_spec.rb +63 -0
  62. data/spec/sms_messages_spec.rb +21 -0
  63. data/spec/spec_helper.rb +31 -0
  64. data/spec/tms_spec.rb +7 -0
  65. metadata +172 -0
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe TMS::IpawsEventCodes do
4
+ context "loading Ipaws event codes" do
5
+ let(:client) { double('client') }
6
+ let(:event_codes) { TMS::IpawsEventCodes.new(client, '/ipaws/event_codes') }
7
+ it 'should GET itself' do
8
+ body = [
9
+ {
10
+ value: 'ADR',
11
+ description: 'Administrative Message/Follow up Statement',
12
+ cap_exchange: true,
13
+ core_ipaws_profile: true,
14
+ nwem: true,
15
+ eas_and_public: true,
16
+ cmas: true
17
+ },
18
+ {
19
+ value: 'AVA',
20
+ description: 'Avalanche Watch',
21
+ cap_exchange: true,
22
+ core_ipaws_profile: true,
23
+ nwem: true,
24
+ eas_and_public: true,
25
+ cmas: false }
26
+ ]
27
+ client.should_receive(:get).and_return(double('response', :body => body, :status => 200, :headers => {}))
28
+ event_codes.get
29
+ event_codes.collection.length.should == 2
30
+ event_codes.collection.each do |event_code|
31
+ event_code.should be_an_instance_of(TMS::IpawsEventCode)
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe TMS::IpawsNwemAreas do
4
+
5
+ it 'gets IPAWS NWEM areas from client' do
6
+ client = double(:client)
7
+ response_body = [
8
+ {
9
+ "countyFipsCd"=>"51013",
10
+ "countyName"=>"Arlington",
11
+ "geoType"=>"C",
12
+ "stateCd"=>"VA",
13
+ "stateFips"=>"51",
14
+ "stateName"=>"Virginia",
15
+ "zoneCd"=>"054",
16
+ "zoneName"=>"Arlington/Falls Church/Alexandria"
17
+ },
18
+ {
19
+ "countyFipsCd"=>"51510",
20
+ "countyName"=>"City of Alexandria",
21
+ "geoType"=>"C",
22
+ "stateCd"=>"VA",
23
+ "stateFips"=>"51",
24
+ "stateName"=>"Virginia",
25
+ "zoneCd"=>"054",
26
+ "zoneName"=>"Arlington/Falls Church/Alexandria"
27
+ }
28
+ ]
29
+ nwem_areas = TMS::IpawsNwemAreas.new(client, '/ipaws/nwem_areas')
30
+
31
+ nwem_areas.client.should_receive('get').with(nwem_areas.href).and_return(
32
+ double('response', :status => 200, :body => response_body, :headers => {})
33
+ )
34
+ nwem_areas.get.should == nwem_areas
35
+ nwem_areas.collection.size.should == 2
36
+
37
+ nwem_area = nwem_areas.collection[0]
38
+ nwem_area.countyFipsCd.should == '51013'
39
+ nwem_area.countyName.should == 'Arlington'
40
+ nwem_area.geoType.should == 'C'
41
+ nwem_area.stateCd.should == 'VA'
42
+ nwem_area.stateFips.should == '51'
43
+ nwem_area.stateName.should == 'Virginia'
44
+ nwem_area.zoneCd.should == '054'
45
+ nwem_area.zoneName.should == 'Arlington/Falls Church/Alexandria'
46
+
47
+ nwem_area = nwem_areas.collection[1]
48
+ nwem_area.countyFipsCd.should == '51510'
49
+ nwem_area.countyName.should == 'City of Alexandria'
50
+ nwem_area.geoType.should == 'C'
51
+ nwem_area.stateCd.should == 'VA'
52
+ nwem_area.stateFips.should == '51'
53
+ nwem_area.stateName.should == 'Virginia'
54
+ nwem_area.zoneCd.should == '054'
55
+ nwem_area.zoneName.should == 'Arlington/Falls Church/Alexandria'
56
+ end
57
+
58
+ end
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe TMS::IpawsNwemAuthorization do
4
+
5
+ it 'gets IPAWS NWEM Authorization from client' do
6
+ client = double(:client)
7
+ response_body = { "cogid" => "true" }
8
+ nwem_authorization = TMS::IpawsNwemAuthorization.new(client, '/ipaws/nwem_authorization', {})
9
+ nwem_authorization.client.should_receive('get').with(nwem_authorization.href).and_return(
10
+ double('response', :status => 200, :body => response_body)
11
+ )
12
+ nwem_authorization.get.should == nwem_authorization
13
+ nwem_authorization.cogid.should == "true"
14
+ end
15
+
16
+ end
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ describe TMS::Keyword do
4
+ context "creating a new keyword" do
5
+ let(:client) do
6
+ double('client')
7
+ end
8
+ before do
9
+ @keyword = TMS::Keyword.new(client, nil, {:name => 'LOL', :response_text => 'very funny!'})
10
+ end
11
+ it 'should initialize with attrs' do
12
+ @keyword.name.should == 'LOL'
13
+ @keyword.response_text.should == 'very funny!'
14
+ end
15
+ it 'should post successfully' do
16
+ response = {:name => 'lol'}
17
+ @keyword.client.should_receive('post').with(@keyword).and_return(double('response', :status => 201, :body => response))
18
+ @keyword.post
19
+ @keyword.name.should == 'lol'
20
+ @keyword.response_text.should == 'very funny!'
21
+ end
22
+ it 'should handle errors' do
23
+ response = {'errors' => {:name => "can't be nil"}}
24
+ @keyword.client.should_receive('post').with(@keyword).and_return(double('response', :status => 422, :body => response))
25
+ @keyword.post
26
+ @keyword.name.should == 'LOL'
27
+ @keyword.response_text.should == 'very funny!'
28
+ @keyword.errors.should == {:name => "can't be nil"}
29
+ end
30
+ end
31
+
32
+ context 'an existing keyword' do
33
+ let(:client) do
34
+ double('client')
35
+ end
36
+ before do
37
+ # blank hash prevents the client from doing a GET in the initialize method
38
+ @keyword = TMS::Keyword.new(client, '/keywords/99', {})
39
+ end
40
+ it 'should GET cleanly' do
41
+ response = {:name => 'FOO', :response_text => 'hello'}
42
+ @keyword.client.should_receive('get').with(@keyword.href).and_return(double('response', :status => 200, :body => response))
43
+ @keyword.get
44
+ @keyword.name.should == 'FOO'
45
+ @keyword.response_text.should == 'hello'
46
+ end
47
+ it 'should PUT cleanly' do
48
+ @keyword.name = "GOVLIE"
49
+ response = {:name => 'govlie', :response_text => nil}
50
+ @keyword.client.should_receive('put').with(@keyword).and_return(double('response', :status => 200, :body => response))
51
+ @keyword.put
52
+ @keyword.name.should == 'govlie'
53
+ @keyword.response_text.should be_nil
54
+ end
55
+ it 'should DELETE cleanly' do
56
+ @keyword.client.should_receive('delete').with(@keyword.href).and_return(double('response', :status => 200, :body => ''))
57
+ @keyword.delete
58
+ end
59
+ end
60
+
61
+
62
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe TMS::Keywords do
4
+ context "loading keywords" do
5
+ let(:client) do
6
+ double('client')
7
+ end
8
+ before do
9
+ @keywords = TMS::Keywords.new(client, '/keywords')
10
+ end
11
+ it 'should GET ok' do
12
+ body = [
13
+ {"name"=>"services", "_links"=>{"self"=>"/keywords/1"}},
14
+ {"name"=>"subscribe", "_links"=>{"self"=>"/keywords/2"}}
15
+ ]
16
+ @keywords.client.should_receive(:get).and_return(double('response', :body => body, :status => 200, :headers => {}))
17
+ @keywords.get
18
+ @keywords.collection.length.should == 2
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+ require 'mail'
3
+ require 'govdelivery-tms/mail/delivery_method'
4
+ describe TMS::Mail::DeliveryMethod do
5
+ subject { TMS::Mail::DeliveryMethod.new({}) }
6
+ let(:client) { double('TMS::Client') }
7
+ let(:email_messages) { double('email_messages') }
8
+ let(:tms_message) { double('tms_message', :recipients => double(:build => TMS::Recipient.new('href'))) }
9
+
10
+ it 'should work with a basic Mail::Message' do
11
+ mail = Mail.new do
12
+ subject 'hi'
13
+ from '"My mom" <my@mom.com>'
14
+ to '"A Nice Fellow" <tyler@sink.govdelivery.com>'
15
+ body '<blink>HI</blink>'
16
+ end
17
+ client.stub(:email_messages).and_return(email_messages)
18
+ subject.stub(:client).and_return(client)
19
+ email_messages.should_receive(:build).with(
20
+ :from_name => mail[:from].display_names.first,
21
+ :subject => mail.subject,
22
+ :body => '<blink>HI</blink>'
23
+ ).and_return(tms_message)
24
+ tms_message.should_receive(:post!).and_return(true)
25
+
26
+ subject.deliver!(mail)
27
+ end
28
+
29
+ it 'should work with a multipart Mail::Message' do
30
+ mail = Mail.new do
31
+ subject 'hi'
32
+ from '"My mom" <my@mom.com>'
33
+ to '"A Nice Fellow" <tyler@sink.govdelivery.com>'
34
+
35
+ html_part do
36
+ content_type 'text/html; charset=UTF-8'
37
+ body '<blink>HTML</blink>'
38
+ end
39
+ end
40
+ client.stub(:email_messages).and_return(email_messages)
41
+ subject.stub(:client).and_return(client)
42
+ email_messages.should_receive(:build).with(
43
+ :from_name => mail[:from].display_names.first,
44
+ :subject => mail.subject,
45
+ :body => '<blink>HTML</blink>'
46
+ ).and_return(tms_message)
47
+ tms_message.should_receive(:post!).and_return(true)
48
+
49
+ subject.deliver!(mail)
50
+ end
51
+
52
+ end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ describe TMS::SmsMessage do
4
+ context "creating a new message" do
5
+ let(:client) do
6
+ double('client')
7
+ end
8
+ before do
9
+ @message = TMS::SmsMessage.new(client, nil, {:body => '12345678', :created_at => 'BAAAAAD'})
10
+ end
11
+ it 'should not render readonly attrs in json hash' do
12
+ @message.to_json[:body].should == '12345678'
13
+ @message.to_json[:created_at].should == nil
14
+ end
15
+ it 'should initialize with attrs and collections' do
16
+ @message.body.should == '12345678'
17
+ @message.recipients.class.should == TMS::Recipients
18
+ end
19
+ it 'should post successfully' do
20
+ response = { :body => 'processed',
21
+ :recipients => [{:phone => '22345678'}],
22
+ :failed => [{:phone => '22345678'}],
23
+ :sent => [{:phone => '22345678'}],
24
+ :created_at => 'time'}
25
+ @message.client.should_receive('post').with(@message).and_return(double('response', :status => 201, :body => response))
26
+ @message.post
27
+ @message.body.should == 'processed'
28
+ @message.created_at.should == 'time'
29
+ @message.recipients.class.should == TMS::Recipients
30
+ @message.recipients.collection.first.class.should == TMS::Recipient
31
+ @message.sent.class.should == TMS::Recipients
32
+ @message.sent.collection.first.class.should == TMS::Recipient
33
+ @message.failed.class.should == TMS::Recipients
34
+ @message.failed.collection.first.class.should == TMS::Recipient
35
+ end
36
+ it 'should handle errors' do
37
+ response = {'errors' => {:body => "can't be nil"}}
38
+ @message.client.should_receive('post').with(@message).and_return(double('response', :status => 422, :body => response))
39
+ @message.post
40
+ @message.body.should == '12345678'
41
+ @message.errors.should == {:body => "can't be nil"}
42
+ end
43
+ end
44
+
45
+ context 'an existing message' do
46
+ let(:client) do
47
+ double('client')
48
+ end
49
+ before do
50
+ # blank hash prevents the client from doing a GET in the initialize method
51
+ @message = TMS::SmsMessage.new(client, '/messages/99', {})
52
+ end
53
+ it 'should GET cleanly' do
54
+ response = {:body => 'processed', :recipients => [{:phone => '22345678'}], :created_at => 'time'}
55
+ @message.client.should_receive('get').with(@message.href).and_return(double('response', :status => 200, :body => response))
56
+ @message.get
57
+ @message.body.should == 'processed'
58
+ @message.created_at.should == 'time'
59
+ end
60
+ end
61
+
62
+
63
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe TMS::SmsMessages do
4
+ context "creating a new messages list" do
5
+ let(:client) do
6
+ double('client')
7
+ end
8
+ before do
9
+ @messages = TMS::SmsMessages.new(client, '/messages')
10
+ end
11
+ it 'should GET itself' do
12
+ body = [{:short_body => 'hi ho', :created_at => 'a while ago'}, {:short_body => 'feel me flow', :created_at => 'longer ago'}]
13
+ @messages.client.should_receive(:get).and_return(double('response', :body => body, :status => 200, :headers => {'link' => "</messages/page/2>; rel=\"next\",</messages/page/11>; rel=\"last\""}))
14
+
15
+ @messages.get
16
+ @messages.collection.length.should == 2
17
+ @messages.next.href.should == '/messages/page/2'
18
+ @messages.last.href.should == '/messages/page/11'
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,31 @@
1
+ $: << File.expand_path("../lib", __FILE__)
2
+ require 'govdelivery-tms'
3
+
4
+ class TMS::Horse
5
+ def initialize(client, href)
6
+ end
7
+ end
8
+
9
+ class TMS::Rabbits
10
+ def initialize(client, href)
11
+ end
12
+ end
13
+
14
+ # This file was generated by the `rspec --init` command. Conventionally, all
15
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
16
+ # Require this file using `require "spec_helper"` to ensure that it is only
17
+ # loaded once.
18
+ #
19
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
20
+ require 'rspec/its'
21
+ RSpec.configure do |config|
22
+ config.treat_symbols_as_metadata_keys_with_true_values = true
23
+ config.run_all_when_everything_filtered = true
24
+ config.filter_run :focus
25
+
26
+ # Run specs in random order to surface order dependencies. If you find an
27
+ # order dependency and want to debug it, you can fix the order by providing
28
+ # the seed, which is printed after each run.
29
+ # --seed 1234
30
+ config.order = 'random'
31
+ end
data/spec/tms_spec.rb ADDED
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe TMS, "version" do
4
+ it "should exist" do
5
+ TMS::VERSION.should be_an_instance_of(String)
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,172 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: govdelivery-tms
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.0
5
+ platform: ruby
6
+ authors:
7
+ - GovDelivery
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: faraday_middleware
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: ! "A reference implementation, written in Ruby,\n to
56
+ interact with GovDelivery's TMS API. The client is\n compatible
57
+ with Ruby 1.9 and 2.0. "
58
+ email:
59
+ - support@govdelivery.com
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - Gemfile
65
+ - README.md
66
+ - Rakefile
67
+ - govdelivery-tms.gemspec
68
+ - lib/govdelivery-tms.rb
69
+ - lib/govdelivery-tms/base.rb
70
+ - lib/govdelivery-tms/client.rb
71
+ - lib/govdelivery-tms/collection_resource.rb
72
+ - lib/govdelivery-tms/connection.rb
73
+ - lib/govdelivery-tms/errors.rb
74
+ - lib/govdelivery-tms/instance_resource.rb
75
+ - lib/govdelivery-tms/link_header.rb
76
+ - lib/govdelivery-tms/logger.rb
77
+ - lib/govdelivery-tms/mail/delivery_method.rb
78
+ - lib/govdelivery-tms/resource/collections.rb
79
+ - lib/govdelivery-tms/resource/command.rb
80
+ - lib/govdelivery-tms/resource/command_action.rb
81
+ - lib/govdelivery-tms/resource/command_type.rb
82
+ - lib/govdelivery-tms/resource/email_message.rb
83
+ - lib/govdelivery-tms/resource/email_recipient.rb
84
+ - lib/govdelivery-tms/resource/email_recipient_click.rb
85
+ - lib/govdelivery-tms/resource/email_recipient_open.rb
86
+ - lib/govdelivery-tms/resource/email_template.rb
87
+ - lib/govdelivery-tms/resource/from_address.rb
88
+ - lib/govdelivery-tms/resource/inbound_sms_message.rb
89
+ - lib/govdelivery-tms/resource/ipaws_acknowledgement.rb
90
+ - lib/govdelivery-tms/resource/ipaws_alert.rb
91
+ - lib/govdelivery-tms/resource/ipaws_category.rb
92
+ - lib/govdelivery-tms/resource/ipaws_cog_profile.rb
93
+ - lib/govdelivery-tms/resource/ipaws_event_code.rb
94
+ - lib/govdelivery-tms/resource/ipaws_nwem_area.rb
95
+ - lib/govdelivery-tms/resource/ipaws_nwem_authorization.rb
96
+ - lib/govdelivery-tms/resource/ipaws_nwem_auxilary_data.rb
97
+ - lib/govdelivery-tms/resource/ipaws_response_type.rb
98
+ - lib/govdelivery-tms/resource/ipaws_static_resource.rb
99
+ - lib/govdelivery-tms/resource/keyword.rb
100
+ - lib/govdelivery-tms/resource/recipient.rb
101
+ - lib/govdelivery-tms/resource/sms_message.rb
102
+ - lib/govdelivery-tms/resource/webhook.rb
103
+ - lib/govdelivery-tms/util/core_ext.rb
104
+ - lib/govdelivery-tms/util/hal_link_parser.rb
105
+ - lib/govdelivery-tms/version.rb
106
+ - spec/client_spec.rb
107
+ - spec/command_types_spec.rb
108
+ - spec/email_message_spec.rb
109
+ - spec/email_template_spec.rb
110
+ - spec/errors_spec.rb
111
+ - spec/from_address_spec.rb
112
+ - spec/inbound_sms_messages_spec.rb
113
+ - spec/instance_resource_spec.rb
114
+ - spec/ipaws_acknowledgement_spec.rb
115
+ - spec/ipaws_alerts_spec.rb
116
+ - spec/ipaws_cog_profile_spec.rb
117
+ - spec/ipaws_event_codes_spec.rb
118
+ - spec/ipaws_nwem_areas_spec.rb
119
+ - spec/ipaws_nwem_authorization_spec.rb
120
+ - spec/keyword_spec.rb
121
+ - spec/keywords_spec.rb
122
+ - spec/mail/delivery_method_spec.rb
123
+ - spec/sms_message_spec.rb
124
+ - spec/sms_messages_spec.rb
125
+ - spec/spec_helper.rb
126
+ - spec/tms_spec.rb
127
+ homepage: http://govdelivery.com
128
+ licenses: []
129
+ metadata: {}
130
+ post_install_message:
131
+ rdoc_options: []
132
+ require_paths:
133
+ - lib
134
+ required_ruby_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ requirements: []
145
+ rubyforge_project:
146
+ rubygems_version: 2.4.5
147
+ signing_key:
148
+ specification_version: 4
149
+ summary: A ruby client to interact with the GovDelivery TMS REST API.
150
+ test_files:
151
+ - spec/client_spec.rb
152
+ - spec/command_types_spec.rb
153
+ - spec/email_message_spec.rb
154
+ - spec/email_template_spec.rb
155
+ - spec/errors_spec.rb
156
+ - spec/from_address_spec.rb
157
+ - spec/inbound_sms_messages_spec.rb
158
+ - spec/instance_resource_spec.rb
159
+ - spec/ipaws_acknowledgement_spec.rb
160
+ - spec/ipaws_alerts_spec.rb
161
+ - spec/ipaws_cog_profile_spec.rb
162
+ - spec/ipaws_event_codes_spec.rb
163
+ - spec/ipaws_nwem_areas_spec.rb
164
+ - spec/ipaws_nwem_authorization_spec.rb
165
+ - spec/keyword_spec.rb
166
+ - spec/keywords_spec.rb
167
+ - spec/mail/delivery_method_spec.rb
168
+ - spec/sms_message_spec.rb
169
+ - spec/sms_messages_spec.rb
170
+ - spec/spec_helper.rb
171
+ - spec/tms_spec.rb
172
+ has_rdoc: