code_broker 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.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/REAME.md +41 -0
- data/Rakefile +1 -0
- data/code_broker.gemspec +26 -0
- data/lib/code_broker.rb +89 -0
- data/lib/code_broker/config.rb +15 -0
- data/lib/code_broker/connection.rb +11 -0
- data/lib/code_broker/version.rb +3 -0
- metadata +89 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/REAME.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Code Broker Ruby Client
|
2
|
+
|
3
|
+
This is a gem for interacting with [Code Broker](http://codebroker.com)'s API
|
4
|
+
|
5
|
+
## Example Usage
|
6
|
+
|
7
|
+
Put this in some initialization code. In rails for instance:
|
8
|
+
`config/initializers/codebroker.rb`.
|
9
|
+
|
10
|
+
``` ruby
|
11
|
+
CodeBroker.configure do |c|
|
12
|
+
c.account_id = "<account id>"
|
13
|
+
c.access_key = "<access key>"
|
14
|
+
c.program = "<program>"
|
15
|
+
c.short_code = "<short code>"
|
16
|
+
end
|
17
|
+
```
|
18
|
+
|
19
|
+
In a background job (this example is compatible with Resque):
|
20
|
+
|
21
|
+
``` ruby
|
22
|
+
class CodeBrokerOptinWorker
|
23
|
+
@queue = :critical
|
24
|
+
|
25
|
+
def self.perform(number, hour, timezone, program=nil)
|
26
|
+
# logger.info("Opting in #{number} to program '#{program}'")
|
27
|
+
|
28
|
+
response = CodeBroker.optin(number,
|
29
|
+
:hour => hour,
|
30
|
+
:timezone => timezone,
|
31
|
+
:program => program
|
32
|
+
)
|
33
|
+
|
34
|
+
# logger.info("Response: #{response.body}")
|
35
|
+
|
36
|
+
if response.body[/<body>(\d{3})/, 1].to_i != 200
|
37
|
+
raise "Bad Response for number #{number}, hour #{hour}, timezone #{timezone}: #{response.body}"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/code_broker.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "code_broker/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "code_broker"
|
7
|
+
s.version = CodeBroker::VERSION
|
8
|
+
s.authors = ["Ben Marini"]
|
9
|
+
s.email = ["ben.marini@akqa.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Client library to interface with Code Broker}
|
12
|
+
s.description = %q{Client library to interface with Code Broker}
|
13
|
+
|
14
|
+
s.rubyforge_project = "code_broker"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
# s.add_development_dependency "rspec"
|
23
|
+
# s.add_runtime_dependency "rest-client"
|
24
|
+
|
25
|
+
s.add_dependency "httparty", "~> 0.8.0"
|
26
|
+
end
|
data/lib/code_broker.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
|
3
|
+
class CodeBroker
|
4
|
+
autoload :Connection, "code_broker/connection"
|
5
|
+
autoload :Config, "code_broker/config"
|
6
|
+
|
7
|
+
# Optin a phone number to a program.
|
8
|
+
#
|
9
|
+
# number - Phone number to opt-in.
|
10
|
+
# opts - The Hash options used to refine the selection (default: {}):
|
11
|
+
# :hour - Hour of the day the user wants to recieve the message.
|
12
|
+
# in 24 hour time.
|
13
|
+
# :timezone - Timezone the user wants to recieve the message.
|
14
|
+
# :day - Day of the week the user wants to recieve the message,
|
15
|
+
# Sunday-Saturday is 1-7.
|
16
|
+
# :program - Program to opt-in to. (Defaults to global config)
|
17
|
+
# :short_code - Short code to opt-in with. (Defaults to global config)
|
18
|
+
#
|
19
|
+
# Usage: CodeBroker.optin("14155551212", :hour => "14", :timezone => "EST", :day => 1)
|
20
|
+
|
21
|
+
def self.optin(number, opts)
|
22
|
+
Connection.get("/scoptin.jsp",
|
23
|
+
:query => {
|
24
|
+
:spn => number,
|
25
|
+
:upref => "yes",
|
26
|
+
:uprefhod => opts[:hour],
|
27
|
+
:uprefustz => opts[:timezone],
|
28
|
+
:uprefdow => opts[:day],
|
29
|
+
:program => ( opts[:program] || Config.program ),
|
30
|
+
:msc => ( opts[:short_code] || Config.short_code )
|
31
|
+
}
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Send a real time message.
|
36
|
+
#
|
37
|
+
# number - Phone number to send message to.
|
38
|
+
# opts - The Hash options used to refine the selection (default: {}):
|
39
|
+
# :program - Program. (Defaults to global config)
|
40
|
+
# :short_code - Short code. (Defaults to global config)
|
41
|
+
#
|
42
|
+
# Usage: CodeBroker.rtm("14155551212", :program => 'PROGRAM')
|
43
|
+
|
44
|
+
def self.rtm(number, opts) # rtm = real time message
|
45
|
+
raise 'Missing key/value in options: :program. Program is required.' unless opts[:program]
|
46
|
+
Connection.get("/sckwd.jsp",
|
47
|
+
:query => {
|
48
|
+
:spn => number,
|
49
|
+
:program => opts[:program],
|
50
|
+
:msc => ( opts[:short_code] || Config.short_code )
|
51
|
+
}
|
52
|
+
)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Opt out of a program.
|
56
|
+
#
|
57
|
+
# number - Phone number to opt out.
|
58
|
+
# opts - The Hash options used to refine the selection (default: {}):
|
59
|
+
# :program - Program. (Defaults to global config)
|
60
|
+
# :short_code - Short code. (Defaults to global config)
|
61
|
+
#
|
62
|
+
# Usage: CodeBroker.optout("14155551212", :program => 'PROGRAM')
|
63
|
+
|
64
|
+
def self.optout(number)
|
65
|
+
Connection.get("/scoptout.jsp",
|
66
|
+
:query => {
|
67
|
+
:spn => number,
|
68
|
+
:program => Config.program,
|
69
|
+
:msc => Config.short_code
|
70
|
+
}
|
71
|
+
)
|
72
|
+
end
|
73
|
+
|
74
|
+
# Set global configurations for all requests
|
75
|
+
#
|
76
|
+
# Usage:
|
77
|
+
#
|
78
|
+
# CodeBroker.configure do |c|
|
79
|
+
# c.account_id = "<account id>"
|
80
|
+
# c.access_key = "<access key>"
|
81
|
+
# c.program = "<program>"
|
82
|
+
# c.short_code = "<short code>"
|
83
|
+
# end
|
84
|
+
#
|
85
|
+
|
86
|
+
def self.configure
|
87
|
+
yield Config if block_given?
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CodeBroker
|
2
|
+
class Config
|
3
|
+
class << self
|
4
|
+
attr_accessor :program, :short_code
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.account_id=(val)
|
8
|
+
Connection.default_params[:cbid] = val
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.access_key=(val)
|
12
|
+
Connection.default_params[:key] = val
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
metadata
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: code_broker
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Ben Marini
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-09-19 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: httparty
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 63
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
- 8
|
32
|
+
- 0
|
33
|
+
version: 0.8.0
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
description: Client library to interface with Code Broker
|
37
|
+
email:
|
38
|
+
- ben.marini@akqa.com
|
39
|
+
executables: []
|
40
|
+
|
41
|
+
extensions: []
|
42
|
+
|
43
|
+
extra_rdoc_files: []
|
44
|
+
|
45
|
+
files:
|
46
|
+
- .gitignore
|
47
|
+
- Gemfile
|
48
|
+
- REAME.md
|
49
|
+
- Rakefile
|
50
|
+
- code_broker.gemspec
|
51
|
+
- lib/code_broker.rb
|
52
|
+
- lib/code_broker/config.rb
|
53
|
+
- lib/code_broker/connection.rb
|
54
|
+
- lib/code_broker/version.rb
|
55
|
+
homepage: ""
|
56
|
+
licenses: []
|
57
|
+
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
|
61
|
+
require_paths:
|
62
|
+
- lib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
hash: 3
|
69
|
+
segments:
|
70
|
+
- 0
|
71
|
+
version: "0"
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
version: "0"
|
81
|
+
requirements: []
|
82
|
+
|
83
|
+
rubyforge_project: code_broker
|
84
|
+
rubygems_version: 1.8.10
|
85
|
+
signing_key:
|
86
|
+
specification_version: 3
|
87
|
+
summary: Client library to interface with Code Broker
|
88
|
+
test_files: []
|
89
|
+
|