bitbucket_rest_api 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/README.md +163 -0
  2. data/lib/bitbucket_rest_api/api/actions.rb +50 -0
  3. data/lib/bitbucket_rest_api/api.rb +121 -0
  4. data/lib/bitbucket_rest_api/api_factory.rb +30 -0
  5. data/lib/bitbucket_rest_api/authorization.rb +49 -0
  6. data/lib/bitbucket_rest_api/client.rb +52 -0
  7. data/lib/bitbucket_rest_api/compatibility.rb +23 -0
  8. data/lib/bitbucket_rest_api/configuration.rb +101 -0
  9. data/lib/bitbucket_rest_api/connection.rb +97 -0
  10. data/lib/bitbucket_rest_api/constants.rb +58 -0
  11. data/lib/bitbucket_rest_api/core_ext/array.rb +17 -0
  12. data/lib/bitbucket_rest_api/core_ext/hash.rb +56 -0
  13. data/lib/bitbucket_rest_api/core_ext/ordered_hash.rb +107 -0
  14. data/lib/bitbucket_rest_api/deprecation.rb +39 -0
  15. data/lib/bitbucket_rest_api/error/bad_request.rb +12 -0
  16. data/lib/bitbucket_rest_api/error/client_error.rb +20 -0
  17. data/lib/bitbucket_rest_api/error/forbidden.rb +12 -0
  18. data/lib/bitbucket_rest_api/error/internal_server_error.rb +12 -0
  19. data/lib/bitbucket_rest_api/error/invalid_options.rb +18 -0
  20. data/lib/bitbucket_rest_api/error/not_found.rb +12 -0
  21. data/lib/bitbucket_rest_api/error/required_params.rb +18 -0
  22. data/lib/bitbucket_rest_api/error/service_error.rb +19 -0
  23. data/lib/bitbucket_rest_api/error/service_unavailable.rb +12 -0
  24. data/lib/bitbucket_rest_api/error/unauthorized.rb +12 -0
  25. data/lib/bitbucket_rest_api/error/unknown_value.rb +18 -0
  26. data/lib/bitbucket_rest_api/error/unprocessable_entity.rb +12 -0
  27. data/lib/bitbucket_rest_api/error/validations.rb +18 -0
  28. data/lib/bitbucket_rest_api/error.rb +35 -0
  29. data/lib/bitbucket_rest_api/issues/comments.rb +118 -0
  30. data/lib/bitbucket_rest_api/issues/components.rb +106 -0
  31. data/lib/bitbucket_rest_api/issues/milestones.rb +107 -0
  32. data/lib/bitbucket_rest_api/issues.rb +201 -0
  33. data/lib/bitbucket_rest_api/normalizer.rb +27 -0
  34. data/lib/bitbucket_rest_api/parameter_filter.rb +32 -0
  35. data/lib/bitbucket_rest_api/repos/changesets.rb +54 -0
  36. data/lib/bitbucket_rest_api/repos/following.rb +39 -0
  37. data/lib/bitbucket_rest_api/repos/keys.rb +87 -0
  38. data/lib/bitbucket_rest_api/repos.rb +213 -0
  39. data/lib/bitbucket_rest_api/request/basic_auth.rb +31 -0
  40. data/lib/bitbucket_rest_api/request/jsonize.rb +46 -0
  41. data/lib/bitbucket_rest_api/request/oauth.rb +49 -0
  42. data/lib/bitbucket_rest_api/request.rb +67 -0
  43. data/lib/bitbucket_rest_api/response/helpers.rb +21 -0
  44. data/lib/bitbucket_rest_api/response/jsonize.rb +30 -0
  45. data/lib/bitbucket_rest_api/response/mashify.rb +24 -0
  46. data/lib/bitbucket_rest_api/response/raise_error.rb +31 -0
  47. data/lib/bitbucket_rest_api/response/xmlize.rb +26 -0
  48. data/lib/bitbucket_rest_api/response.rb +28 -0
  49. data/lib/bitbucket_rest_api/result.rb +140 -0
  50. data/lib/bitbucket_rest_api/utils/url.rb +56 -0
  51. data/lib/bitbucket_rest_api/validations/format.rb +24 -0
  52. data/lib/bitbucket_rest_api/validations/presence.rb +25 -0
  53. data/lib/bitbucket_rest_api/validations/required.rb +24 -0
  54. data/lib/bitbucket_rest_api/validations/token.rb +43 -0
  55. data/lib/bitbucket_rest_api/validations.rb +25 -0
  56. data/lib/bitbucket_rest_api/version.rb +11 -0
  57. data/lib/bitbucket_rest_api.rb +87 -0
  58. metadata +266 -0
