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

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 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