dpl 1.8.15.travis.1349.4 → 1.8.15.travis.1358.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NzEzYzU3Mzg5YzNiNDc0NWJlMmM2ZDNmMjJlOWQzMTAxZmNlZTJhMw==
4
+ NTNhOTliNmJkMTkyNjA0MzJjNDQ0ZTZkNjVkM2YzOWVlYTUxMjY0MA==
5
5
  data.tar.gz: !binary |-
6
- YTlmYjYxYmJmOWJiODQyZDE5ZmNjYjc1NzNmZjM2YzdiOGZiNmM3Yg==
6
+ ZTUyNWI2ZjVmNmMzODE4OTgyZWJlNzk0ZjFmMWEzODAzMDQxNDY2OQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OTFlM2NkYzg3ZDc0ZjQ2YmMzZWUzMzYyNDJjNGQwMGY4Y2E4ODkxY2ViNzQz
10
- NGNjNjIzNGE1YTRiMmEzMWIzOTI0ZGZiOWY0Njk3ZjQzYmY3OGU4ZTU5YTA3
11
- MmFiZTk0ODk0ODIyMGUwZmFiM2RkOTQ5MjRmM2JhYjRkNGUzNmY=
9
+ YWM2MDA5MWYyMjhiODZhZjI2MWYwYjljNTc4NTRkZjc3YWIwYjhjNzRmZDMz
10
+ YzcyMmE0NDVmMjNlMzExMWE4YTk1ZDkzZGFmMjZhYjRlZmY2MzkzMDlmOTcw
11
+ YjkwZjJhY2IxNDk5YmNjMmI1OGFmMjU2ODJjODMwOTBkZmI3NTQ=
12
12
  data.tar.gz: !binary |-