@@ -0,0 +1,140 @@
1
+ # encoding: utf-8
2
+
3
+ module BitBucket
4
+ module Result
5
+ include BitBucket::Constants
6
+
7
+ # TODO Add result counts method to check total items looking at result links
8
+
9
+ def ratelimit_limit
10
+ loaded? ? @env[:response_headers][RATELIMIT_LIMIT] : nil
11
+ end
12
+
13
+ def ratelimit_remaining
14
+ loaded? ? @env[:response_headers][RATELIMIT_REMAINING] : nil
15
+ end
16
+
17
+ def cache_control
18
+ loaded? ? @env[:response_headers][CACHE_CONTROL] : nil
19
+ end
20
+
21
+ def content_type
22
+ loaded? ? @env[:response_headers][CONTENT_TYPE] : nil
23
+ end
24
+
25
+ def content_length
26
+ loaded? ? @env[:response_headers][CONTENT_LENGTH] : nil
27
+ end
28
+
29
+ def etag
30
+ loaded? ? @env[:response_headers][ETAG] : nil
31
+ end
32
+
33
+ def date
34
+ loaded? ? @env[:response_headers][DATE] : nil
35
+ end
36
+
37
+ def location
38
+ loaded? ? @env[:response_headers][LOCATION] : nil
39
+ end
40
+
41
+ def server
42
+ loaded? ? @env[:response_headers][SERVER] : nil
43
+ end
44
+
45
+ def status
46
+ loaded? ? @env[:status] : nil
47
+ end
48
+
49
+ def success?
50
+ (200..299).include? status
51
+ end
52
+
53
+ # Returns raw body
54
+ def body
55
+ loaded? ? @env[:body] : nil
56
+ end
57
+
58
+ def loaded?
59
+ !!@env
60
+ end
61
+
62
+ # Return page links
63
+ def links
64
+ @@links = BitBucket::PageLinks.new(@env[:response_headers])
65
+ end
66
+
67
+ # Iterator like each for response pages. If there are no pages to
68
+ # iterate over this method will return nothing.
69
+ def each_page
70
+ yield self.body
71
+ while page_iterator.has_next?
72
+ yield next_page
73
+ end
74
+ end
75
+
76
+ # Retrives the result of the first page. Returns <tt>nil</tt> if there is
77
+ # no first page - either because you are already on the first page
78
+ # or there are no pages at all in the result.
79
+ def first_page
80
+ first_request = page_iterator.first
81
+ self.instance_eval { @env = first_request.env } if first_request
82
+ self.body
83
+ end
84
+
85
+ # Retrives the result of the next page. Returns <tt>nil</tt> if there is
86
+ # no next page or no pages at all.
87
+ def next_page
88
+ next_request = page_iterator.next
89
+ self.instance_eval { @env = next_request.env } if next_request
90
+ self.body
91
+ end
92
+
93
+ # Retrives the result of the previous page. Returns <tt>nil</tt> if there is
94
+ # no previous page or no pages at all.
95
+ def prev_page
96
+ prev_request = page_iterator.prev
97
+ self.instance_eval { @env = prev_request.env } if prev_request
98
+ self.body
99
+ end
100
+ alias :previous_page :prev_page
101
+
102
+ # Retrives the result of the last page. Returns <tt>nil</tt> if there is
103
+ # no last page - either because you are already on the last page,
104
+ # there is only one page or there are no pages at all in the result.
105
+ def last_page
106
+ last_request = page_iterator.last
107
+ self.instance_eval { @env = last_request.env } if last_request
108
+ self.body
109
+ end
110
+
111
+ # Retrives a specific result for a page given page number.
112
+ # The <tt>page_number</tt> parameter is not validate, hitting a page
113
+ # that does not exist will return BitBucket API error. Consequently, if
114
+ # there is only one page, this method returns nil
115
+ def page(page_number)
116
+ request = page_iterator.get_page(page_number)
117
+ self.instance_eval { @env = request.env } if request
118
+ self.body
119
+ end
120
+
121
+ # Returns <tt>true</tt> if there is another page in the result set,
122
+ # otherwise <tt>false</tt>
123
+ def has_next_page?
124
+ page_iterator.has_next?
125
+ end
126
+
127
+ # Repopulates objects for new values
128
+ def reset
129
+ nil
130
+ end
131
+
132
+ private
133
+
134
+ # Internally used page iterator
135
+ def page_iterator # :nodoc:
136
+ @@page_iterator = BitBucket::PageIterator.new(@env)
137
+ end
138
+
139
+ end # Result
140
+ end # BitBucket
@@ -0,0 +1,56 @@
1
+ require 'cgi'
2
+
3
+ module BitBucket
4
+ module Utils
5
+ module Url
6
+ extend self
7
+
8
+ DEFAULT_QUERY_SEP = /[&;] */n
9
+
10
+ KEY_VALUE_SEP = '='.freeze
11
+
12
+ def escape(s) CGI.escape s.to_s end
13
+
14
+ def unescape(s) CGI.unescape s.to_s end
15
+
16
+ def build_query(params)
17
+ params.map { |k, v|
18
+ if v.class == Array
19
+ build_query(v.map { |x| [k, x] })
20
+ else
21
+ v.nil? ? escape(k) : "#{escape(k)}=#{escape(v)}"
22
+ end
23
+ }.join("&")
24
+ end
25
+
26
+ def parse_query(query_string)
27
+ return '' if query_string.nil? || query_string.empty?
28
+ params = {}
29
+
30
+ query_string.split(DEFAULT_QUERY_SEP).each do |part|
31
+ k, v = part.split(KEY_VALUE_SEP, 2).map { |el| unescape(el) }
32
+
33
+ if cur = params[k]
34
+ if cur.class == Array
35
+ params[k] << v
36
+ else
37
+ params[k] = [cur, v]
38
+ end
39
+ else
40
+ params[k] = v
41
+ end
42
+ end
43
+ params
44
+ end
45
+
46
+ def parse_query_for_param(query_string, name)
47
+ parse_query(query_string).each do |key, val|
48
+ return val.first if (name == key) && val.is_a?(Array)
49
+ return val if (name == key)
50
+ end
51
+ return nil
52
+ end
53
+
54
+ end # Url
55
+ end # Utils
56
+ end # BitBucket
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+
3
+ module BitBucket
4
+ module Validations
5
+ module Format
6
+
7
+ # Ensures that value for a given key is of the correct form whether
8
+ # matching regular expression or set of predefined values.
9
+ #
10
+ def assert_valid_values(permitted, params)
11
+ params.each do |k, v|
12
+ next unless permitted.keys.include?(k)
13
+ if permitted[k].is_a?(Array) && !permitted[k].include?(params[k])
14
+ raise BitBucket::Error::UnknownValue.new(k,v, permitted[k].join(', '))
15
+
16
+ elsif permitted[k].is_a?(Regexp) && !(permitted[k] =~ params[k])
17
+ raise BitBucket::Error::UnknownValue.new(k,v, permitted[k])
18
+ end
19
+ end
20
+ end
21
+
22
+ end # Format
23
+ end # Validations
24
+ end # BitBucket
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+
3
+ module BitBucket
4
+ module Validations
5
+ module Presence
6
+
7
+ # Ensures that essential arguments are present before request is made
8
+ #
9
+ def _validate_presence_of(*params)
10
+ params.each do |param|
11
+ raise ArgumentError, "parameter cannot be nil" if param.nil?
12
+ end
13
+ end
14
+
15
+
16
+ # Check if user or repository parameters are passed
17
+ #
18
+ def _validate_user_repo_params(user_name, repo_name)
19
+ raise ArgumentError, "[user] parameter cannot be nil" if user_name.nil?
20
+ raise ArgumentError, "[repo] parameter cannot be nil" if repo_name.nil?
21
+ end
22
+
23
+ end # Presence
24
+ end # Validations
25
+ end # BitBucket
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+
3
+ module BitBucket
4
+ module Validations
5
+ module Required
6
+
7
+ # Validate all keys present in a provided hash against required set,
8
+ # on mismatch raise BitBucket::Error::RequiredParams
9
+ # Note that keys need to be in the same format i.e. symbols or strings,
10
+ # otherwise the comparison will fail.
11
+ #
12
+ def assert_required_keys(required, provided)
13
+ result = required.all? do |key|
14
+ provided.has_deep_key? key
15
+ end
16
+ if !result
17
+ raise BitBucket::Error::RequiredParams.new(provided, required)
18
+ end
19
+ result
20
+ end
21
+
22
+ end # Required
23
+ end # Validations
24
+ end # BitBucket
@@ -0,0 +1,43 @@
1
+ # encoding: utf-8
2
+
3
+ # TODO: Set token required calls
4
+
5
+ module BitBucket
6
+ module Validations
7
+ module Token
8
+
9
+ TOKEN_REQUIRED = [
10
+ 'get /user',
11
+ 'get /user/emails',
12
+ 'get /user/followers',
13
+ 'get /user/following',
14
+ 'get /user/keys',
15
+ 'get /user/repos',
16
+ 'patch /user',
17
+ 'post /user/emails',
18
+ 'post /user/keys',
19
+ 'post /user/repos'
20
+ ]
21
+
22
+ TOKEN_REQUIRED_REGEXP = [
23
+ /repos\/.*\/.*\/comments/,
24
+ ]
25
+
26
+ # Ensures that required authentication token is present before
27
+ # request is sent.
28
+ #
29
+ def validates_token_for(method, path)
30
+ return true unless TOKEN_REQUIRED.grep("#{method} #{path}").empty?
31
+
32
+ token_required = false
33
+ TOKEN_REQUIRED_REGEXP.each do |regex|
34
+ if "#{method} #{path}" =~ regex
35
+ token_required = true
36
+ end
37
+ end
38
+ return token_required
39
+ end
40
+
41
+ end # Token
42
+ end # Validations
43
+ end # BitBucket
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+
3
+ module BitBucket
4
+ module Validations
5
+ extend AutoloadHelper
6
+
7
+ autoload_all 'bitbucket_rest_api/validations',
8
+ :Presence => 'presence',
9
+ :Token => 'token',
10
+ :Format => 'format',
11
+ :Required => 'required'
12
+
13
+ include Presence
14
+ include Format
15
+ include Token
16
+ include Required
17
+
18
+ VALID_API_KEYS = [
19
+ 'page',
20
+ 'per_page',
21
+ 'jsonp_callback'
22
+ ]
23
+
24
+ end # Validation
25
+ end # BitBucket
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+
3
+ module BitBucket
4
+ module VERSION
5
+ MAJOR = 0
6
+ MINOR = 1
7
+ PATCH = 0
8
+
9
+ STRING = [MAJOR, MINOR, PATCH].compact.join('.')
10
+ end
11
+ end # BitBucket
@@ -0,0 +1,87 @@
1
+ # encoding: utf-8
2
+
3
+ require 'bitbucket_rest_api/version'
4
+ require 'bitbucket_rest_api/configuration'
5
+ require 'bitbucket_rest_api/constants'
6
+ require 'bitbucket_rest_api/utils/url'
7
+ require 'bitbucket_rest_api/connection'
8
+ require 'bitbucket_rest_api/deprecation'
9
+ require 'bitbucket_rest_api/core_ext/ordered_hash'
10
+
11
+ module BitBucket
12
+ extend Configuration
13
+
14
+ class << self
15
+
16
+ # Handle for the client instance
17
+ attr_accessor :api_client
18
+
19
+ # Alias for BitBucket::Client.new
20
+ #
21
+ # @return [BitBucket::Client]
22
+ def new(options = { }, &block)
23
+ @api_client = BitBucket::Client.new(options, &block)
24
+ end
25
+
26
+ # Delegate to BitBucket::Client
27
+ #
28
+ def method_missing(method, *args, &block)
29
+ return super unless new.respond_to?(method)
30
+ new.send(method, *args, &block)
31
+ end
32
+
33
+ def respond_to?(method, include_private = false)
34
+ new.respond_to?(method, include_private) || super(method, include_private)
35
+ end
36
+
37
+ end
38
+
39
+ module AutoloadHelper
40
+
41
+ def autoload_all(prefix, options)
42
+ options.each do |const_name, path|
43
+ autoload const_name, File.join(prefix, path)
44
+ end
45
+ end
46
+
47
+ def register_constant(options)
48
+ options.each do |const_name, value|
49
+ const_set const_name.upcase.to_s, value
50
+ end
51
+ end
52
+
53
+ def lookup_constant(const_name)
54
+ const_get const_name.upcase.to_s
55
+ end
56
+
57
+ end
58
+
59
+ extend AutoloadHelper
60
+
61
+ autoload_all 'bitbucket_rest_api',
62
+ :API => 'api',
63
+ :ApiFactory => 'api_factory',
64
+ :Authorization => 'authorization',
65
+ :Authorizations => 'authorizations',
66
+ :Validations => 'validations',
67
+ :ParameterFilter => 'parameter_filter',
68
+ :Normalizer => 'normalizer',
69
+ :Client => 'client',
70
+ :CoreExt => 'core_ext',
71
+ :Request => 'request',
72
+ :Response => 'response',
73
+ :Result => 'result',
74
+
75
+ :Repos => 'repos',
76
+ #:Error => 'error',
77
+ :Issues => 'issues'
78
+ #:Teams => 'teams',
79
+ #:PullRequests => 'pull_requests',
80
+ #:Users => 'users',
81
+ #:Events => 'events',
82
+ #:Search => 'search',
83
+ #:PageLinks => 'page_links',
84
+ #:PageIterator => 'page_iterator',
85
+ #:PagedRequest => 'paged_request'
86
+
87
+ end # BitBucket
metadata ADDED
@@ -0,0 +1,266 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bitbucket_rest_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Mike Cochran
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-31 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: hashie
16
+ requirement: &70165761556820 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.2.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70165761556820
25
+ - !ruby/object:Gem::Dependency
26
+ name: faraday
27
+ requirement: &70165761555840 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 0.8.1
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70165761555840
36
+ - !ruby/object:Gem::Dependency
37
+ name: multi_json
38
+ requirement: &70165761554920 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '1.3'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70165761554920
47
+ - !ruby/object:Gem::Dependency
48
+ name: oauth
49
+ requirement: &70165761554180 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70165761554180
58
+ - !ruby/object:Gem::Dependency
59
+ name: nokogiri
60
+ requirement: &70165761552500 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: 1.5.2
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *70165761552500
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: &70165761551240 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70165761551240
80
+ - !ruby/object:Gem::Dependency
81
+ name: cucumber
82
+ requirement: &70165761550100 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *70165761550100
91
+ - !ruby/object:Gem::Dependency
92
+ name: webmock
93
+ requirement: &70165761548520 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ version: 1.8.0
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *70165761548520
102
+ - !ruby/object:Gem::Dependency
103
+ name: vcr
104
+ requirement: &70165761546980 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 2.2.0
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70165761546980
113
+ - !ruby/object:Gem::Dependency
114
+ name: simplecov
115
+ requirement: &70165761545860 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ version: 0.6.1
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *70165761545860
124
+ - !ruby/object:Gem::Dependency
125
+ name: guard
126
+ requirement: &70165761545080 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: *70165761545080
135
+ - !ruby/object:Gem::Dependency
136
+ name: guard-rspec
137
+ requirement: &70165761544020 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: *70165761544020
146
+ - !ruby/object:Gem::Dependency
147
+ name: guard-cucumber
148
+ requirement: &70165761543080 !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: *70165761543080
157
+ - !ruby/object:Gem::Dependency
158
+ name: rake
159
+ requirement: &70165761542340 !ruby/object:Gem::Requirement
160
+ none: false
161
+ requirements:
162
+ - - ! '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ type: :development
166
+ prerelease: false
167
+ version_requirements: *70165761542340
168
+ - !ruby/object:Gem::Dependency
169
+ name: bundler
170
+ requirement: &70165761541400 !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ! '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: *70165761541400
179
+ description: ! ' Ruby wrapper for the BitBucket API '
180
+ email: mcochran@linux.com
181
+ executables: []
182
+ extensions: []
183
+ extra_rdoc_files: []
184
+ files:
185
+ - lib/bitbucket_rest_api/api/actions.rb
186
+ - lib/bitbucket_rest_api/api.rb
187
+ - lib/bitbucket_rest_api/api_factory.rb
188
+ - lib/bitbucket_rest_api/authorization.rb
189
+ - lib/bitbucket_rest_api/client.rb
190
+ - lib/bitbucket_rest_api/compatibility.rb
191
+ - lib/bitbucket_rest_api/configuration.rb
192
+ - lib/bitbucket_rest_api/connection.rb
193
+ - lib/bitbucket_rest_api/constants.rb
194
+ - lib/bitbucket_rest_api/core_ext/array.rb
195
+ - lib/bitbucket_rest_api/core_ext/hash.rb
196
+ - lib/bitbucket_rest_api/core_ext/ordered_hash.rb
197
+ - lib/bitbucket_rest_api/deprecation.rb
198
+ - lib/bitbucket_rest_api/error/bad_request.rb
199
+ - lib/bitbucket_rest_api/error/client_error.rb
200
+ - lib/bitbucket_rest_api/error/forbidden.rb
201
+ - lib/bitbucket_rest_api/error/internal_server_error.rb
202
+ - lib/bitbucket_rest_api/error/invalid_options.rb
203
+ - lib/bitbucket_rest_api/error/not_found.rb
204
+ - lib/bitbucket_rest_api/error/required_params.rb
205
+ - lib/bitbucket_rest_api/error/service_error.rb
206
+ - lib/bitbucket_rest_api/error/service_unavailable.rb
207
+ - lib/bitbucket_rest_api/error/unauthorized.rb
208
+ - lib/bitbucket_rest_api/error/unknown_value.rb
209
+ - lib/bitbucket_rest_api/error/unprocessable_entity.rb
210
+ - lib/bitbucket_rest_api/error/validations.rb
211
+ - lib/bitbucket_rest_api/error.rb
212
+ - lib/bitbucket_rest_api/issues/comments.rb
213
+ - lib/bitbucket_rest_api/issues/components.rb
214
+ - lib/bitbucket_rest_api/issues/milestones.rb
215
+ - lib/bitbucket_rest_api/issues.rb
216
+ - lib/bitbucket_rest_api/normalizer.rb
217
+ - lib/bitbucket_rest_api/parameter_filter.rb
218
+ - lib/bitbucket_rest_api/repos/changesets.rb
219
+ - lib/bitbucket_rest_api/repos/following.rb
220
+ - lib/bitbucket_rest_api/repos/keys.rb
221
+ - lib/bitbucket_rest_api/repos.rb
222
+ - lib/bitbucket_rest_api/request/basic_auth.rb
223
+ - lib/bitbucket_rest_api/request/jsonize.rb
224
+ - lib/bitbucket_rest_api/request/oauth.rb
225
+ - lib/bitbucket_rest_api/request.rb
226
+ - lib/bitbucket_rest_api/response/helpers.rb
227
+ - lib/bitbucket_rest_api/response/jsonize.rb
228
+ - lib/bitbucket_rest_api/response/mashify.rb
229
+ - lib/bitbucket_rest_api/response/raise_error.rb
230
+ - lib/bitbucket_rest_api/response/xmlize.rb
231
+ - lib/bitbucket_rest_api/response.rb
232
+ - lib/bitbucket_rest_api/result.rb
233
+ - lib/bitbucket_rest_api/utils/url.rb
234
+ - lib/bitbucket_rest_api/validations/format.rb
235
+ - lib/bitbucket_rest_api/validations/presence.rb
236
+ - lib/bitbucket_rest_api/validations/required.rb
237
+ - lib/bitbucket_rest_api/validations/token.rb
238
+ - lib/bitbucket_rest_api/validations.rb
239
+ - lib/bitbucket_rest_api/version.rb
240
+ - lib/bitbucket_rest_api.rb
241
+ - README.md
242
+ homepage: https://github.com/exceptionary/bitbucket
243
+ licenses: []
244
+ post_install_message:
245
+ rdoc_options: []
246
+ require_paths:
247
+ - lib
248
+ required_ruby_version: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ! '>='
252
+ - !ruby/object:Gem::Version
253
+ version: '0'
254
+ required_rubygems_version: !ruby/object:Gem::Requirement
255
+ none: false
256
+ requirements:
257
+ - - ! '>='
258
+ - !ruby/object:Gem::Version
259
+ version: '0'
260
+ requirements: []
261
+ rubyforge_project:
262
+ rubygems_version: 1.8.10
263
+ signing_key:
264
+ specification_version: 3
265
+ summary: Ruby wrapper for the BitBucket API
266
+ test_files: []