glip-poster 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b72ca65835c0688d71743550c8109b05598e1359
4
+ data.tar.gz: 8ea536b2c136393622648fb818c18536b4e7fba1
5
+ SHA512:
6
+ metadata.gz: 85189e54802e9e589c1ace75df7557eedf27f0d85af38b6fbfea1ecafbf5a4fd2a8f7ea6e6f1f41388e8e25cbff6e1a15d5eae2df262f0877a4cdad0e77ce8f3
7
+ data.tar.gz: 599b917ea7a74090050e4f3f161fb41b80f648ab3f6b891a1c1c55118a7d44d4d6711da74551ee254bb1bcc87081d1f569503124cf5dd93801ccc64eb4811609
@@ -0,0 +1,5 @@
1
+ CHANGELOG
2
+ ---------
3
+ - **2016-01-30**: 0.0.1
4
+ - Initial release
5
+
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source ENV['GEM_SOURCE'] || 'https://rubygems.org'
2
+
3
+ gem 'coveralls'
4
+ gem 'faraday', '~> 0.9.0'
5
+ gem 'faraday_middleware'
6
+ gem 'logger'
7
+ gem 'mocha'
8
+ gem 'rake'
9
+ gem 'simplecov'
10
+ gem 'test-unit'
@@ -0,0 +1,63 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ coveralls (0.8.10)
5
+ json (~> 1.8)
6
+ rest-client (>= 1.6.8, < 2)
7
+ simplecov (~> 0.11.0)
8
+ term-ansicolor (~> 1.3)
9
+ thor (~> 0.19.1)
10
+ tins (~> 1.6.0)
11
+ docile (1.1.5)
12
+ domain_name (0.5.25)
13
+ unf (>= 0.0.5, < 1.0.0)
14
+ faraday (0.9.2)
15
+ multipart-post (>= 1.2, < 3)
16
+ faraday_middleware (0.10.0)
17
+ faraday (>= 0.7.4, < 0.10)
18
+ http-cookie (1.0.2)
19
+ domain_name (~> 0.5)
20
+ json (1.8.3)
21
+ logger (1.2.8)
22
+ metaclass (0.0.4)
23
+ mime-types (2.99)
24
+ mocha (1.1.0)
25
+ metaclass (~> 0.0.1)
26
+ multipart-post (2.0.0)
27
+ netrc (0.11.0)
28
+ power_assert (0.2.7)
29
+ rake (10.5.0)
30
+ rest-client (1.8.0)
31
+ http-cookie (>= 1.0.2, < 2.0)
32
+ mime-types (>= 1.16, < 3.0)
33
+ netrc (~> 0.7)
34
+ simplecov (0.11.1)
35
+ docile (~> 1.1.0)
36
+ json (~> 1.8)
37
+ simplecov-html (~> 0.10.0)
38
+ simplecov-html (0.10.0)
39
+ term-ansicolor (1.3.2)
40
+ tins (~> 1.0)
41
+ test-unit (3.1.7)
42
+ power_assert
43
+ thor (0.19.1)
44
+ tins (1.6.0)
45
+ unf (0.1.4)
46
+ unf_ext
47
+ unf_ext (0.0.7.1)
48
+
49
+ PLATFORMS
50
+ ruby
51
+
52
+ DEPENDENCIES
53
+ coveralls
54
+ faraday (~> 0.9.0)
55
+ faraday_middleware
56
+ logger
57
+ mocha
58
+ rake
59
+ simplecov
60
+ test-unit
61
+
62
+ BUNDLED WITH
63
+ 1.11.2
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 John Wang
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,123 @@
1
+ Glip Poster
2
+ ========================
3
+
4
+ [![Gem Version][gem-version-svg]][gem-version-link]
5
+ [![Build Status][build-status-svg]][build-status-link]
6
+ [![Coverage Status][coverage-status-svg]][coverage-status-link]
7
+ [![Dependency Status][dependency-status-svg]][dependency-status-link]
8
+ [![Code Climate][codeclimate-status-svg]][codeclimate-status-link]
9
+ [![Scrutinizer Code Quality][scrutinizer-status-svg]][scrutinizer-status-link]
10
+ [![Downloads][downloads-svg]][downloads-link]
11
+ [![Docs][docs-rubydoc-svg]][docs-rubydoc-link]
12
+ [![License][license-svg]][license-link]
13
+
14
+ ## Installation
15
+
16
+ ### Via Bundler
17
+
18
+ Add 'glip-poster' to Gemfile and then run `bundle`:
19
+
20
+ ```sh
21
+ $ echo "gem 'glip-poster'" >> Gemfile
22
+ $ bundle
23
+ ```
24
+
25
+ ### Via RubyGems
26
+
27
+ ```sh
28
+ $ gem install glip-poster
29
+ ```
30
+
31
+ ## Usage
32
+
33
+ First you have to initialize your poster and then you can use `send_message` to send your message.
34
+
35
+ ```ruby
36
+ poster = Glip::Poster.new(YOUR_WEBHOOK_URL)
37
+ poster.send_message('Hello World!') # Faraday::Response
38
+ ```
39
+
40
+ You can send text in Markdown:
41
+
42
+ ```ruby
43
+ poster = Glip::Poster.new(YOUR_WEBHOOK_URL)
44
+ poster.send_message('* Location: [The Funky Buddha Lounge](http://www.thefunkybuddha.com)\n*Beer Advocate Rating: [99](http://tinyurl.com/psf4uzq)')
45
+ ```
46
+
47
+ You can use an options array if you don't want to use the default settings.
48
+
49
+ ```ruby
50
+ options => {
51
+ :icon": "http://example.com/icon.png",
52
+ :activity": "Activity Alert",
53
+ :title": "A New Incoming Message Has Been Received",
54
+ }
55
+ poster = Glip::Poster.new(YOUR_WEBHOOK_URL)
56
+ poster.send_message('Hello Beer!', options)
57
+ ```
58
+
59
+ You can preset your options:
60
+
61
+ ```ruby
62
+ poster = Glip::Poster.new(YOUR_WEBHOOK_URL)
63
+ poster.options[:icon] = 'http://example.com/icon.png'
64
+ poster.options = {:icon => 'http://example.com/icon.png'}
65
+ poster.send_message('Hello World!')
66
+ ```
67
+
68
+ ## Supported Ruby Versions
69
+
70
+ This library supports and is [tested against](https://travis-ci.org/grokify/glip-poster-ruby) the following Ruby implementations:
71
+
72
+ 1. Ruby 2.3.0
73
+ 2. Ruby 2.2.0
74
+ 3. Ruby 2.1.0
75
+ 4. Ruby 2.0.0
76
+ 5. Ruby 1.9.3
77
+ 6. [JRuby](http://jruby.org/)
78
+ 7. [Rubinius](http://rubinius.com/)
79
+
80
+ ## Releases
81
+
82
+ Releases with release notes are availabe on [GitHub releases](https://github.com/grokify/glip-poster/releases). Release notes include a high level description of the release as well as lists of non-breaking and breaking changes.
83
+
84
+ ### Change Log
85
+
86
+ See [CHANGELOG.md](CHANGELOG.md)
87
+
88
+ ## Links
89
+
90
+ Project Repo
91
+
92
+ * https://github.com/grokify/glip-poster-ruby
93
+
94
+ Glip
95
+
96
+ * https://glip.com
97
+
98
+ ## Contributing
99
+
100
+ 1. Fork it ( http://github.com/grokify/glip-poster-ruby/fork )
101
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
102
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
103
+ 4. Push to the branch (`git push origin my-new-feature`)
104
+ 5. Create new Pull Request
105
+
106
+ [gem-version-svg]: https://badge.fury.io/rb/glip-poster.svg
107
+ [gem-version-link]: http://badge.fury.io/rb/glip-poster
108
+ [downloads-svg]: http://ruby-gem-downloads-badge.herokuapp.com/glip-poster
109
+ [downloads-link]: https://rubygems.org/gems/glip-poster
110
+ [build-status-svg]: https://api.travis-ci.org/grokify/glip-poster-ruby.svg?branch=master
111
+ [build-status-link]: https://travis-ci.org/grokify/glip-poster-ruby
112
+ [coverage-status-svg]: https://coveralls.io/repos/grokify/glip-poster-ruby/badge.svg?branch=master
113
+ [coverage-status-link]: https://coveralls.io/r/grokify/glip-poster-ruby?branch=master
114
+ [dependency-status-svg]: https://gemnasium.com/grokify/glip-poster-ruby.svg
115
+ [dependency-status-link]: https://gemnasium.com/grokify/glip-poster-ruby
116
+ [codeclimate-status-svg]: https://codeclimate.com/github/grokify/glip-poster-ruby/badges/gpa.svg
117
+ [codeclimate-status-link]: https://codeclimate.com/github/grokify/glip-poster-ruby
118
+ [scrutinizer-status-svg]: https://scrutinizer-ci.com/g/grokify/glip-poster-ruby/badges/quality-score.png?b=master
119
+ [scrutinizer-status-link]: https://scrutinizer-ci.com/g/grokify/glip-poster-ruby/?branch=master
120
+ [docs-rubydoc-svg]: https://img.shields.io/badge/docs-rubydoc-blue.svg
121
+ [docs-rubydoc-link]: http://www.rubydoc.info/gems/glip-poster/
122
+ [license-svg]: https://img.shields.io/badge/license-MIT-blue.svg
123
+ [license-link]: https://github.com/grokify/glip-poster-ruby/blob/master/LICENSE.txt
@@ -0,0 +1,19 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+
4
+ desc 'Default: run unit tests.'
5
+ task :default => :test
6
+
7
+ desc 'Test the library.'
8
+ Rake::TestTask.new do |t|
9
+ t.libs << 'lib'
10
+ t.pattern = 'test/**/test_*.rb'
11
+ t.verbose = false
12
+ end
13
+
14
+ desc 'Generate YARD documentation.'
15
+ task :gendoc do
16
+ # puts 'yard doc generation disabled until JRuby build native extensions for redcarpet or yard removes the dependency.'
17
+ system 'yardoc'
18
+ system 'yard stats --list-undoc'
19
+ end
@@ -0,0 +1,22 @@
1
+ lib = 'glip-poster'
2
+ lib_file = File.expand_path("../lib/#{lib}/poster.rb", __FILE__)
3
+ File.read(lib_file) =~ /\bVERSION\s*=\s*["'](.+?)["']/
4
+ version = $1
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'glip-poster'
8
+ s.version = version
9
+ s.date = '2016-01-30'
10
+ s.summary = 'Glip Poster - Ruby SDK for post messages via Glip webhooks'
11
+ s.description = 'A Ruby SDK for post messages via Glip webhooks'
12
+ s.authors = ['John Wang']
13
+ s.email = 'johncwang@gmail.com'
14
+ s.homepage = 'https://github.com/grokify/'
15
+ s.licenses = ['MIT']
16
+ s.files = Dir['lib/**/**/*'] # + Dir['bin/*']
17
+ s.files += Dir['[A-Z]*'] + Dir['test/**/*']
18
+ # s.files.reject! { |fn| fn.include? "CVS" }
19
+ # s.required_ruby_version = '>= 1.8.7' # 1.8.7+ is tested
20
+ s.add_dependency 'faraday', '~> 0.9', '>= 0.9'
21
+ s.add_dependency 'faraday_middleware', '~> 0', '>= 0'
22
+ end
@@ -0,0 +1 @@
1
+ require 'glip-poster/poster'
@@ -0,0 +1,46 @@
1
+ require 'faraday'
2
+ require 'faraday_middleware'
3
+
4
+ module Glip
5
+ class Poster
6
+ VERSION = '0.0.1'
7
+ GLIP_WEBHOOK_BASE_URL = 'https://hooks.glip.com/webhook/'
8
+
9
+ attr_reader :webhook_url
10
+ attr_accessor :options
11
+ attr_accessor :http
12
+
13
+ def initialize(webhook_url_or_id)
14
+ webhook_uri(webhook_url_or_id)
15
+
16
+ @options = {}
17
+
18
+ @http = Faraday.new(:url => GLIP_WEBHOOK_BASE_URL) do |faraday|
19
+ faraday.request :json
20
+ faraday.response :logger
21
+ faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
22
+ end
23
+ end
24
+
25
+ def webhook_uri(webhook_url_or_id)
26
+ if webhook_url_or_id.to_s !~ %r{/}
27
+ @webhook_url = GLIP_WEBHOOK_BASE_URL + webhook_url_or_id
28
+ elsif webhook_url_or_id =~ %r{^https?://}
29
+ @webhook_url = webhook_url_or_id
30
+ else
31
+ raise 'must include webhook URL or id argument'
32
+ end
33
+ end
34
+
35
+ def send_message(message, opts={})
36
+ opts = @options.merge opts
37
+ opts[:body] = message
38
+
39
+ res = @http.post do |req|
40
+ req.url @webhook_url
41
+ req.body = opts
42
+ end
43
+ return res
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,8 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ require 'test/unit'
5
+ require 'mocha/test_unit'
6
+ require 'glip-poster'
7
+
8
+ poster = Glip::Poster.new('deadbeef')
@@ -0,0 +1,42 @@
1
+ require './test/test_base.rb'
2
+
3
+ class GlipPosterTest < Test::Unit::TestCase
4
+ def test_setup
5
+ poster = Glip::Poster.new('deadbeef')
6
+
7
+ assert_equal 'Glip::Poster', poster.class.name
8
+ assert_equal 'https://hooks.glip.com/webhook/deadbeef', poster.webhook_url
9
+ end
10
+
11
+ def test_url
12
+ url = 'https://hooks.glip.com/webhook/11111111-2222-3333-4444-555555555555'
13
+ poster = Glip::Poster.new(url)
14
+ assert_equal url, poster.webhook_url
15
+ end
16
+
17
+ def test_farday
18
+ poster = Glip::Poster.new('deadbeef')
19
+ Faraday::Connection.any_instance.stubs(:post).returns(Faraday::Response.new)
20
+ res = poster.send_message('Hello World!')
21
+ assert_equal 'Faraday::Response', res.class.name
22
+ end
23
+
24
+ def test_raise
25
+ assert_raise do
26
+ poster = Glip::Poster.new
27
+ end
28
+
29
+ assert_raise do
30
+ poster = Glip::Poster.new('dead/beef')
31
+ end
32
+ end
33
+
34
+ def test_options
35
+ poster = Glip::Poster.new('deadbeef')
36
+
37
+ assert_equal true, poster.options.is_a?(Hash)
38
+
39
+ poster.options[:icon] = 'http://example.com/icon.png'
40
+ assert_equal 'http://example.com/icon.png', poster.options[:icon]
41
+ end
42
+ end
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: glip-poster
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - John Wang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: faraday
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.9'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: '0.9'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.9'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0.9'
33
+ - !ruby/object:Gem::Dependency
34
+ name: faraday_middleware
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ description: A Ruby SDK for post messages via Glip webhooks
54
+ email: johncwang@gmail.com
55
+ executables: []
56
+ extensions: []
57
+ extra_rdoc_files: []
58
+ files:
59
+ - CHANGELOG.md
60
+ - Gemfile
61
+ - Gemfile.lock
62
+ - LICENSE.txt
63
+ - README.md
64
+ - Rakefile
65
+ - glip-poster.gemspec
66
+ - lib/glip-poster.rb
67
+ - lib/glip-poster/poster.rb
68
+ - test/test_base.rb
69
+ - test/test_setup.rb
70
+ homepage: https://github.com/grokify/
71
+ licenses:
72
+ - MIT
73
+ metadata: {}
74
+ post_install_message:
75
+ rdoc_options: []
76
+ require_paths:
77
+ - lib
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ requirements: []
89
+ rubyforge_project:
90
+ rubygems_version: 2.4.8
91
+ signing_key:
92
+ specification_version: 4
93
+ summary: Glip Poster - Ruby SDK for post messages via Glip webhooks
94
+ test_files: []