sparkpost 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: aba79508e67d5e043c73f008b897d1bfd5bd5c57
4
+ data.tar.gz: d648c17cb1d275e4be2afa8efcae3cada69ee3fc
5
+ SHA512:
6
+ metadata.gz: 4929f208113de032bfb504add476f3c6803f9fda89d3c5b88f693ad9b0496efa44321020ff129aa3fb11ff87e938540340d69a9b09208b42d63bdbb8641e7ca2
7
+ data.tar.gz: 7aff3ffc3949ab6480a5d9ffd712611e73f59f23074f7cda005d303c07c7a2bf5e68c69553d6e9d6fa00002838ee1a33db4e2a28fbd163d015f5f379f251e56a
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ service_name: travis-ci
data/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .env
6
+ .yardoc
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
19
+ .idea
20
+ .ruby-gemset
21
+ coverage
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 2.1.2
5
+ - 2.2.4
6
+ notifications:
7
+ slack:
8
+ secure: VNIwgvrbcwj0b2gfYSOeTyK7rkV62/belwhYthasHmN+DoTsEJF4+HFVtzOykS72LM/f5Id5zieWtxYG+soy+yEOc1iZizXRpRJORtTYfZJB9RCffavosl322BcpoTX99cGyiZjWjOFH70UWlFMB3zT0jS+9icuTfk7ZqBX/zDA=
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in sparkpost.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2015 Message Systems, Inc. or its affiliates. All Rights Reserved.
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License").
4
+ You may not use this software except in compliance with the License.
5
+
6
+ A copy of the License is located at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0.html
9
+
10
+ or in the "license" file accompanying this software. This file is
11
+ distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
12
+ ANY KIND, either express or implied. See the License for the specific
13
+ language governing permissions and limitations under the License.
data/README.md ADDED
@@ -0,0 +1,41 @@
1
+ <a href="https://www.sparkpost.com"><img src="https://www.sparkpost.com/sites/default/files/attachments/SparkPost_Logo_2-Color_Gray-Orange_RGB.svg" width="200px"/></a>
2
+
3
+ [Sign up](https://app.sparkpost.com/sign-up?src=Dev-Website&sfdcid=70160000000pqBb) for a SparkPost account and visit our [Developer Hub](https://developers.sparkpost.com) for even more content.
4
+
5
+ # SparkPost Ruby API Client
6
+
7
+ [![Travis CI](https://travis-ci.org/SparkPost/ruby-sparkpost.svg?branch=master)](https://travis-ci.org/SparkPost/ruby-sparkpost) [![Coverage Status](https://coveralls.io/repos/SparkPost/ruby-sparkpost/badge.svg?branch=master&service=github)](https://coveralls.io/github/SparkPost/ruby-sparkpost?branch=master)
8
+
9
+ The official Ruby client library for Sparkpost
10
+
11
+ ## Installation
12
+
13
+ Add this line to your application's Gemfile:
14
+
15
+ gem 'sparkpost'
16
+
17
+ And then execute:
18
+
19
+ $ bundle
20
+
21
+ Or install it yourself as:
22
+
23
+ $ gem install sparkpost
24
+
25
+ ## Usage
26
+
27
+ TODO: Write usage instructions here
28
+
29
+ ## Development
30
+
31
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
32
+
33
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
34
+
35
+ ## Contributing
36
+
37
+ 1. Fork it ( http://github.com/<my-github-username>ruby-sparkpost/fork )
38
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
39
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
40
+ 4. Push to the branch (`git push origin my-new-feature`)
41
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
7
+
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "sparkpost"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/sparkpost'
4
+
5
+ sp = SparkPost::Client.new() # gets api key from ENV
6
+ response = sp.transmission.send_message('RECIPIENT_EMAIL', 'SENDER_EMAIL', 'test email', '<h1>HTML message</h1>')
7
+
8
+ puts response
@@ -0,0 +1,9 @@
1
+ class Object
2
+ def blank?
3
+ respond_to?(:empty?) ? empty? : !self
4
+ end
5
+
6
+ def present?
7
+ !blank?
8
+ end
9
+ end
@@ -0,0 +1,23 @@
1
+ module SparkPost
2
+ class Client
3
+ attr_reader :transmission
4
+
5
+ def initialize(api_key = nil, api_host = 'https://api.sparkpost.com')
6
+ @api_key = (api_key || ENV['SPARKPOST_API_KEY']).to_s
7
+ @api_host = (api_host || ENV['SPARKPOST_API_HOST']).to_s
8
+
9
+ if @api_key.blank?
10
+ fail ArgumentError, 'No API key is provided. Either provide api_key with constructor or set SPARKPOST_API_KEY environment variable'
11
+ end
12
+
13
+
14
+ if @api_host.blank?
15
+ fail ArgumentError, 'No API host is provided. Either provide api_host with constructor or set SPARKPOST_API_HOST environment variable'
16
+ end
17
+ end
18
+
19
+ def transmission
20
+ @transmission ||= Transmission.new(@api_key, @api_host)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,4 @@
1
+ module SparkPost
2
+ class DeliveryException < Exception
3
+ end
4
+ end
@@ -0,0 +1,37 @@
1
+ require 'net/http'
2
+ require 'json'
3
+
4
+ require_relative 'version'
5
+ require_relative 'exceptions'
6
+
7
+ module SparkPost
8
+ module Request
9
+
10
+ def request(url, api_key, data)
11
+ uri = URI.parse(url)
12
+ http = Net::HTTP.new(uri.host, uri.port)
13
+ http.use_ssl = true
14
+ http.set_debug_output($stdout)
15
+ headers = {
16
+ 'User-Agent' => 'ruby-sparkpost/' + VERSION,
17
+ 'Content-Type' => 'application/json',
18
+ 'Authorization' => api_key
19
+ }
20
+ req = Net::HTTP::Post.new(uri.path, initheader=headers)
21
+ req.body = data.to_json
22
+
23
+ process_response(http.request(req));
24
+ end
25
+
26
+ def process_response(response)
27
+ response = JSON.parse(response.body)
28
+ if response['errors']
29
+ fail SparkPost::DeliveryException, response['errors']
30
+ else
31
+ response['results']
32
+ end
33
+ end
34
+
35
+ module_function :request, :process_response
36
+ end
37
+ end
@@ -0,0 +1,60 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'http'
4
+ require_relative '../core_extensions/object'
5
+ require_relative 'request'
6
+ require_relative 'exceptions'
7
+
8
+ module SparkPost
9
+ class Transmission
10
+ include Request
11
+
12
+ def initialize(api_key, api_host)
13
+ @api_key = api_key
14
+ @api_host = api_host
15
+ end
16
+
17
+ def endpoint
18
+ @api_host.concat('/api/v1/transmissions')
19
+ end
20
+
21
+ def send_message(to, from, subject, html_message = nil, **options)
22
+ #todo add validations for to, from
23
+ unless to.is_a?(Array)
24
+ to = [to]
25
+ end
26
+
27
+ if html_message.blank? && options[:text_message].blank?
28
+ fail ArgumentError, 'Content missing. Either provide html_message or text_message in options parameter'
29
+ end
30
+
31
+ options.merge!(
32
+ {
33
+ recipients: prepare_recipients(to),
34
+ content: {
35
+ from: from,
36
+ subject: subject,
37
+ text: options['text_message'],
38
+ html: html_message
39
+ },
40
+ options: {}
41
+ }
42
+ )
43
+
44
+ request(endpoint, @api_key, options)
45
+ end
46
+
47
+ private
48
+ def prepare_recipients(recipients)
49
+ recipients.map do |recipient|
50
+ {
51
+ address: {
52
+ email: recipient
53
+ }
54
+ }
55
+ end
56
+ end
57
+
58
+ end
59
+ end
60
+
@@ -0,0 +1,3 @@
1
+ module SparkPost
2
+ VERSION = '0.1.0'.freeze
3
+ end
data/lib/sparkpost.rb ADDED
@@ -0,0 +1,3 @@
1
+ require_relative 'sparkpost/version'
2
+ require_relative 'sparkpost/transmission'
3
+ require_relative 'sparkpost/client'
data/sparkpost.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require './lib/sparkpost/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "sparkpost"
8
+ spec.version = SparkPost::VERSION
9
+ spec.authors = ["SparkPost", "Aimee Knight", "Mohammad Hossain"]
10
+ spec.email = "developers@sparkpost.com"
11
+ spec.summary = "SparkPost Ruby API client"
12
+ spec.homepage = "https://developers.sparkpost.com"
13
+ spec.license = "Apache-2.0"
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_dependency 'http', '0.9.8'
21
+
22
+ spec.add_development_dependency "bundler", "~> 1.5"
23
+ spec.add_development_dependency "rake"
24
+ spec.add_development_dependency "rspec", "~> 3.3.0"
25
+ spec.add_development_dependency "simplecov", "~> 0.11.1"
26
+ spec.add_development_dependency "webmock", "~> 1.22.3"
27
+ spec.add_development_dependency "coveralls"
28
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe SparkPost::Transmission do
4
+ describe '#initialize' do
5
+ context 'when api key and host are passed'
6
+ let(:client) { SparkPost::Client.new('123', 'http://sparkpost.com') }
7
+
8
+ it { expect(client.instance_variables).to include(:@api_key) }
9
+ it { expect(client.instance_variables).to include(:@api_host) }
10
+ it { expect(client.instance_variable_get(:@api_key)).to eq('123') }
11
+ it { expect(client.instance_variable_get(:@api_host)).to eq('http://sparkpost.com') }
12
+
13
+ context 'when api key not passed' do
14
+ before do
15
+ ENV['SPARKPOST_API_KEY'] = nil
16
+ end
17
+ it { expect {SparkPost::Client.new }.to raise_error(ArgumentError) }
18
+ end
19
+
20
+ context 'when api host not passed' do
21
+ before do
22
+ ENV['SPARKPOST_API_HOST'] = nil
23
+ end
24
+ it { expect(SparkPost::Client.new('abc').instance_variable_get(:@api_host)).to eq('https://api.sparkpost.com') }
25
+ it { expect { SparkPost::Client.new('abc', nil) }.to raise_error(ArgumentError) }
26
+ end
27
+ end
28
+
29
+ describe '#transmission' do
30
+ let(:client) { SparkPost::Client.new('123', 'http://sparkpost.com') }
31
+
32
+ it { expect(client.transmission).to be_kind_of(SparkPost::Transmission) }
33
+
34
+ it 'returns same instances on subsequent call' do
35
+ expect(client.transmission).to eq(client.transmission)
36
+ end
37
+
38
+ end
39
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe 'Object' do
5
+ describe '#blank?' do
6
+ it { expect(''.blank?).to be(true)}
7
+ it { expect(nil.blank?).to be(true)}
8
+ it { expect(true.blank?).to be(false)}
9
+ it { expect(Hash.new.blank?).to be(true)}
10
+ it { expect({}.blank?).to be(true)}
11
+ it { expect([].blank?).to be(true)}
12
+ end
13
+
14
+ describe '#present?' do
15
+ it { expect(''.present?).to be(false)}
16
+ it { expect(nil.present?).to be(false)}
17
+ it { expect(true.present?).to be(true)}
18
+ it { expect(Hash.new.present?).to be(false)}
19
+ it { expect({}.present?).to be(false)}
20
+ it { expect([].present?).to be(false)}
21
+ end
22
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe SparkPost::Request do
4
+ describe '#request' do
5
+ api_url = 'https://api.sparkpost.com/api/'
6
+
7
+ let(:api_key) { '123' }
8
+ let(:request) { SparkPost::Request.request }
9
+
10
+ context 'when was successful' do
11
+ response = {results: {"total_rejected_recipients"=>0, "total_accepted_recipients"=>1, "id"=>"102238681582044821"} }
12
+ before do
13
+ stub_request(:post, api_url).to_return(body: response.to_json, status: 200)
14
+ end
15
+ it { expect(SparkPost::Request.request(api_url, '123', {})).to eq(response[:results]) }
16
+ end
17
+ context 'when was not successful' do
18
+ response = {errors: {message: 'end of world'} }
19
+ before do
20
+ stub_request(:post, api_url).to_return(body: response.to_json, status: 500)
21
+ end
22
+
23
+ it { expect { SparkPost::Request.request(api_url, '123', {})}.to raise_error(SparkPost::DeliveryException).with_message(/end of world/) }
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe SparkPost::Transmission do
4
+ describe '#initialize' do
5
+ context 'when api key and host are passed'
6
+ let(:transmission) { SparkPost::Transmission.new('123', 'http://sparkpost.com') }
7
+
8
+ it { expect(transmission.instance_variables).to include(:@api_key) }
9
+ it { expect(transmission.instance_variables).to include(:@api_host) }
10
+ it { expect(transmission.instance_variable_get(:@api_key)).to eq('123') }
11
+ it { expect(transmission.instance_variable_get(:@api_host)).to eq('http://sparkpost.com') }
12
+
13
+ context 'when api key or host not passed' do
14
+ it {expect {SparkPost::Transmission.new }.to raise_error(ArgumentError) }
15
+ it {expect {SparkPost::Transmission.new(123) }.to raise_error(ArgumentError) }
16
+ end
17
+ end
18
+
19
+ describe '#send_message' do
20
+ let(:transmission) { SparkPost::Transmission.new('123456', 'https://api.sparkpost.com')}
21
+ let(:url) { 'https://api.sparkpost.com/api/v1/transmissions' }
22
+ before do
23
+ allow(transmission).to receive(:request).and_return({})
24
+ end
25
+
26
+ it 'requests correct endpoint' do
27
+ allow(transmission).to receive(:request) do |_url|
28
+ expect(_url).to eq(url)
29
+ end
30
+
31
+ transmission.send_message('to@example.com', 'from@example.com', 'test subject', '<h1>Hello World</h1>')
32
+ end
33
+
34
+ it 'requests with correct parameters' do
35
+ allow(transmission).to receive(:request) do |_url, api_key, data|
36
+ expect(data[:recipients].length).to eq(1)
37
+ expect(data[:recipients][0][:address]).to eq({email: 'to@example.com'})
38
+ expect(data[:content][:from]).to eq('from@example.com')
39
+ expect(data[:content][:subject]).to eq('test subject')
40
+ expect(data[:content][:html]).to eq('<h1>Hello World</h1>')
41
+ end
42
+ transmission.send_message('to@example.com', 'from@example.com', 'test subject', '<h1>Hello World</h1>')
43
+ end
44
+
45
+ it 'handles array of recipients correctly' do
46
+ allow(transmission).to receive(:request) do |_url, api_key, data|
47
+ expect(data[:recipients].length).to eq(1)
48
+ expect(data[:recipients][0][:address]).to eq({email: 'to@example.com'})
49
+ end
50
+ transmission.send_message(['to@example.com'], 'from@example.com', 'test subject', '<h1>Hello World</h1>')
51
+ end
52
+
53
+ it { expect {transmission.send_message(['to@example.com'], 'from@example.com', 'test subject')}.to raise_error(ArgumentError).with_message(/Content missing/) }
54
+ it { expect {transmission.send_message(['to@example.com'], 'from@example.com', 'test subject', nil, {text_message: 'hello world'})}.to_not raise_error }
55
+
56
+ it 'passes through delivery exception' do
57
+ allow(transmission).to receive(:request).and_raise(SparkPost::DeliveryException.new('Some delivery error'))
58
+
59
+ expect { transmission.send_message('to@example.com', 'from@example.com', 'test subject', '<h1>Hello World</h1>')}.to raise_error(SparkPost::DeliveryException).with_message(/Some delivery error/)
60
+ end
61
+
62
+ it 'passes responses' do
63
+ allow(transmission).to receive(:request).and_return({success: 1})
64
+ expect(transmission.send_message('to@example.com', 'from@example.com', 'test subject', '<h1>Hello World</h1>')).to eq({success: 1})
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Sparkpost' do
4
+ it 'has a version' do
5
+ expect(SparkPost::VERSION).to eq('0.1.0')
6
+ end
7
+ end
@@ -0,0 +1,92 @@
1
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
2
+ require 'simplecov'
3
+ require 'coveralls'
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+ SimpleCov.start
9
+
10
+ require 'webmock/rspec'
11
+ require_relative '../lib/sparkpost'
12
+ WebMock.disable_net_connect!
13
+
14
+ RSpec.configure do |config|
15
+ # rspec-expectations config goes here. You can use an alternate
16
+ # assertion/expectation library such as wrong or the stdlib/minitest
17
+ # assertions if you prefer.
18
+ config.expect_with :rspec do |expectations|
19
+ # This option will default to `true` in RSpec 4. It makes the `description`
20
+ # and `failure_message` of custom matchers include text for helper methods
21
+ # defined using `chain`, e.g.:
22
+ # be_bigger_than(2).and_smaller_than(4).description
23
+ # # => "be bigger than 2 and smaller than 4"
24
+ # ...rather than:
25
+ # # => "be bigger than 2"
26
+ expectations.syntax = :expect
27
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
28
+ end
29
+
30
+ # rspec-mocks config goes here. You can use an alternate test double
31
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
32
+ config.mock_with :rspec do |mocks|
33
+ # Prevents you from mocking or stubbing a method that does not exist on
34
+ # a real object. This is generally recommended, and will default to
35
+ # `true` in RSpec 4.
36
+ mocks.verify_partial_doubles = true
37
+ end
38
+
39
+ # The settings below are suggested to provide a good initial experience
40
+ # with RSpec, but feel free to customize to your heart's content.
41
+ =begin
42
+ # These two settings work together to allow you to limit a spec run
43
+ # to individual examples or groups you care about by tagging them with
44
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
45
+ # get run.
46
+ config.filter_run :focus
47
+ config.run_all_when_everything_filtered = true
48
+
49
+ # Allows RSpec to persist some state between runs in order to support
50
+ # the `--only-failures` and `--next-failure` CLI options. We recommend
51
+ # you configure your source control system to ignore this file.
52
+ config.example_status_persistence_file_path = "spec/examples.txt"
53
+
54
+ # Limits the available syntax to the non-monkey patched syntax that is
55
+ # recommended. For more details, see:
56
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
57
+ # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
58
+ # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
59
+ config.disable_monkey_patching!
60
+
61
+ # This setting enables warnings. It's recommended, but in some cases may
62
+ # be too noisy due to issues in dependencies.
63
+ config.warnings = true
64
+
65
+ # Many RSpec users commonly either run the entire suite or an individual
66
+ # file, and it's useful to allow more verbose output when running an
67
+ # individual spec file.
68
+ if config.files_to_run.one?
69
+ # Use the documentation formatter for detailed output,
70
+ # unless a formatter has already been configured
71
+ # (e.g. via a command-line flag).
72
+ config.default_formatter = 'doc'
73
+ end
74
+
75
+ # Print the 10 slowest examples and example groups at the
76
+ # end of the spec run, to help surface which specs are running
77
+ # particularly slow.
78
+ config.profile_examples = 10
79
+
80
+ # Run specs in random order to surface order dependencies. If you find an
81
+ # order dependency and want to debug it, you can fix the order by providing
82
+ # the seed, which is printed after each run.
83
+ # --seed 1234
84
+ config.order = :random
85
+
86
+ # Seed global randomization in this process using the `--seed` CLI option.
87
+ # Setting this allows you to use `--seed` to deterministically reproduce
88
+ # test failures related to randomization by passing the same `--seed` value
89
+ # as the one that triggered the failure.
90
+ Kernel.srand config.seed
91
+ =end
92
+ end
metadata ADDED
@@ -0,0 +1,176 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sparkpost
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - SparkPost
8
+ - Aimee Knight
9
+ - Mohammad Hossain
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2015-12-22 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: http
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - '='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.9.8
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - '='
27
+ - !ruby/object:Gem::Version
28
+ version: 0.9.8
29
+ - !ruby/object:Gem::Dependency
30
+ name: bundler
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '1.5'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.5'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rake
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: rspec
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: 3.3.0
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: 3.3.0
71
+ - !ruby/object:Gem::Dependency
72
+ name: simplecov
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: 0.11.1
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: 0.11.1
85
+ - !ruby/object:Gem::Dependency
86
+ name: webmock
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: 1.22.3
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: 1.22.3
99
+ - !ruby/object:Gem::Dependency
100
+ name: coveralls
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ description:
114
+ email: developers@sparkpost.com
115
+ executables:
116
+ - console
117
+ - setup
118
+ extensions: []
119
+ extra_rdoc_files: []
120
+ files:
121
+ - ".coveralls.yml"
122
+ - ".gitignore"
123
+ - ".rspec"
124
+ - ".travis.yml"
125
+ - Gemfile
126
+ - LICENSE
127
+ - README.md
128
+ - Rakefile
129
+ - bin/console
130
+ - bin/setup
131
+ - examples/transmission.rb
132
+ - lib/core_extensions/object.rb
133
+ - lib/sparkpost.rb
134
+ - lib/sparkpost/client.rb
135
+ - lib/sparkpost/exceptions.rb
136
+ - lib/sparkpost/request.rb
137
+ - lib/sparkpost/transmission.rb
138
+ - lib/sparkpost/version.rb
139
+ - sparkpost.gemspec
140
+ - spec/lib/sparkpost/client_spec.rb
141
+ - spec/lib/sparkpost/core_extensions/object_spec.rb
142
+ - spec/lib/sparkpost/request_spec.rb
143
+ - spec/lib/sparkpost/transmission_spec.rb
144
+ - spec/lib/sparkpost/version_spec.rb
145
+ - spec/spec_helper.rb
146
+ homepage: https://developers.sparkpost.com
147
+ licenses:
148
+ - Apache-2.0
149
+ metadata: {}
150
+ post_install_message:
151
+ rdoc_options: []
152
+ require_paths:
153
+ - lib
154
+ required_ruby_version: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ requirements: []
165
+ rubyforge_project:
166
+ rubygems_version: 2.4.5.1
167
+ signing_key:
168
+ specification_version: 4
169
+ summary: SparkPost Ruby API client
170
+ test_files:
171
+ - spec/lib/sparkpost/client_spec.rb
172
+ - spec/lib/sparkpost/core_extensions/object_spec.rb
173
+ - spec/lib/sparkpost/request_spec.rb
174
+ - spec/lib/sparkpost/transmission_spec.rb
175
+ - spec/lib/sparkpost/version_spec.rb
176
+ - spec/spec_helper.rb