rlaunchpadlib 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +44 -0
  8. data/Rakefile +6 -0
  9. data/lib/rlaunchpadlib.rb +9 -0
  10. data/lib/rlaunchpadlib/client.rb +26 -0
  11. data/lib/rlaunchpadlib/person.rb +96 -0
  12. data/lib/rlaunchpadlib/project.rb +81 -0
  13. data/lib/rlaunchpadlib/project_group.rb +43 -0
  14. data/lib/rlaunchpadlib/version.rb +3 -0
  15. data/rlaunchpadlib.gemspec +28 -0
  16. data/spec/cassettes/client_get.yml +376 -0
  17. data/spec/cassettes/person.yml +80 -0
  18. data/spec/cassettes/person_archivesubscriptions.yml +52 -0
  19. data/spec/cassettes/person_branches.yml +822 -0
  20. data/spec/cassettes/person_bug_subscriber_packages.yml +48 -0
  21. data/spec/cassettes/person_bugs.yml +1088 -0
  22. data/spec/cassettes/person_merge_proposals.yml +101 -0
  23. data/spec/cassettes/person_requested_reviews.yml +180 -0
  24. data/spec/cassettes/project.yml +119 -0
  25. data/spec/cassettes/project_branches.yml +1931 -0
  26. data/spec/cassettes/project_bugs.yml +1027 -0
  27. data/spec/cassettes/project_group.yml +71 -0
  28. data/spec/cassettes/project_group_branches.yml +1985 -0
  29. data/spec/cassettes/project_group_bugs.yml +1068 -0
  30. data/spec/cassettes/project_group_merges.yml +317 -0
  31. data/spec/cassettes/project_merge_proposals.yml +1905 -0
  32. data/spec/cassettes/project_subscriptions.yml +48 -0
  33. data/spec/cassettes/project_timeline.yml +164 -0
  34. data/spec/rlaunchpadlib/lib/client_spec.rb +28 -0
  35. data/spec/rlaunchpadlib/lib/person_spec.rb +147 -0
  36. data/spec/rlaunchpadlib/lib/project_group_spec.rb +93 -0
  37. data/spec/rlaunchpadlib/lib/project_spec.rb +146 -0
  38. data/spec/spec_helper.rb +31 -0
  39. metadata +202 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8b8151a3e63a901d3e65db539f58e034fbeb9bc1
