assistly 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,12 @@
1
+ 0.1.5 - April 15, 2011
2
+ -------------------------
3
+ * Support for creating outbound interactions via email
4
+
5
+ 0.1.1 - 0.1.4 - April 14, 2011
6
+ -------------------------
7
+ * Miscellaneous bug fixes found when actually using this in production.
8
+ * Moved to Zencoder Github account
9
+
1
10
  0.1 - April 12, 2011
2
11
  -------------------------
3
12
  * Initial release
data/README.mkd CHANGED
@@ -24,54 +24,70 @@ Usage Examples
24
24
  # All methods require authentication. To get your Assistly OAuth credentials,
25
25
  # register an app in the Assistly admin for your account at http://your-domain.assistly.com/admin
26
26
  @assistly = Assistly.configure do |config|
27
+ config.subdomain = YOUR_ASSISTLY_SUBDOMAIN
27
28
  config.consumer_key = YOUR_CONSUMER_KEY
28
29
  config.consumer_secret = YOUR_CONSUMER_SECRET
29
30
  config.oauth_token = YOUR_OAUTH_TOKEN
30
31
  config.oauth_token_secret = YOUR_OAUTH_TOKEN_SECRET
31
32
  end
32
-
33
+
33
34
  # List cases
34
35
  @assistly.cases
35
36
  @assistly.cases(:since_id => 12345)
36
-
37
+
37
38
  # Get a specific case
38
39
  @assistly.case(12345)
39
-
40
+
40
41
  # Update a specific case
41
42
  @assistly.update_case(12345, :subject => "Something Else")
42
-
43
+
44
+ # Get a case url
45
+ @assistly.case_url(12345)
46
+
43
47
  # List customers
44
48
  @assistly.customers
45
49
  @assistly.customers(:since_id => 12345, :count => 5)
46
-
50
+
47
51
  # Get a specific customer
48
52
  @assistly.customer(12345)
49
-
53
+
50
54
  # Create a customer
51
55
  @assistly.create_customer(:name => "Chris Warren", :twitter => "cdwarren")
52
-
56
+
53
57
  # Update a customer
54
58
  @assistly.update_customer(12345, :name => "Christopher Warren")
55
-
59
+
56
60
  # Add a customer email
57
61
  @assistly.create_customer_email(12345, "foo@example.com")
58
62
  @assistly.create_customer_email(12345, "foo@example.com", :customer_contact_type => "work")
59
-
63
+
60
64
  # Update a customer email
61
65
  @assistly.update_customer_email(12345, 54321, :email => "foo@example.com")
62
66
  @assistly.update_customer_email(12345, 54321, :customer_contact_type => "work")
63
-
67
+
64
68
  # List interactions
65
69
  @assistly.interactions
66
70
  @assistly.interactions(:since_id => 12345)
67
71
  @assistly.interactions(:since_id => 12345, :count => 5)
72
+
73
+ # Create an inbound interaction
74
+ @assistly.create_interaction(:interaction_subject => "help me", :customer_email => "foo@example.com", :interaction_body => "You're my only hope.")
75
+ @assistly.create_inbound_interaction(:interaction_subject => "help me", :customer_email => "foo@example.com", :interaction_body => "You're my only hope.")
68
76
 
69
- # Create an interaction
70
- @assistly.create_interaction(:interaction_subject => "this is a test", :customer_email => "foo@example.com")
71
-
77
+ # Create an outbound interaction
78
+ # Assistly's API doesn't support creating outbound communications, so we do this over email with a BCC back to Assistly and customer headers.
79
+ # Assistly.support_email must be set to your Assistly email address so that the email can be sent to the account and give the customer someone to respond to.
80
+ #
81
+ # Read more at http://support.assistly.com/customer/portal/articles/4180
82
+ # Additional headers can be passed as well http://support.assistly.com/customer/portal/articles/6728
83
+ #
84
+ # Email is sent using Pony https://github.com/benprew/pony
85
+ @assistly.create_interaction(:interaction_subject => "Missed Your Call", :customer_email => "foo@example.com", :interaction_body => "Sorry we missed yoru call. What's up?", :direction => "outbound")
86
+ @assistly.create_outbound_interaction("foo@example.com", "Missed Your Call", "Sorry we missed yoru call. What's up?")
87
+
72
88
  # List users
