bitbucket_rest_api 0.1.0

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 (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: []