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