fluent-plugin-boundio 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,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in fluent-plugin-boundio.gemspec
4
+ gemspec
@@ -0,0 +1,14 @@
1
+ Copyright (c) 2012- Kentaro Yoshida
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
14
+
@@ -0,0 +1,53 @@
1
+ fluent-plugin-boundio
2
+ =====================
3
+
4
+ ## Component
5
+ Fluent Input plugin to make a call with boundio by KDDI. This Multilingual speech synthesis system uses VoiceText.
6
+
7
+ ## Installation
8
+
9
+ ### native gem
10
+ `````
11
+ gem install fluent-plugin-boundio
12
+ `````
13
+
14
+ ### td-agent gem
15
+ `````
16
+ /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-boundio
17
+ `````
18
+
19
+ ## Output Configuration
20
+
21
+ ### Output Sample
22
+ `````
23
+ <source>
24
+ type http
25
+ port 8888
26
+ </source>
27
+
28
+ <match notify.call>
29
+ type boundio
30
+ user_serial_id YOUR_BOUNDIO_USER_SERIAL_ID
31
+ api_key YOUR_BOUNDIO_API_KEY
32
+ user_key YOUR_BOUNDIO_USER_KEY
33
+ default_number 09012345678
34
+ </match>
35
+ `````
36
+
37
+ ### Debug
38
+ `````
39
+ $ curl http://localhost:8888/notify.call -F 'json={"number":"09012345678","message":"Help! System ABC has down."}'
40
+ $ tail -f /var/log/td-agent/td-agent.log
41
+ `````
42
+
43
+ ## Backend Service
44
+ http://boundio.jp/
45
+
46
+ ## TODO
47
+ patches welcome!
48
+
49
+ ## Copyright
50
+ Copyright © 2012- Kentaro Yoshida (@yoshi_ken)
51
+
52
+ ## License
53
+ Apache License, Version 2.0
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+ Rake::TestTask.new(:test) do |test|
4
+ test.libs << 'lib' << 'test'
5
+ test.pattern = 'test/**/test_*.rb'
6
+ test.verbose = true
7
+ end
8
+
9
+ task :default => :test
10
+
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "fluent-plugin-boundio"
6
+ s.version = "0.0.1"
7
+ s.authors = ["Kentaro Yoshida"]
8
+ s.email = ["y.ken.studio@gmail.com"]
9
+ s.homepage = "https://github.com/y-ken/fluent-plugin-boundio"
10
+ s.summary = %q{Fluent Input plugin to make a call with boundio by KDDI. This Multilingual speech synthesis system uses VoiceText.}
11
+
12
+ s.files = `git ls-files`.split("\n")
13
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
14
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
15
+ s.require_paths = ["lib"]
16
+
17
+ # specify any dependencies here; for example:
18
+ s.add_development_dependency "fluentd"
19
+ s.add_runtime_dependency "fluentd"
20
+ end
@@ -0,0 +1,46 @@
1
+ # -*- coding: utf-8 -*-
2
+ class Fluent::BoundioOutput < Fluent::Output
3
+ Fluent::Plugin.register_output('boundio', self)
4
+
5
+ config_param :user_serial_id, :string
6
+ config_param :api_key, :string
7
+ config_param :user_key, :string
8
+ config_param :default_number, :string
9
+
10
+ def initialize
11
+ super
12
+
13
+ require 'uri'
14
+ require 'net/https'
15
+ end
16
+
17
+ def configure(conf)
18
+ super
19
+
20
+ @voice_type = 1
21
+ end
22
+
23
+ def emit(tag, es, chain)
24
+ es.each do |time,record|
25
+ number = record['number'].nil? ? @default_number : record['number']
26
+ call(number, record['message'])
27
+ end
28
+
29
+ chain.next
30
+ end
31
+
32
+ def call(number, message)
33
+ begin
34
+ https = Net::HTTP.new('boundio.jp', 443)
35
+ https.use_ssl = true
36
+ cast = "file_d(#{message}, #{@voice_type})"
37
+ query = 'key=' + @api_key + '&tel_to=' + number + '&cast=' + cast
38
+ response = https.post('/api/vd2/' + @user_serial_id + '/call', URI.escape(query))
39
+ $log.info "boundio makeing a call: #{message} "
40
+ $log.info "boundio call result: #{response.body}"
41
+ rescue => e
42
+ $log.error("Boundio Error: #{e.message}")
43
+ end
44
+ end
45
+ end
46
+
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+
12
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
13
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
14
+ require 'fluent/test'
15
+ unless ENV.has_key?('VERBOSE')
16
+ nulllogger = Object.new
17
+ nulllogger.instance_eval {|obj|
18
+ def method_missing(method, *args)
19
+ # pass
20
+ end
21
+ }
22
+ $log = nulllogger
23
+ end
24
+
25
+ require 'fluent/plugin/out_boundio'
26
+
27
+ class Test::Unit::TestCase
28
+ end
@@ -0,0 +1,46 @@
1
+ require 'helper'
2
+
3
+ class BoundioOutputTest < Test::Unit::TestCase
4
+ def setup
5
+ Fluent::Test.setup
6
+ end
7
+
8
+ CONFIG = %[
9
+ user_serial_id YOUR_BOUNDIO_USER_SERIAL_ID
10
+ api_key YOUR_BOUNDIO_API_KEY
11
+ user_key YOUR_BOUNDIO_USER_KEY
12
+ default_number 09012345678
13
+ ]
14
+
15
+ def create_driver(conf=CONFIG,tag='test')
16
+ Fluent::Test::OutputTestDriver.new(Fluent::BoundioOutput, tag).configure(conf)
17
+ end
18
+
19
+ def test_configure
20
+ assert_raise(Fluent::ConfigError) {
21
+ d = create_driver('')
22
+ }
23
+ d = create_driver %[
24
+ user_serial_id YOUR_BOUNDIO_USER_SERIAL_ID
25
+ api_key YOUR_BOUNDIO_API_KEY
26
+ user_key YOUR_BOUNDIO_USER_KEY
27
+ default_number 09012345678
28
+ ]
29
+ d.instance.inspect
30
+ assert_equal 'YOUR_BOUNDIO_USER_SERIAL_ID', d.instance.user_serial_id
31
+ assert_equal 'YOUR_BOUNDIO_API_KEY', d.instance.api_key
32
+ assert_equal 'YOUR_BOUNDIO_USER_KEY', d.instance.user_key
33
+ assert_equal '09012345678', d.instance.default_number
34
+ end
35
+
36
+ def test_emit
37
+ d1 = create_driver(CONFIG, 'input.access')
38
+ time = Time.parse("2012-01-02 13:14:15").to_i
39
+ d1.run do
40
+ d1.emit({'message' => 'sample message'})
41
+ end
42
+ emits = d1.emits
43
+ assert_equal 0, emits.length
44
+ end
45
+ end
46
+
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-boundio
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Kentaro Yoshida
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: fluentd
16
+ requirement: &16370520 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *16370520
25
+ - !ruby/object:Gem::Dependency
26
+ name: fluentd
27
+ requirement: &16370080 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *16370080
36
+ description:
37
+ email:
38
+ - y.ken.studio@gmail.com
39
+ executables: []
40
+ extensions: []
41
+ extra_rdoc_files: []
42
+ files:
43
+ - .gitignore
44
+ - Gemfile
45
+ - LICENSE.txt
46
+ - README.md
47
+ - Rakefile
48
+ - fluent-plugin-boundio.gemspec
49
+ - lib/fluent/plugin/out_boundio.rb
50
+ - test/helper.rb
51
+ - test/plugin/test_out_boundio.rb
52
+ homepage: https://github.com/y-ken/fluent-plugin-boundio
53
+ licenses: []
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ requirements: []
71
+ rubyforge_project:
72
+ rubygems_version: 1.8.11
73
+ signing_key:
74
+ specification_version: 3
75
+ summary: Fluent Input plugin to make a call with boundio by KDDI. This Multilingual
76
+ speech synthesis system uses VoiceText.
77
+ test_files:
78
+ - test/helper.rb
79
+ - test/plugin/test_out_boundio.rb