13
- NjgwYjhhZTY5MzI5MWUwYjliNWFjZWQ0MmYwYjdhNzBjYWEyNjhkY2Y5NWRl
14
- M2NlMjliMWMzZDQxNTc3MmM3ZDQzZmJlZTc3MDMxYjdjODIwZTJiZDU1ZmYx
15
- NzYzNzJlMWQ4ZjQ1MTc4MjQzNDA2ZDY3NGRjZjE5ODA2OGRkNTA=
13
+ ZDEwY2VmZTA3ZWFlMDc2MGM0MWFiZWY1MDBhM2MyOGZiMzI5ZWY3YTJlZTk5
14
+ Mjg0YWZiZGEwZDM2NjZiODVkN2I1ZDFjYTJmM2QyYTg1MGZkMmY0YmVmYWJm
15
+ ZmRlODU3YzZkYjFiNDEyNjUxNGUxN2MxZmM5MWJhYjg4YjljNDI=
data/README.md CHANGED
@@ -34,6 +34,7 @@ Dpl supports the following providers:
34
34
  * [Hackage](#hackage)
35
35
  * [Heroku](#heroku)
36
36
  * [Lambda](#lambda)
37
+ * [Launchpad](#launchpad)
37
38
  * [Modulus](#modulus)
38
39
  * [Nodejitsu](#nodejitsu)
39
40
  * [NPM](#npm)
@@ -710,6 +711,24 @@ Deploy contents of a specific directory using specific module name:
710
711
  --handler_name="handler";
711
712
  ```
712
713
 
714
+ ### Launchpad:
715
+
716
+ #### Options:
717
+
718
+ * **slug**: Required. `~user-name/project-name/branch-name`
719
+ * **oauth_token**: Required. Your OAUTH token for Launchpad
720
+ * **oauth_token_secret**: Required. Your OAUTH token secret for Launchpad
721
+
722
+ #### Example:
723
+
724
+ Deploy contents of current working directory using default module:
725
+ ```
726
+ dpl --provider="launchpad" \
727
+ --slug="~user-name/project-name/branch-name" \
728
+ --oauth_token="${LAUNCHPAD_OAUTH_TOKEN}" \
729
+ --oauth_token_secret="${LAUNCHPAD_OAUTH_TOKEN_SECRET}";
730
+ ```
731
+
713
732
  ### TestFairy:
714
733
 
715
734
  Your Android(apk)/iOS(ipa) file will be uploaded to TestFairy,
data/lib/dpl/provider.rb CHANGED
@@ -32,6 +32,7 @@ module DPL
32
32
  autoload :Hackage, 'dpl/provider/hackage'
33
33
  autoload :Heroku, 'dpl/provider/heroku'
34
34
  autoload :Lambda, 'dpl/provider/lambda'
35
+ autoload :Launchpad, 'dpl/provider/launchpad'
35
36
  autoload :Modulus, 'dpl/provider/modulus'
36
37
  autoload :Nodejitsu, 'dpl/provider/nodejitsu'
37
38
  autoload :NPM, 'dpl/provider/npm'
@@ -0,0 +1,48 @@
1
+ require 'net/http'
2
+ require 'net/https'
3
+
4
+ module DPL
5
+ class Provider
6
+ class Launchpad < Provider
7
+
8
+ def initialize(context, options)
9
+ super
10
+ @http = Net::HTTP.new('api.launchpad.net', 443)
11
+ @http.use_ssl = true
12
+ end
13
+
14
+ def check_auth
15
+ end
16
+
17
+ def needs_key?
18
+ false
19
+ end
20
+
21
+ def push_app
22
+ response = api_call('/1.0/' + options[:slug] + '/+code-import', {'ws.op' => 'requestImport'})
23
+ error('Deploy failed! Launchpad credentials invalid. ' + response.code.to_s) if response.code == '401'
24
+ error('Error: ' + response.code.to_s + ' ' + response.body) unless response.kind_of? Net::HTTPSuccess
25
+ end
26
+
27
+ private
28
+
29
+ def api_call(path, data)
30
+ req = Net::HTTP::Post.new(path)
31
+ req.set_form_data(data)
32
+ req['Authorization'] = authorization
33
+ return @http.request(req)
34
+ end
35
+
36
+ def authorization
37
+ return 'OAuth oauth_consumer_key="Travis%20Deploy", ' +
38
+ 'oauth_nonce="' + rand(36**32).to_s(36) + '",' +
39
+ 'oauth_signature="%26' + options[:oauth_token_secret] + '",' +
40
+ 'oauth_signature_method="PLAINTEXT",' +
41
+ 'oauth_timestamp="' + Time::now().to_i.to_s + '",' +
42
+ 'oauth_token="' + options[:oauth_token] + '",' +
43
+ 'oauth_version="1.0"'
44
+ end
45
+
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+ require 'dpl/provider/cloudcontrol'
3
+
4
+ describe DPL::Provider::Launchpad do
5
+ subject :provider do
6
+ described_class.new(DummyContext.new, :slug => '~user/repo/branch', :oauth_token => 'uezinoosinmxkewhochq', :oauth_token_secret => 'dinb6fao4jh0kfdn5mich31cbikdkpjplkmadhi80h93kbbaableeeg41mm0jab9jif8ch7i2k9a80n5')
7
+ end
8
+
9
+ its(:needs_key?) { should be false }
10
+
11
+ describe '#push_app' do
12
+ it 'on api success' do
13
+ expect(provider).to receive(:api_call).with('/1.0/~user/repo/branch/+code-import', {'ws.op' => 'requestImport'}).and_return Net::HTTPSuccess.new("HTTP/1.1", 200, "Ok")
14
+ provider.push_app
15
+ end
16
+
17
+ it 'on api failure' do
18
+ expect(provider).to receive(:api_call).with('/1.0/~user/repo/branch/+code-import', {'ws.op' => 'requestImport'}).and_return double("Net::HTTPUnauthorized", code: 401, body: "", class: Net::HTTPUnauthorized)
19
+ expect { provider.push_app }.to raise_error(DPL::Error)
20
+ end
21
+ end
22
+
23
+ describe 'private method' do
24
+ describe '#authorization' do
25
+ it 'should return correct oauth' do
26
+ result = provider.instance_eval { authorization }
27
+ expect(result).to include('oauth_token="uezinoosinmxkewhochq",')
28
+ expect(result).to include('oauth_signature="%26dinb6fao4jh0kfdn5mich31cbikdkpjplkmadhi80h93kbbaableeeg41mm0jab9jif8ch7i2k9a80n5",')
29
+ end
30
+ end
31
+ end
32
+
33
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dpl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.15.travis.1349.4
4
+ version: 1.8.15.travis.1358.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Haase
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-06 00:00:00.000000000 Z
11
+ date: 2016-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -147,6 +147,7 @@ files:
147
147
  - lib/dpl/provider/heroku/git_deploy_key.rb
148
148
  - lib/dpl/provider/heroku/git_ssh.rb
149
149
  - lib/dpl/provider/lambda.rb
150
+ - lib/dpl/provider/launchpad.rb
150
151
  - lib/dpl/provider/modulus.rb
151
152
  - lib/dpl/provider/nodejitsu.rb
152
153
  - lib/dpl/provider/npm.rb
@@ -193,6 +194,7 @@ files:
193
194
  - spec/provider/heroku_git_deploy_key_spec.rb
194
195
  - spec/provider/heroku_git_spec.rb
195
196
  - spec/provider/lambda_spec.rb
197
+ - spec/provider/launchpad_spec.rb
196
198
  - spec/provider/modulus_spec.rb
197
199
  - spec/provider/npm_spec.rb
198
200
  - spec/provider/openshift_spec.rb