73
89
  @assistly.users
74
-
90
+
75
91
  # Get a specific user
76
92
  @assistly.user(12345)
77
93
 
@@ -88,15 +104,15 @@ Here are some ways *you* can contribute:
88
104
  * by writing specifications
89
105
  * by writing code (**no patch is too small**: fix typos, add comments, clean up inconsistent whitespace)
90
106
  * by refactoring code
91
- * by closing [issues](http://github.com/chriswarren/assistly/issues)
107
+ * by closing [issues](http://github.com/zencoder/assistly/issues)
92
108
  * by reviewing patches
93
109
 
94
- All contributors will be added to the [HISTORY](https://github.com/chriswarren/twitter/blob/master/HISTORY.mkd)
110
+ All contributors will be added to the [HISTORY](https://github.com/zencoder/assistly/blob/master/HISTORY.mkd)
95
111
  file and will receive the respect and gratitude of the community.
96
112
 
97
113
  Submitting an Issue
98
114
  -------------------
99
- We use the [GitHub issue tracker](http://github.com/chriswarren/assistly/issues) to track bugs and
115
+ We use the [GitHub issue tracker](http://github.com/zencoder/assistly/issues) to track bugs and
100
116
  features. Before submitting a bug report or feature request, check to make sure it hasn't already
101
117
  been submitted. You can indicate support for an existing issuse by voting it up. When submitting a
102
118
  bug report, please include a [Gist](http://gist.github.com/) that includes a stack trace and any
@@ -117,5 +133,5 @@ Submitting a Pull Request
117
133
 
118
134
  Copyright
119
135
  ---------
120
- Copyright (c) 2011 Chris Warren
121
- See [LICENSE](https://github.com/chriswarren/assistly/blob/master/LICENSE.mkd) for details.
136
+ Copyright (c) 2011 Chris Warren/Zencoder
137
+ See [LICENSE](https://github.com/zencoder/assistly/blob/master/LICENSE.mkd) for details.
@@ -7,6 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.add_development_dependency('maruku', '~> 0.6')
8
8
  s.add_development_dependency('rake', '~> 0.8')
9
9
  s.add_development_dependency('rspec', '~> 2.5')
10
+ s.add_development_dependency('email_spec', '~> 1.1.1')
10
11
  s.add_development_dependency('simplecov', '~> 0.4')
11
12
  s.add_development_dependency('webmock', '~> 1.6')
12
13
  s.add_development_dependency('yard', '~> 0.6')
@@ -19,8 +20,9 @@ Gem::Specification.new do |s|
19
20
  s.add_runtime_dependency('multi_xml', '~> 0.2.0')
20
21
  s.add_runtime_dependency('rash', '~> 0.3.0')
21
22
  s.add_runtime_dependency('simple_oauth', '~> 0.1.4')
23
+ s.add_runtime_dependency('pony', '~> 1.1')
22
24
  s.authors = ["Chris Warren"]
23
- s.description = %q{A Ruby wrapper for the Assistly REST API, based on the Twitter gem}
25
+ s.description = %q{A Ruby wrapper for the Assistly REST API}
24
26
  s.post_install_message =<<eos
25
27
  ********************************************************************************
26
28
 
@@ -44,7 +44,7 @@ module Assistly
44
44
  if response['success']
45
45
  return response['results']['customer']
46
46
  else
47
- return response['errors']
47
+ return response
48
48
  end
49
49
  end
50
50
 
@@ -62,7 +62,7 @@ module Assistly
62
62
  if response['success']
63
63
  return response['results']['customer']
64
64
  else
65
- return response['errors']
65
+ return response
66
66
  end
67
67
  end
68
68
 
@@ -81,7 +81,7 @@ module Assistly
81
81
  if response['success']
82
82
  return response['results']['email']
83
83
  else
84
- return response['errors']
84
+ return response
85
85
  end
86
86
  end
87
87
 
@@ -100,7 +100,7 @@ module Assistly
100
100
  if response['success']
101
101
  return response['results']['email']
102
102
  else
103
- return response['errors']
103
+ return response
104
104
  end
105
105
  end
106
106
  end
@@ -17,8 +17,23 @@ module Assistly
17
17
  response = get("interactions",options)
18
18
  response['results']
19
19
  end
20
+
21
+ def create_interaction(*args)
22
+ options = args.last.is_a?(Hash) ? args.pop : {}
23
+ direction =
24
+ if options[:direction].to_s == "outbound"
25
+ options.delete(:direction)
26
+ to = options.delete(:customer_email)
27
+ subject = options.delete(:interaction_subject)
28
+ body = options.delete(:interaction_body)
29
+
30
+ create_outbound_interaction(to, subject, body, options)
31
+ else
32
+ create_inbound_interaction(options)
33
+ end
34
+ end
20
35
 
21
- # Creates an interaction
36
+ # Creates an interaction from a customer
22
37
  #
23
38
  # @format :json
24
39
  # @authenticated true
@@ -27,15 +42,33 @@ module Assistly
27
42
  # @see http://dev.assistly.com/docs/api/interactions/create
28
43
  # @example Create a new interaction
29
44
  # Assistly.create_interaction(:interaction_subject => "this is an api test", :customer_email => "foo@example.com")
30
- def create_interaction(*args)
45
+ def create_inbound_interaction(*args)
31
46
  options = args.last.is_a?(Hash) ? args.pop : {}
32
47
  response = post('interactions', options)
33
48
  if response['success']
34
49
  return response['results']
35
50
  else
36
- return response['errors']
51
+ return response
37
52
  end
38
53
  end
54
+
55
+ # Create an interaction from an agent
56
+ #
57
+ # Assistly's API doesn't support creating a new case/interaction initiated by an agent
58
+ # so we'll use send an email to the customer directly that is BCC'd to the support email address
59
+ # which will create the ticket
60
+ #
61
+ # @see http://support.assistly.com/customer/portal/articles/4180
62
+ # @see http://support.assistly.com/customer/portal/articles/6728
63
+ def create_outbound_interaction(to, subject, body, *args)
64
+ raise Assistly::SupportEmailNotSet if support_email.blank?
65
+ options = args.last.is_a?(Hash) ? args.pop : {}
66
+ options.merge!(:to => to, :subject => subject, :body => body, :from => support_email, :bcc => support_email)
67
+ options.merge!(:headers => { "x-assistly-customer-email" => to,
68
+ "x-assistly-interaction-direction" => "out",
69
+ "x-assistly-case-status" => options[:status]||"open"})
70
+ Pony.mail(options)
71
+ end
39
72
  end
40
73
  end
41
74
  end
@@ -14,6 +14,7 @@ module Assistly
14
14
  :oauth_token_secret,
15
15
  :proxy,
16
16
  :subdomain,
17
+ :support_email,
17
18
  :user_agent,
18
19
  :version].freeze
19
20
 
@@ -48,7 +49,7 @@ module Assistly
48
49
  # By default, don't use a proxy server
49
50
  DEFAULT_PROXY = nil
50
51
 
51
- # By default, don't set a subdomain
52
+ # By default use example
52
53
  DEFAULT_SUBDOMAIN = "example"
53
54
 
54
55
  # The user agent that will be sent to the API endpoint if none is set
@@ -56,7 +57,9 @@ module Assistly
56
57
 
57
58
  # The user agent that will be sent to the API endpoint if none is set
58
59
  DEFAULT_VERSION = "v1".freeze
59
-
60
+
61
+ # By default, don't set a support email address
62
+ DEFAULT_SUPPORT_EMAIL = nil
60
63
 
61
64
  # @private
62
65
  attr_accessor *VALID_OPTIONS_KEYS
@@ -86,6 +89,7 @@ module Assistly
86
89
  self.oauth_token_secret = DEFAULT_OAUTH_TOKEN_SECRET
87
90
  self.proxy = DEFAULT_PROXY
88
91
  self.subdomain = DEFAULT_SUBDOMAIN
92
+ self.support_email = DEFAULT_SUPPORT_EMAIL
89
93
  self.user_agent = DEFAULT_USER_AGENT
90
94
  self.version = DEFAULT_VERSION
91
95
  self
@@ -59,4 +59,9 @@ module Assistly
59
59
 
60
60
  # Raised when Assistly returns the HTTP status code 503
61
61
  class ServiceUnavailable < Error; end
62
+
63
+ # Gem Specific Errors
64
+ class AssistlyError < StandardError; end
65
+
66
+ class SupportEmailNotSet < AssistlyError; end
62
67
  end
@@ -1,4 +1,4 @@
1
1
  module Assistly
2
2
  # The version of the gem
3
- VERSION = '0.1.4'.freeze unless defined?(::Assistly::VERSION)
3
+ VERSION = '0.1.5'.freeze unless defined?(::Assistly::VERSION)
4
4
  end
@@ -38,6 +38,7 @@ describe Assistly::API do
38
38
  :format => :xml,
39
39
  :proxy => 'http://erik:sekret@proxy.example.com:8080',
40
40
  :subdomain => 'zencoder',
41
+ :support_email => 'help@zencoder.com',
41
42
  :user_agent => 'Custom User Agent',
42
43
  :version => "amazing"
43
44
  }
@@ -24,7 +24,7 @@ describe Assistly::Client do
24
24
 
25
25
  it "should return up to 100 cases worth of extended information" do
26
26
  cases = @client.cases
27
-
27
+
28
28
  cases.should be_a Array
29
29
  cases.first.case.id.should == 1
30
30
  cases.first.case.user.name.should == "Jeremy Suriel"
@@ -32,7 +32,7 @@ describe Assistly::Client do
32
32
 
33
33
  end
34
34
  end
35
-
35
+
36
36
  describe ".case" do
37
37
 
38
38
  context "lookup" do
@@ -50,7 +50,7 @@ describe Assistly::Client do
50
50
 
51
51
  it "should return up to 100 cases worth of extended information" do
52
52
  a_case = @client.case(1)
53
-
53
+
54
54
  a_case.id.should == 1
55
55
  a_case.external_id.should == "123"
56
56
  a_case.subject.should == "Welcome to Assistly"
@@ -58,7 +58,7 @@ describe Assistly::Client do
58
58
 
59
59
  end
60
60
  end
61
-
61
+
62
62
  describe ".update_case" do
63
63
 
64
64
  context "update" do
@@ -76,14 +76,14 @@ describe Assistly::Client do
76
76
 
77
77
  it "should return up to 100 cases worth of extended information" do
78
78
  a_case = @client.update_case(1, :subject => "Welcome to Assistly")
79
-
79
+
80
80
  a_case.id.should == 1
81
81
  a_case.subject.should == "Welcome to Assistly"
82
82
  end
83
83
 
84
84
  end
85
85
  end
86
-
86
+
87
87
  describe ".case_url" do
88
88
 
89
89
  context "generating a case url" do
@@ -1,14 +1,17 @@
1
1
  require 'helper'
2
2
 
3
3
  describe Assistly::Client do
4
+ include EmailSpec::Helpers
5
+ include EmailSpec::Matchers
6
+
4
7
  Assistly::Configuration::VALID_FORMATS.each do |format|
5
8
  context ".new(:format => '#{format}')" do
6
9
  before do
7
- @client = Assistly::Client.new(:subdomain => "example", :format => format, :consumer_key => 'CK', :consumer_secret => 'CS', :oauth_token => 'OT', :oauth_token_secret => 'OS')
10
+ @client = Assistly::Client.new(:subdomain => "example", :format => format, :consumer_key => 'CK', :consumer_secret => 'CS', :oauth_token => 'OT', :oauth_token_secret => 'OS', :support_email => "help@example.com")
8
11
  end
9
12
 
10
13
  describe ".create_interaction" do
11
- context "create a new interaction" do
14
+ context "create a new interaction without specifying direction should default to inbound" do
12
15
  before do
13
16
  stub_post("interactions.#{format}").
14
17
  to_return(:body => fixture("interaction_create.#{format}"), :headers => {:content_type => "application/#{format}; charset=utf-8"})
@@ -27,6 +30,122 @@ describe Assistly::Client do
27
30
  interaction.interaction.interactionable.email.subject.should == "this is an api test"
28
31
  end
29
32
  end
33
+
34
+ context "create a new interaction and specify inbound" do
35
+ before do
36
+ stub_post("interactions.#{format}").
37
+ to_return(:body => fixture("interaction_create.#{format}"), :headers => {:content_type => "application/#{format}; charset=utf-8"})
38
+ end
39
+
40
+ it "should get the correct resource" do
41
+ @client.create_interaction(:interaction_subject => "this is an api test", :customer_email => "foo@example.com", :direction => "in")
42
+ a_post("interactions.#{format}").
43
+ should have_been_made
44
+ end
45
+
46
+ it "should create an interaction" do
47
+ interaction = @client.create_interaction(:interaction_subject => "this is an api test", :customer_email => "foo@example.com", :direction => "in")
48
+
49
+ interaction.customer.emails.first.email.email.should == "customer@zencoder.com"
50
+ interaction.interaction.interactionable.email.subject.should == "this is an api test"
51
+ end
52
+ end
53
+
54
+ context "create a new interaction and specify outbound" do
55
+ before do
56
+ @email = @client.create_interaction(:customer_email => "customer@example.com", :interaction_subject => "Need help?", :interaction_body => "Sorry we missed you in chat today.", :direction => "outbound")
57
+ end
58
+
59
+ it "should deliver the email to the customer" do
60
+ @email.last.should deliver_to("customer@example.com")
61
+ end
62
+
63
+ it "should be from the support email" do
64
+ @email.last.should deliver_from(@client.support_email)
65
+ end
66
+
67
+ it "should contain the message in the mail body" do
68
+ @email.last.should have_body_text(/Sorry we missed you in chat today/)
69
+ end
70
+
71
+ it "should bcc to the support email" do
72
+ @email.last.should bcc_to(@client.support_email)
73
+ end
74
+
75
+ it "should set the Assistly headers" do
76
+ @email.last.should have_header("x-assistly-customer-email","customer@example.com")
77
+ @email.last.should have_header("x-assistly-interaction-direction","out")
78
+ @email.last.should have_header("x-assistly-case-status","open")
79
+ end
80
+ end
81
+ end
82
+
83
+ describe ".create_inbound_interaction" do
84
+ context "create a new interaction" do
85
+ before do
86
+ stub_post("interactions.#{format}").
87
+ to_return(:body => fixture("interaction_create.#{format}"), :headers => {:content_type => "application/#{format}; charset=utf-8"})
88
+ end
89
+
90
+ it "should get the correct resource" do
91
+ @client.create_inbound_interaction(:interaction_subject => "this is an api test", :customer_email => "foo@example.com")
92
+ a_post("interactions.#{format}").
93
+ should have_been_made
94
+ end
95
+
96
+ it "should create an interaction" do
97
+ interaction = @client.create_inbound_interaction(:interaction_subject => "this is an api test", :customer_email => "foo@example.com")
98
+
99
+ interaction.customer.emails.first.email.email.should == "customer@zencoder.com"
100
+ interaction.interaction.interactionable.email.subject.should == "this is an api test"
101
+ end
102
+ end
103
+ end
104
+
105
+ describe ".create_outbound_interaction" do
106
+ context "create" do
107
+
108
+ before do
109
+ @email = @client.create_outbound_interaction("customer@example.com", "Need help?", "Sorry we missed you in chat today.")
110
+ end
111
+
112
+ it "should deliver the email to the customer" do
113
+ @email.last.should deliver_to("customer@example.com")
114
+ end
115
+
116
+ it "should be from the support email" do
117
+ @email.last.should deliver_from(@client.support_email)
118
+ end
119
+
120
+ it "should contain the message in the mail body" do
121
+ @email.last.should have_body_text(/Sorry we missed you in chat today/)
122
+ end
123
+
124
+ it "should bcc to the support email" do
125
+ @email.last.should bcc_to(@client.support_email)
126
+ end
127
+
128
+ it "should set the Assistly headers" do
129
+ @email.last.should have_header("x-assistly-customer-email","customer@example.com")
130
+ @email.last.should have_header("x-assistly-interaction-direction","out")
131
+ @email.last.should have_header("x-assistly-case-status","open")
132
+ end
133
+
134
+ end
135
+
136
+ context "without support_email defined" do
137
+
138
+ before do
139
+ @client_without_support_email = Assistly::Client.new(:subdomain => "example", :format => format, :consumer_key => 'CK', :consumer_secret => 'CS', :oauth_token => 'OT', :oauth_token_secret => 'OS')
140
+ end
141
+
142
+ it "should raise an error" do
143
+ lambda do
144
+ @client_without_support_email.create_outbound_interaction("customer@example.com", "Need help?", "Sorry we missed you in chat today.")
145
+ end.should raise_error(Assistly::SupportEmailNotSet)
146
+ end
147
+
148
+ end
30
149
  end
31
150
 
32
151
  describe ".interactions" do
@@ -46,7 +165,7 @@ describe Assistly::Client do
46
165
 
47
166
  it "should return up to 100 users worth of extended information" do
48
167
  interactions = @client.interactions
49
-
168
+
50
169
  interactions.should be_a Array
51
170
  interactions.last.interaction.user.name.should == "Agent Jeremy"
52
171
  end
@@ -59,6 +59,19 @@ describe Assistly do
59
59
  end
60
60
  end
61
61
 
62
+ describe ".support_email" do
63
+ it "should return the default support_email" do
64
+ Assistly.support_email.should == Assistly::Configuration::DEFAULT_SUPPORT_EMAIL
65
+ end
66
+ end
67
+
68
+ describe ".support_email=" do
69
+ it "should set the support_email" do
70
+ Assistly.support_email = "help@example.com"
71
+ Assistly.support_email.should == "help@example.com"
72
+ end
73
+ end
74
+
62
75
  describe ".version=" do
63
76
  before do
64
77
  Assistly.version = "v4"
@@ -5,8 +5,10 @@ SimpleCov.start do
5
5
  add_group 'Specs', 'spec'
6
6
  end
7
7
  require 'assistly'
8
+ require 'pony'
8
9
  require 'rspec'
9
10
  require 'webmock/rspec'
11
+ require 'email_spec'
10
12
  require 'ruby-debug'
11
13
  RSpec.configure do |config|
12
14
  config.include WebMock::API
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: assistly
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 4
10
- version: 0.1.4
9
+ - 5
10
+ version: 0.1.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Chris Warren
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-14 00:00:00 Z
18
+ date: 2011-04-15 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: json
@@ -93,9 +93,25 @@ dependencies:
93
93
  type: :development
94
94
  version_requirements: *id005
95
95
  - !ruby/object:Gem::Dependency
96
- name: simplecov
96
+ name: email_spec
97
97
  prerelease: false
98
98
  requirement: &id006 !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ hash: 17
104
+ segments:
105
+ - 1
106
+ - 1
107
+ - 1
108
+ version: 1.1.1
109
+ type: :development
110
+ version_requirements: *id006
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ prerelease: false
114
+ requirement: &id007 !ruby/object:Gem::Requirement
99
115
  none: false
100
116
  requirements:
101
117
  - - ~>
@@ -106,11 +122,11 @@ dependencies:
106
122
  - 4
107
123
  version: "0.4"
108
124
  type: :development
109
- version_requirements: *id006
125
+ version_requirements: *id007
110
126
  - !ruby/object:Gem::Dependency
111
127
  name: webmock
112
128
  prerelease: false
113
- requirement: &id007 !ruby/object:Gem::Requirement
129
+ requirement: &id008 !ruby/object:Gem::Requirement
114
130
  none: false
115
131
  requirements:
116
132
  - - ~>
@@ -121,11 +137,11 @@ dependencies:
121
137
  - 6
122
138
  version: "1.6"
123
139
  type: :development
124
- version_requirements: *id007
140
+ version_requirements: *id008
125
141
  - !ruby/object:Gem::Dependency
126
142
  name: yard
127
143
  prerelease: false
128
- requirement: &id008 !ruby/object:Gem::Requirement
144
+ requirement: &id009 !ruby/object:Gem::Requirement
129
145
  none: false
130
146
  requirements:
131
147
  - - ~>
@@ -136,11 +152,11 @@ dependencies:
136
152
  - 6
137
153
  version: "0.6"
138
154
  type: :development
139
- version_requirements: *id008
155
+ version_requirements: *id009
140
156
  - !ruby/object:Gem::Dependency
141
157
  name: ZenTest
142
158
  prerelease: false
143
- requirement: &id009 !ruby/object:Gem::Requirement
159
+ requirement: &id010 !ruby/object:Gem::Requirement
144
160
  none: false
145
161
  requirements:
146
162
  - - ~>
@@ -151,11 +167,11 @@ dependencies:
151
167
  - 5
152
168
  version: "4.5"
153
169
  type: :development
154
- version_requirements: *id009
170
+ version_requirements: *id010
155
171
  - !ruby/object:Gem::Dependency
156
172
  name: hashie
157
173
  prerelease: false
158
- requirement: &id010 !ruby/object:Gem::Requirement
174
+ requirement: &id011 !ruby/object:Gem::Requirement
159
175
  none: false
160
176
  requirements:
161
177
  - - ~>
@@ -167,11 +183,11 @@ dependencies:
167
183
  - 0
168
184
  version: 1.0.0
169
185
  type: :runtime
170
- version_requirements: *id010
186
+ version_requirements: *id011
171
187
  - !ruby/object:Gem::Dependency
172
188
  name: faraday
173
189
  prerelease: false
174
- requirement: &id011 !ruby/object:Gem::Requirement
190
+ requirement: &id012 !ruby/object:Gem::Requirement
175
191
  none: false
176
192
  requirements:
177
193
  - - ~>
@@ -183,11 +199,11 @@ dependencies:
183
199
  - 0
184
200
  version: 0.6.0
185
201
  type: :runtime
186
- version_requirements: *id011
202
+ version_requirements: *id012
187
203
  - !ruby/object:Gem::Dependency
188
204
  name: faraday_middleware
189
205
  prerelease: false
190
- requirement: &id012 !ruby/object:Gem::Requirement
206
+ requirement: &id013 !ruby/object:Gem::Requirement
191
207
  none: false
192
208
  requirements:
193
209
  - - ~>
@@ -199,11 +215,11 @@ dependencies:
199
215
  - 3
200
216
  version: 0.6.3
201
217
  type: :runtime
202
- version_requirements: *id012
218
+ version_requirements: *id013
203
219
  - !ruby/object:Gem::Dependency
204
220
  name: multi_json
205
221
  prerelease: false
206
- requirement: &id013 !ruby/object:Gem::Requirement
222
+ requirement: &id014 !ruby/object:Gem::Requirement
207
223
  none: false
208
224
  requirements:
209
225
  - - ~>
@@ -215,11 +231,11 @@ dependencies:
215
231
  - 5
216
232
  version: 0.0.5
217
233
  type: :runtime
218
- version_requirements: *id013
234
+ version_requirements: *id014
219
235
  - !ruby/object:Gem::Dependency
220
236
  name: multi_xml
221
237
  prerelease: false
222
- requirement: &id014 !ruby/object:Gem::Requirement
238
+ requirement: &id015 !ruby/object:Gem::Requirement
223
239
  none: false
224
240
  requirements:
225
241
  - - ~>
@@ -231,11 +247,11 @@ dependencies:
231
247
  - 0
232
248
  version: 0.2.0
233
249
  type: :runtime
234
- version_requirements: *id014
250
+ version_requirements: *id015
235
251
  - !ruby/object:Gem::Dependency
236
252
  name: rash
237
253
  prerelease: false
238
- requirement: &id015 !ruby/object:Gem::Requirement
254
+ requirement: &id016 !ruby/object:Gem::Requirement
239
255
  none: false
240
256
  requirements:
241
257
  - - ~>
@@ -247,11 +263,11 @@ dependencies:
247
263
  - 0
248
264
  version: 0.3.0
249
265
  type: :runtime
250
- version_requirements: *id015
266
+ version_requirements: *id016
251
267
  - !ruby/object:Gem::Dependency
252
268
  name: simple_oauth
253
269
  prerelease: false
254
- requirement: &id016 !ruby/object:Gem::Requirement
270
+ requirement: &id017 !ruby/object:Gem::Requirement
255
271
  none: false
256
272
  requirements:
257
273
  - - ~>
@@ -263,8 +279,23 @@ dependencies:
263
279
  - 4
264
280
  version: 0.1.4
265
281
  type: :runtime
266
- version_requirements: *id016
267
- description: A Ruby wrapper for the Assistly REST API, based on the Twitter gem
282
+ version_requirements: *id017
283
+ - !ruby/object:Gem::Dependency
284
+ name: pony
285
+ prerelease: false
286
+ requirement: &id018 !ruby/object:Gem::Requirement
287
+ none: false
288
+ requirements:
289
+ - - ~>
290
+ - !ruby/object:Gem::Version
291
+ hash: 13
292
+ segments:
293
+ - 1
294
+ - 1
295
+ version: "1.1"
296
+ type: :runtime
297
+ version_requirements: *id018
298
+ description: A Ruby wrapper for the Assistly REST API
268
299
  email:
269
300
  - chris@zencoder.com
270
301
  executables: []