4
+ data.tar.gz: 705cb85ae0831b989720070475f13c22ab205f05
5
+ SHA512:
6
+ metadata.gz: 653a6f1e14a00703a9aca92f4b75274736a8ac9b3e9fa473fd3cb31f065b196bee0ccc24a30c82f4eef4e469c49b25cff1a833c177e20c025e2da7f523a4f318
7
+ data.tar.gz: ee9d78d4752db45d716a9f806b841b11b14e28abeaff0a8b8a66adad3c212d9cb34a4be9740634cae74375745a25bd2e8ecddbcd694601b9fa5b79c82f61593f
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --format documentation
3
+ --fail-fast
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - "2.0.0"
4
+ - "1.9.3"
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rlaunchpadlib.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Charles Butler
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,44 @@
1
+ # Rlaunchpadlib
2
+
3
+ [![Build Status](https://travis-ci.org/chuckbutler/rlaunchpadlib.svg?branch=master)](https://travis-ci.org/chuckbutler/rlaunchpadlib)
4
+ [![Code Climate](https://codeclimate.com/github/chuckbutler/rlaunchpadlib.png)](https://codeclimate.com/github/chuckbutler/rlaunchpadlib)
5
+ [![Coverage Status](https://coveralls.io/repos/chuckbutler/rlaunchpadlib/badge.png)](https://coveralls.io/r/chuckbutler/rlaunchpadlib)
6
+
7
+ Launchpad.net API wrapper for ruby.
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ gem 'rlaunchpadlib'
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install rlaunchpadlib
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Caveats
28
+
29
+ The Gem will initially be Read-only access to your launchpad data.
30
+
31
+ ## Roadmap
32
+
33
+ See: [Milestones](https://github.com/chuckbutler/rlaunchpadlib/issues/milestones)
34
+
35
+
36
+
37
+ ## Contributing
38
+
39
+ 1. Fork it ( https://github.com/chuckbutler/rlaunchpadlib/fork )
40
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
41
+ 3. **Add tests**
42
+ 4. Commit your changes (`git commit -am 'Add some feature'`)
43
+ 5. Push to the branch (`git push origin my-new-feature`)
44
+ 6. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new('spec')
5
+
6
+ task :default => :spec
@@ -0,0 +1,9 @@
1
+ require "rlaunchpadlib/version"
2
+ require "httparty"
3
+ Dir[File.dirname(__FILE__) + '/rlaunchpadlib/*.rb'].each do |file|
4
+ require file
5
+ end
6
+
7
+ module Rlaunchpadlib
8
+ # Your code goes here...
9
+ end
@@ -0,0 +1,26 @@
1
+ require 'httparty'
2
+
3
+ module Rlaunchpadlib
4
+ class Client
5
+
6
+ include HTTParty
7
+
8
+ attr_accessor :base_uri
9
+ attr_accessor :api_version
10
+
11
+ def initialize()
12
+ @base_uri = "https://api.launchpad.net"
13
+ @api_version = "1.0"
14
+ end
15
+
16
+ def get(scope, operation="")
17
+ if operation.empty?
18
+ result = self.class.get "#{@base_uri}/#{@api_version}/#{scope}"
19
+ result.to_hash()
20
+ else
21
+ result = self.class.get "#{@base_uri}/#{@api_version}/#{scope}/?ws.op=#{operation}"
22
+ result.to_hash()
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,96 @@
1
+ require 'httparty'
2
+
3
+
4
+ module Rlaunchpadlib
5
+
6
+ ##
7
+ # Wraps the Person object in Launchpad
8
+ #
9
+ # https://launchpad.net/+apidoc/1.0.html#person
10
+ #
11
+ # Provides READ ONLY access
12
+ class Person
13
+
14
+ attr_accessor :username
15
+ attr_accessor :profile_data
16
+ attr_accessor :archive_subscriptions_data
17
+ attr_accessor :branches_data
18
+ attr_accessor :bug_subscribers_data
19
+ attr_accessor :merge_proposals_data
20
+ attr_accessor :requested_reviews_data
21
+ attr_accessor :bugs_data
22
+
23
+ def initialize(username)
24
+ @client = Rlaunchpadlib::Client.new
25
+ @username = "~#{username}"
26
+ end
27
+
28
+ def profile
29
+ if @profile_data.nil?
30
+ @profile_data = @client.get(@username)
31
+ end
32
+ @profile_data
33
+ end
34
+
35
+ def archive_subscriptions
36
+ if @archive_subscriptions_data.nil?
37
+ @archive_subscriptions_data = @client.get(@username, 'getArchiveSubscriptionUrls')
38
+ end
39
+ @archive_subscriptions_data
40
+ end
41
+
42
+ def branches
43
+ if @branches_data.nil?
44
+ @branches_data = @client.get(@username, 'getBranches')
45
+ end
46
+ @branches_data
47
+ end
48
+
49
+ def bug_subscriber_packages
50
+ if @bug_subscribers_data.nil?
51
+ @bug_subscribers_data = @client.get(@username, 'getBugSubscriberPackages')
52
+ end
53
+ @bug_subscribers_data
54
+ end
55
+
56
+ def merge_proposals
57
+ if @merge_proposals_data.nil?
58
+ @merge_proposals_data = @client.get(@username, 'getMergeProposals')
59
+ end
60
+ @merge_proposals_data
61
+ end
62
+
63
+ def requested_reviews
64
+ if @requested_reviews_data.nil?
65
+ @requested_reviews_data = @client.get(@username, 'getRequestedReviews')
66
+ end
67
+ @requested_reviews_data
68
+ end
69
+
70
+ def bugs
71
+ if @bugs_data.nil?
72
+ @bugs_data = @client.get(@username, 'searchTasks')
73
+ end
74
+ @bugs_data
75
+ end
76
+
77
+ def clear_cache
78
+ @profile_data = nil
79
+ @archive_subscriptions_data = nil
80
+ @branches_data = nil
81
+ @bug_subscribers_data = nil
82
+ @merge_proposals_data = nil
83
+ @requested_reviews_data = nil
84
+ @bugs_data = nil
85
+ end
86
+
87
+
88
+ # I'm nuts so lets patch method missing for easy acces to
89
+ # profile data.
90
+ def method_missing(name, *args, &block)
91
+ profile.has_key?(name.to_s) ? profile[name.to_s] : super
92
+ end
93
+
94
+
95
+ end
96
+ end
@@ -0,0 +1,81 @@
1
+ module Rlaunchpadlib
2
+ class Project
3
+
4
+ attr_accessor :project
5
+ attr_accessor :overview_data
6
+
7
+ attr_accessor :bug_data
8
+ attr_accessor :branch_data
9
+ attr_accessor :merge_proposal_data
10
+ attr_accessor :subscription_data
11
+ attr_accessor :timeline_data
12
+
13
+ def initialize(project)
14
+ @project = project
15
+ @client = Rlaunchpadlib::Client.new
16
+ end
17
+
18
+ def overview
19
+ if @overview_data.nil?
20
+ @client.get(@project)
21
+ else
22
+ @overview_data
23
+ end
24
+ end
25
+
26
+
27
+ def bugs
28
+ if @bug_data.nil?
29
+ @bug_data = @client.get(@project, 'searchTasks')
30
+ end
31
+ @bug_data
32
+ end
33
+
34
+
35
+ def branches
36
+ if @branch_data.nil?
37
+ @branch_data = @client.get(@project, 'getBranches')
38
+ end
39
+ @branch_data
40
+ end
41
+
42
+
43
+ def merge_proposals
44
+ if @merge_proposal_data.nil?
45
+ @merge_proposal_data = @client.get(@project, 'getMergeProposals')
46
+ end
47
+ @merge_proposal_data
48
+ end
49
+
50
+ def subscriptions
51
+ if @subscription_data.nil?
52
+ @subscription_data = @client.get(@project, 'getSubscriptions')
53
+ end
54
+ @subscription_data
55
+ end
56
+
57
+ def timeline
58
+ if @timeline_data.nil?
59
+ @timeline_data = @client.get(@project, 'get_timeline')
60
+ end
61
+ @timeline_data
62
+ end
63
+
64
+
65
+ def clear_cache
66
+ @overview_data = nil
67
+ @subscription_data = nil
68
+ @branch_data = nil
69
+ @merge_proposal_data = nil
70
+ @bug_data = nil
71
+ @timeline_data = nil
72
+ end
73
+
74
+
75
+
76
+ # I'm nuts so lets patch method missing.
77
+ def method_missing(name, *args, &block)
78
+ overview.has_key?(name.to_s) ? overview[name.to_s] : super
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,43 @@
1
+ require 'httparty'
2
+
3
+ module Rlaunchpadlib
4
+ class ProjectGroup
5
+
6
+ include HTTParty
7
+
8
+ attr_accessor :group
9
+ attr_accessor :overview_data
10
+
11
+ def initialize(group)
12
+ @group = group
13
+ @client = Rlaunchpadlib::Client.new
14
+ end
15
+
16
+ def overview
17
+ if @overview_data.nil?
18
+ @client.get(@group)
19
+ else
20
+ @overview_data
21
+ end
22
+ end
23
+
24
+ def bugs
25
+ @client.get(@group, 'searchTasks')
26
+ end
27
+
28
+ def merge_proposals
29
+ @client.get(@group, 'getMergeProposals')
30
+ end
31
+
32
+ def branches
33
+ @client.get(@group, 'getBranches')
34
+ end
35
+
36
+ # I'm nuts so lets patch method missing.
37
+ def method_missing(name, *args, &block)
38
+ overview.has_key?(name.to_s) ? overview[name.to_s] : super
39
+ end
40
+
41
+
42
+ end
43
+ end
@@ -0,0 +1,3 @@
1
+ module Rlaunchpadlib
2
+ VERSION = "0.0.1"
3
+ end
@@ -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 'rlaunchpadlib/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rlaunchpadlib"
8
+ spec.version = Rlaunchpadlib::VERSION
9
+ spec.authors = ["Charles Butler"]
10
+ spec.email = ["chuck@dasroot.net"]
11
+ spec.summary = %q{Canonical Launchpad API wrapper}
12
+ spec.description = %q{Canonical Launchpad API wrapper - a best-guess launchpadlib port}
13
+ spec.homepage = "http://github.com/chuckbutler/rlaunchpadlib"
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_development_dependency "bundler", "~> 1.6"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "webmock"
25
+ spec.add_development_dependency "vcr"
26
+ spec.add_development_dependency "coveralls"
27
+ spec.add_dependency "httparty"
28
+ end
@@ -0,0 +1,376 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.launchpad.net/1.0/~~lazypower/?ws.op=getTasks
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 404
13
+ message: Not Found
14
+ headers:
15
+ Date:
16
+ - Sun, 18 May 2014 18:32:59 GMT
17
+ Server:
18
+ - zope.server.http (HTTP)
19
+ X-Powered-By:
20
+ - Zope (www.zope.org), Python (www.python.org)
21
+ Content-Length:
22
+ - '88'
23
+ Content-Type:
24
+ - text/plain
25
+ X-Cache:
26
+ - MISS from nutmeg.canonical.com
27
+ X-Cache-Lookup:
28
+ - MISS from nutmeg.canonical.com:3128
29
+ Via:
30
+ - 1.0 nutmeg.canonical.com:3128 (squid/2.7.STABLE7)
31
+ Vary:
32
+ - Accept-Encoding
33
+ body:
34
+ encoding: UTF-8
35
+ string: 'Object: <lp.systemhomes.WebServiceApplication object at 0x8eb3990>,
36
+ name: u''~~lazypower'''
37
+ http_version:
38
+ recorded_at: Sun, 18 May 2014 18:33:02 GMT
39
+ - request:
40
+ method: get
41
+ uri: https://api.launchpad.net/1.0/~charms/?ws.op=getTasks
42
+ body:
43
+ encoding: US-ASCII
44
+ string: ''
45
+ headers: {}
46
+ response:
47
+ status:
48
+ code: 400
49
+ message: Bad Request
50
+ headers:
51
+ Date:
52
+ - Sun, 18 May 2014 18:33:50 GMT
53
+ Server:
54
+ - zope.server.http (HTTP)
55
+ X-Powered-By:
56
+ - Zope (www.zope.org), Python (www.python.org)
57
+ Content-Length:
58
+ - '27'
59
+ X-Xss-Protection:
60
+ - 1; mode=block
61
+ X-Content-Type-Options:
62
+ - nosniff
63
+ Strict-Transport-Security:
64
+ - max-age=15552000
65
+ Vary:
66
+ - Accept,Accept-Encoding
67
+ X-Content-Type-Warning:
68
+ - guessed from content
69
+ X-Frame-Options:
70
+ - SAMEORIGIN
71
+ X-Lazr-Notifications:
72
+ - "[]"
73
+ Content-Type:
74
+ - text/plain;charset=utf-8
75
+ X-Cache:
76
+ - MISS from nutmeg.canonical.com
77
+ X-Cache-Lookup:
78
+ - MISS from nutmeg.canonical.com:3128
79
+ Via:
80
+ - 1.0 nutmeg.canonical.com:3128 (squid/2.7.STABLE7)
81
+ Connection:
82
+ - close
83
+ body:
84
+ encoding: UTF-8
85
+ string: 'No such operation: getTasks'
86
+ http_version:
87
+ recorded_at: Sun, 18 May 2014 18:33:53 GMT
88
+ - request:
89
+ method: get
90
+ uri: https://api.launchpad.net/1.0/~~lazypower/?ws.op=
91
+ body:
92
+ encoding: US-ASCII
93
+ string: ''
94
+ headers: {}
95
+ response:
96
+ status:
97
+ code: 404
98
+ message: Not Found
99
+ headers:
100
+ Date:
101
+ - Sun, 18 May 2014 18:36:29 GMT
102
+ Server:
103
+ - zope.server.http (HTTP)
104
+ X-Powered-By:
105
+ - Zope (www.zope.org), Python (www.python.org)
106
+ Content-Length:
107
+ - '88'
108
+ Content-Type:
109
+ - text/plain
110
+ X-Cache:
111
+ - MISS from nutmeg.canonical.com
112
+ X-Cache-Lookup:
113
+ - MISS from nutmeg.canonical.com:3128
114
+ Via:
115
+ - 1.0 nutmeg.canonical.com:3128 (squid/2.7.STABLE7)
116
+ Vary:
117
+ - Accept-Encoding
118
+ body:
119
+ encoding: UTF-8
120
+ string: 'Object: <lp.systemhomes.WebServiceApplication object at 0x8699550>,
121
+ name: u''~~lazypower'''
122
+ http_version:
123
+ recorded_at: Sun, 18 May 2014 18:36:32 GMT
124
+ - request:
125
+ method: get
126
+ uri: https://api.launchpad.net/1.0/~lazypower/?ws.op=
127
+ body:
128
+ encoding: US-ASCII
129
+ string: ''
130
+ headers: {}
131
+ response:
132
+ status:
133
+ code: 400
134
+ message: Bad Request
135
+ headers:
136
+ Date:
137
+ - Sun, 18 May 2014 18:36:48 GMT
138
+ Server:
139
+ - zope.server.http (HTTP)
140
+ X-Powered-By:
141
+ - Zope (www.zope.org), Python (www.python.org)
142
+ Content-Length:
143
+ - '19'
144
+ X-Xss-Protection:
145
+ - 1; mode=block
146
+ X-Content-Type-Options:
147
+ - nosniff
148
+ Strict-Transport-Security:
149
+ - max-age=15552000
150
+ Vary:
151
+ - Accept,Accept-Encoding
152
+ X-Content-Type-Warning:
153
+ - guessed from content
154
+ X-Frame-Options:
155
+ - SAMEORIGIN
156
+ X-Lazr-Notifications:
157
+ - "[]"
158
+ Content-Type:
159
+ - text/plain;charset=utf-8
160
+ X-Cache:
161
+ - MISS from banana.canonical.com
162
+ X-Cache-Lookup:
163
+ - MISS from banana.canonical.com:3128
164
+ Via:
165
+ - 1.0 banana.canonical.com:3128 (squid/2.7.STABLE7)
166
+ Connection:
167
+ - close
168
+ body:
169
+ encoding: UTF-8
170
+ string: 'No such operation: '
171
+ http_version:
172
+ recorded_at: Sun, 18 May 2014 18:36:51 GMT
173
+ - request:
174
+ method: get
175
+ uri: https://api.launchpad.net/1.0/charms/?ws.op=getTasks
176
+ body:
177
+ encoding: US-ASCII
178
+ string: ''
179
+ headers: {}
180
+ response:
181
+ status:
182
+ code: 400
183
+ message: Bad Request
184
+ headers:
185
+ Date:
186
+ - Sun, 18 May 2014 18:38:40 GMT
187
+ Server:
188
+ - zope.server.http (HTTP)
189
+ X-Powered-By:
190
+ - Zope (www.zope.org), Python (www.python.org)
191
+ Content-Length:
192
+ - '27'
193
+ X-Xss-Protection:
194
+ - 1; mode=block
195
+ X-Content-Type-Options:
196
+ - nosniff
197
+ Strict-Transport-Security:
198
+ - max-age=15552000
199
+ Vary:
200
+ - Accept,Accept-Encoding
201
+ X-Content-Type-Warning:
202
+ - guessed from content
203
+ X-Frame-Options:
204
+ - SAMEORIGIN
205
+ X-Lazr-Notifications:
206
+ - "[]"
207
+ Content-Type:
208
+ - text/plain;charset=utf-8
209
+ X-Cache:
210
+ - MISS from nutmeg.canonical.com
211
+ X-Cache-Lookup:
212
+ - MISS from nutmeg.canonical.com:3128
213
+ Via:
214
+ - 1.0 nutmeg.canonical.com:3128 (squid/2.7.STABLE7)
215
+ Connection:
216
+ - close
217
+ body:
218
+ encoding: UTF-8
219
+ string: 'No such operation: getTasks'
220
+ http_version:
221
+ recorded_at: Sun, 18 May 2014 18:38:43 GMT
222
+ - request:
223
+ method: get
224
+ uri: https://api.launchpad.net/1.0/~lazypower
225
+ body:
226
+ encoding: US-ASCII
227
+ string: ''
228
+ headers: {}
229
+ response:
230
+ status:
231
+ code: 200
232
+ message: OK
233
+ headers:
234
+ Date:
235
+ - Sun, 18 May 2014 18:39:03 GMT
236
+ Server:
237
+ - zope.server.http (HTTP)
238
+ X-Powered-By:
239
+ - Zope (www.zope.org), Python (www.python.org)
240
+ Content-Length:
241
+ - '2967'
242
+ X-Xss-Protection:
243
+ - 1; mode=block
244
+ X-Content-Type-Options:
245
+ - nosniff
246
+ Strict-Transport-Security:
247
+ - max-age=15552000
248
+ Vary:
249
+ - Accept,Accept-Encoding
250
+ Etag:
251
+ - '"3f72e908a081233e9ed809f22c860d31bd2f271e-12ab4981c04718d975c823468e3eb895c38938c5"'
252
+ X-Frame-Options:
253
+ - SAMEORIGIN
254
+ X-Lazr-Notifications:
255
+ - "[]"
256
+ Content-Type:
257
+ - application/json
258
+ X-Cache:
259
+ - MISS from banana.canonical.com
260
+ X-Cache-Lookup:
261
+ - HIT from banana.canonical.com:3128
262
+ Via:
263
+ - 1.0 banana.canonical.com:3128 (squid/2.7.STABLE7)
264
+ body:
265
+ encoding: UTF-8
266
+ string: '{"languages_collection_link": "https://api.launchpad.net/1.0/~lazypower/languages",
267
+ "members_collection_link": "https://api.launchpad.net/1.0/~lazypower/members",
268
+ "sub_teams_collection_link": "https://api.launchpad.net/1.0/~lazypower/sub_teams",
269
+ "open_membership_invitations_collection_link": "https://api.launchpad.net/1.0/~lazypower/open_membership_invitations",
270
+ "ppas_collection_link": "https://api.launchpad.net/1.0/~lazypower/ppas", "private":
271
+ false, "time_zone": null, "proposed_members_collection_link": "https://api.launchpad.net/1.0/~lazypower/proposed_members",
272
+ "memberships_details_collection_link": "https://api.launchpad.net/1.0/~lazypower/memberships_details",
273
+ "is_probationary": false, "description": "", "mugshot_link": "https://api.launchpad.net/1.0/~lazypower/mugshot",
274
+ "invited_members_collection_link": "https://api.launchpad.net/1.0/~lazypower/invited_members",
275
+ "gpg_keys_collection_link": "https://api.launchpad.net/1.0/~lazypower/gpg_keys",
276
+ "archive_link": null, "deactivated_members_collection_link": "https://api.launchpad.net/1.0/~lazypower/deactivated_members",
277
+ "irc_nicknames_collection_link": "https://api.launchpad.net/1.0/~lazypower/irc_nicknames",
278
+ "http_etag": "\"3f72e908a081233e9ed809f22c860d31bd2f271e-12ab4981c04718d975c823468e3eb895c38938c5\"",
279
+ "is_valid": true, "self_link": "https://api.launchpad.net/1.0/~lazypower",
280
+ "confirmed_email_addresses_collection_link": "https://api.launchpad.net/1.0/~lazypower/confirmed_email_addresses",
281
+ "mailing_list_auto_subscribe_policy": "Ask me when I join a team", "team_owner_link":
282
+ null, "members_details_collection_link": "https://api.launchpad.net/1.0/~lazypower/members_details",
283
+ "hide_email_addresses": false, "admins_collection_link": "https://api.launchpad.net/1.0/~lazypower/admins",
284
+ "visibility": "Public", "recipes_collection_link": "https://api.launchpad.net/1.0/~lazypower/recipes",
285
+ "latitude": null, "date_created": "2012-04-10T01:17:40.224793+00:00", "preferred_email_address_link":
286
+ "tag:launchpad.net:2008:redacted", "is_ubuntu_coc_signer": true, "display_name":
287
+ "Charles Butler", "expired_members_collection_link": "https://api.launchpad.net/1.0/~lazypower/expired_members",
288
+ "sshkeys_collection_link": "https://api.launchpad.net/1.0/~lazypower/sshkeys",
289
+ "name": "lazypower", "resource_type_link": "https://api.launchpad.net/1.0/#person",
290
+ "super_teams_collection_link": "https://api.launchpad.net/1.0/~lazypower/super_teams",
291
+ "participants_collection_link": "https://api.launchpad.net/1.0/~lazypower/participants",
292
+ "web_link": "https://launchpad.net/~lazypower", "longitude": null, "hardware_submissions_collection_link":
293
+ "https://api.launchpad.net/1.0/~lazypower/hardware_submissions", "logo_link":
294
+ "https://api.launchpad.net/1.0/~lazypower/logo", "is_team": false, "karma":
295
+ 1888, "wiki_names_collection_link": "https://api.launchpad.net/1.0/~lazypower/wiki_names",
296
+ "homepage_content": null, "jabber_ids_collection_link": "https://api.launchpad.net/1.0/~lazypower/jabber_ids"}'
297
+ http_version:
298
+ recorded_at: Sun, 18 May 2014 18:39:06 GMT
299
+ - request:
300
+ method: get
301
+ uri: https://api.launchpad.net/1.0/~lazypower/
302
+ body:
303
+ encoding: US-ASCII
304
+ string: ''
305
+ headers: {}
306
+ response:
307
+ status:
308
+ code: 200
309
+ message: OK
310
+ headers:
311
+ Date:
312
+ - Sun, 18 May 2014 18:40:07 GMT
313
+ Server:
314
+ - zope.server.http (HTTP)
315
+ X-Powered-By:
316
+ - Zope (www.zope.org), Python (www.python.org)
317
+ Content-Length:
318
+ - '2967'
319
+ X-Xss-Protection:
320
+ - 1; mode=block
321
+ X-Content-Type-Options:
322
+ - nosniff
323
+ Strict-Transport-Security:
324
+ - max-age=15552000
325
+ Vary:
326
+ - Accept,Accept-Encoding
327
+ Etag:
328
+ - '"3f72e908a081233e9ed809f22c860d31bd2f271e-12ab4981c04718d975c823468e3eb895c38938c5"'
329
+ X-Frame-Options:
330
+ - SAMEORIGIN
331
+ X-Lazr-Notifications:
332
+ - "[]"
333
+ Content-Type:
334
+ - application/json
335
+ X-Cache:
336
+ - MISS from banana.canonical.com
337
+ X-Cache-Lookup:
338
+ - MISS from banana.canonical.com:3128
339
+ Via:
340
+ - 1.0 banana.canonical.com:3128 (squid/2.7.STABLE7)
341
+ body:
342
+ encoding: UTF-8
343
+ string: '{"languages_collection_link": "https://api.launchpad.net/1.0/~lazypower/languages",
344
+ "members_collection_link": "https://api.launchpad.net/1.0/~lazypower/members",
345
+ "sub_teams_collection_link": "https://api.launchpad.net/1.0/~lazypower/sub_teams",
346
+ "open_membership_invitations_collection_link": "https://api.launchpad.net/1.0/~lazypower/open_membership_invitations",
347
+ "ppas_collection_link": "https://api.launchpad.net/1.0/~lazypower/ppas", "private":
348
+ false, "time_zone": null, "proposed_members_collection_link": "https://api.launchpad.net/1.0/~lazypower/proposed_members",
349
+ "memberships_details_collection_link": "https://api.launchpad.net/1.0/~lazypower/memberships_details",
350
+ "is_probationary": false, "description": "", "mugshot_link": "https://api.launchpad.net/1.0/~lazypower/mugshot",
351
+ "invited_members_collection_link": "https://api.launchpad.net/1.0/~lazypower/invited_members",
352
+ "gpg_keys_collection_link": "https://api.launchpad.net/1.0/~lazypower/gpg_keys",
353
+ "archive_link": null, "deactivated_members_collection_link": "https://api.launchpad.net/1.0/~lazypower/deactivated_members",
354
+ "irc_nicknames_collection_link": "https://api.launchpad.net/1.0/~lazypower/irc_nicknames",
355
+ "http_etag": "\"3f72e908a081233e9ed809f22c860d31bd2f271e-12ab4981c04718d975c823468e3eb895c38938c5\"",
356
+ "is_valid": true, "self_link": "https://api.launchpad.net/1.0/~lazypower",
357
+ "confirmed_email_addresses_collection_link": "https://api.launchpad.net/1.0/~lazypower/confirmed_email_addresses",
358
+ "mailing_list_auto_subscribe_policy": "Ask me when I join a team", "team_owner_link":
359
+ null, "members_details_collection_link": "https://api.launchpad.net/1.0/~lazypower/members_details",
360
+ "hide_email_addresses": false, "admins_collection_link": "https://api.launchpad.net/1.0/~lazypower/admins",
361
+ "visibility": "Public", "recipes_collection_link": "https://api.launchpad.net/1.0/~lazypower/recipes",
362
+ "latitude": null, "date_created": "2012-04-10T01:17:40.224793+00:00", "preferred_email_address_link":
363
+ "tag:launchpad.net:2008:redacted", "is_ubuntu_coc_signer": true, "display_name":
364
+ "Charles Butler", "expired_members_collection_link": "https://api.launchpad.net/1.0/~lazypower/expired_members",
365
+ "sshkeys_collection_link": "https://api.launchpad.net/1.0/~lazypower/sshkeys",
366
+ "name": "lazypower", "resource_type_link": "https://api.launchpad.net/1.0/#person",
367
+ "super_teams_collection_link": "https://api.launchpad.net/1.0/~lazypower/super_teams",
368
+ "participants_collection_link": "https://api.launchpad.net/1.0/~lazypower/participants",
369
+ "web_link": "https://launchpad.net/~lazypower", "longitude": null, "hardware_submissions_collection_link":
370
+ "https://api.launchpad.net/1.0/~lazypower/hardware_submissions", "logo_link":
371
+ "https://api.launchpad.net/1.0/~lazypower/logo", "is_team": false, "karma":
372
+ 1888, "wiki_names_collection_link": "https://api.launchpad.net/1.0/~lazypower/wiki_names",
373
+ "homepage_content": null, "jabber_ids_collection_link": "https://api.launchpad.net/1.0/~lazypower/jabber_ids"}'
374
+ http_version:
375
+ recorded_at: Sun, 18 May 2014 18:40:10 GMT
376
+ recorded_with: VCR 2.9.0