santas_twilio_helper 0.0.2

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c7790931121ce72f888a7ca0f9ae76cc95e128d7
4
+ data.tar.gz: b63b8dde7644f213f96fda2d8fa3ba85b422a325
5
+ SHA512:
6
+ metadata.gz: f8dcab7c3dd0aec62efed0fe5319aa78b89bc8c5949613777d0a04945a27050b0455d40defd2f5b48975808b404211deb3da54465705fc89a3bbdea0ea721d96
7
+ data.tar.gz: e27d5ba78df06789a49dc19edb789c0580d513573ecd3c0ba813f7c7f10d360a34f26ac34006a8c0f69ff6cb2b7deff84d6fbe6445d99614b390e470e734d8db
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in santas_twilio_helper.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Jarod Reyes
2
+
3
+ MIT License
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.
data/README.md ADDED
@@ -0,0 +1,26 @@
1
+ # Santas Twilio Helper
2
+
3
+ This is a command-line tool that uses the command `santa` to interact with Santa's helpers in the north pole. This allows the festive parent to surprise their child by having Santa's elves send messages. This was built using Twilio's REST API.
4
+
5
+ ## Installation
6
+
7
+ To install the `santa` command-line tool type:
8
+
9
+ $ gem install santas_twilio_helper
10
+
11
+ ## Usage
12
+
13
+ Type `santa help` to see the full list of commands. When you are in a private place without little ones around, type `santa begin` to kick off the setup of the tool.
14
+
15
+ -- `begin` registers one child name, adds a phone number and stores your zipcode for Dec. 25 fun. This is all stored locally on your machine in santarc.json.
16
+ -- `ping` sends a random msg from the northpole. (eg: messages.json)
17
+ -- `telegraph` allows you to send a custom message from the northpole.
18
+ -- `add_child` allows you to add another child name.
19
+
20
+ ## Contributing
21
+
22
+ 1. Fork it ( https://github.com/jarodreyes/santas_twilio_helper/fork )
23
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
24
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
25
+ 4. Push to the branch (`git push origin my-new-feature`)
26
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
data/bin/santa ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "santas_twilio_helper"
4
+
5
+ SantasTwilioHelper::Cli::Application.start(ARGV)
data/bin/santa_help ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "santas_twilio_helper"
4
+
5
+ SantasTwilioHelper::Cli::Application.start(ARGV)
@@ -0,0 +1,2 @@
1
+ require "santas_twilio_helper/version"
2
+ require "santas_twilio_helper/cli/application"
@@ -0,0 +1,116 @@
1
+ require 'thor'
2
+ require 'paint'
3
+ require 'json'
4
+ require 'twilio-ruby'
5
+
6
+ module SantasTwilioHelper
7
+ module Cli
8
+ class Application < Thor
9
+
10
+ # Class constants
11
+ @@twilio_number = ENV['TWILIO_NUMBER']
12
+ @@client = Twilio::REST::Client.new ENV['TWILIO_ACCOUNT_SID'], ENV['TWILIO_AUTH_TOKEN']
13
+
14
+ include Thor::Actions
15
+
16
+ desc 'begin', 'Register yourself as one of Santas helpers'
17
+ def begin
18
+ say("#{Paint["Hi I'm one of Santa's Twilio Elves, and I'm about to deputize you as an ambassador to Santa. To get started I need your name.", :red]}")
19
+ santa_helper = ask("Parent Name: ")
20
+
21
+ children = []
22
+ say("Great Gumdrops. We also need your child's name to verify they are on Santa's list. ")
23
+ child = ask("Child Name: ")
24
+ children.push(child)
25
+
26
+ say("Fantastic. You can always add more children by running add_child later.")
27
+ say("Next I need to know your telephone number so Santa's helpers can get in touch with you.")
28
+ telephone = ask("#{Paint['Telephone Number: ', :red]}")
29
+
30
+ say("The last thing I need is your city so we can verify we have the correct location for #{child}.")
31
+ zip_code = ask("#{Paint['Zip Code: ', :blue]}")
32
+
33
+ data = {
34
+ 'santa_helper' => santa_helper,
35
+ 'children' => children,
36
+ 'telephone' => telephone,
37
+ 'zip_code'=> zip_code
38
+ }
39
+
40
+ write_file(data)
41
+
42
+ say("#{Paint["Okay you're off to the races. You can type `santa help` at any time to see the list of available commands.", "#55C4C2"]}")
43
+ end
44
+
45
+ no_commands {
46
+ def write_file(data_hash)
47
+ create_file "santarc.json", "// Your Santas Helper configuration.\n #{data_hash.to_json}", :force => true
48
+ end
49
+
50
+ def sendMessage(msg)
51
+ file = File.read('santarc.json')
52
+ data_hash = JSON.parse(file)
53
+ phone = data_hash['telephone']
54
+ children = english_join(data_hash['children'])
55
+ msg = "Hi #{children}. #{msg} - the elves"
56
+ message = @@client.account.messages.create(
57
+ :from => @@twilio_number,
58
+ :to => phone,
59
+ :body => msg
60
+ )
61
+ puts "message sent: #{msg}"
62
+ end
63
+
64
+ def english_join(array = nil)
65
+ return array.to_s if array.nil? or array.length <= 1
66
+ array[0..-2].join(", ") + " and " + array[-1]
67
+ end
68
+ }
69
+
70
+ desc 'add_child NAME', 'Add child to Santas registry'
71
+ def add_child(name)
72
+ file = File.read('santarc.json')
73
+ data_hash = JSON.parse(file)
74
+ children = data_hash['children']
75
+ children.push name
76
+ data_hash['children'] = children
77
+ puts data_hash
78
+
79
+ write_file(data_hash)
80
+ puts "Added #{name} to children"
81
+ end
82
+
83
+ desc 'ping', 'See where Santa is right now'
84
+ def ping
85
+ file = File.read('messages.json')
86
+ messages = JSON.parse(file)
87
+ santaMs = messages['SANTA_SNIPPETS']
88
+ a = rand(0..(santaMs.length-1))
89
+ msg = santaMs[a]
90
+ puts "sending message..."
91
+ sendMessage(msg)
92
+ end
93
+
94
+ desc 'telegraph MSG', "Send a text message as Santa's helper."
95
+
96
+ # Longer description when `santa help telegraph` is called.
97
+ long_desc <<-LONGDESC
98
+ `santa telegraph` will send any message to the phone number you entered on setup.
99
+
100
+ "You can optionally specify a second parameter, which will insert a time delay (in seconds) so that your messages can be sent while you or the phone are within eyesight of your little ones."
101
+
102
+ #{Paint["> $ santa telegraph 'Santa was wondering if Anna likes red things?' --delay 200", "#55C4C2"]}
103
+ LONGDESC
104
+
105
+ option :delay, :type => :numeric, :default => 0
106
+ def telegraph(message)
107
+ puts "delay: #{options[:delay]}" if options[:delay]
108
+ sleep(options[:delay])
109
+ puts Paint["sending message as SMS...", :red]
110
+ sendMessage(message)
111
+ puts "#{Paint["Santa has approved that communication and we'll forward to the appropriate phone soon. -the elves", :white]}"
112
+ end
113
+
114
+ end
115
+ end
116
+ end
@@ -0,0 +1 @@
1
+ @@children = Jarod""
@@ -0,0 +1,3 @@
1
+ module SantasTwilioHelper
2
+ VERSION = "0.0.2"
3
+ end
data/messages.json ADDED
@@ -0,0 +1,35 @@
1
+ {"CITY_SNIPPETS": [
2
+ "Looks like Santa is in route to ",
3
+ "Santa is en route to ",
4
+ "Santa is on his way to ",
5
+ "Santa is landing in ",
6
+ "Santa is delivering gifts in ",
7
+ "Santa is eating some cookies in ",
8
+ "Santa is drinking some egg nog in ",
9
+ "Santa is sipping some hot cocoa right now in ",
10
+ "Santa is driving the reindeers to",
11
+ "Santa stopped to feed the reindeers in",
12
+ "Santa had to straighten the sled. He's currently over",
13
+ "Santa is right above"
14
+ ],
15
+ "GIFT_SNIPPETS": [
16
+ "He is excited to bring gifts to",
17
+ "He can't wait for "
18
+ ],
19
+ "SANTA_SNIPPETS" : [
20
+ "We're currently in Oregon getting some wood to bring back to the northpole for all of the toys.",
21
+ "Thanks for checking in. We're still working away here in the north pole!",
22
+ "One of the elves just invented a new toy. Excited to share it with you.",
23
+ "Just saw Santa's list, are you being good today?",
24
+ "Just got back from helping Santa carry his dinner in. He eats a lot this time of year!",
25
+ "Just eating dessert. In the northpole we eat dessert for all 3 meals!",
26
+ "Later this afternoon Santa's security is doing trial runs for his visit to New York. Santa has a lot of fans there!",
27
+ "Was just checking on the Sleigh. It's ready to fly!",
28
+ "Mrs. Santa just told me to ask you to leave out less cookies than you did last year. Apparently Santa Claus loves your cookies far too much.",
29
+ "Was just out in the stables checking up on Dasher, he had a cold last week. He's all smiles now!",
30
+ "Was just out in the stables with Rudolph. He loves to have his nose pet. Such a weird reindeer!",
31
+ "Was just playing candy-cane fetch with Prancer.",
32
+ "Feeding the reindeer. brb",
33
+ "It always feels like winter in the Northpole. Just thought you should snow."
34
+ ]
35
+ }
data/santarc.json ADDED
@@ -0,0 +1,2 @@
1
+ // Your Santas Helper configuration.
2
+ {"santa_helper":"Sarah","children":["Elliott","annabelle","Erikson"],"telephone":"2066505813","zip_code":"92103"}
@@ -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 'santas_twilio_helper/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "santas_twilio_helper"
8
+ spec.version = SantasTwilioHelper::VERSION
9
+ spec.authors = ["Jarod Reyes"]
10
+ spec.email = ["jreyes@twilio.com"]
11
+ spec.summary = 'all the tools santas little helper might need. Powered by Twilio.'
12
+ spec.description = 'All the tools Santas Helper might need. Send MMS, check Santas progress, register childs name, etc.'
13
+ spec.homepage = "https://github.com/jarodreyes/star-trek-twilio"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency 'thor', '~> 0.18'
22
+ spec.add_dependency 'paint'
23
+ spec.add_dependency 'json'
24
+ spec.add_dependency 'twilio-ruby', '~> 3.11'
25
+
26
+ spec.add_development_dependency "bundler", "~> 1.7"
27
+ spec.add_development_dependency "rake", "~> 10.0"
28
+ end
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: santas_twilio_helper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Jarod Reyes
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.18'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.18'
27
+ - !ruby/object:Gem::Dependency
28
+ name: paint
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: json
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
+ - !ruby/object:Gem::Dependency
56
+ name: twilio-ruby
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.11'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.11'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.7'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.7'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '10.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '10.0'
97
+ description: All the tools Santas Helper might need. Send MMS, check Santas progress,
98
+ register childs name, etc.
99
+ email:
100
+ - jreyes@twilio.com
101
+ executables:
102
+ - santa
103
+ - santa_help
104
+ extensions: []
105
+ extra_rdoc_files: []
106
+ files:
107
+ - ".gitignore"
108
+ - Gemfile
109
+ - LICENSE.txt
110
+ - README.md
111
+ - Rakefile
112
+ - bin/santa
113
+ - bin/santa_help
114
+ - lib/santas_twilio_helper.rb
115
+ - lib/santas_twilio_helper/cli/application.rb
116
+ - lib/santas_twilio_helper/cli/config.rb
117
+ - lib/santas_twilio_helper/version.rb
118
+ - messages.json
119
+ - santarc.json
120
+ - santas_twilio_helper.gemspec
121
+ homepage: https://github.com/jarodreyes/star-trek-twilio
122
+ licenses:
123
+ - MIT
124
+ metadata: {}
125
+ post_install_message:
126
+ rdoc_options: []
127
+ require_paths:
128
+ - lib
129
+ required_ruby_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ required_rubygems_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ requirements: []
140
+ rubyforge_project:
141
+ rubygems_version: 2.4.2
142
+ signing_key:
143
+ specification_version: 4
144
+ summary: all the tools santas little helper might need. Powered by Twilio.
145
+ test_files: []