collins_client 0.2.11 → 0.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 16ab54b81d038f140c59584b761713f4d771c21b
4
- data.tar.gz: 0c377aa52c3a063a6e08535372e9acfb14bddc4c
3
+ metadata.gz: 42f443869d38df5e776cc352fbd070a6c987b182
4
+ data.tar.gz: 2706390265c708a02a1d7f911fc8d370000fa842
5
5
  SHA512:
6
- metadata.gz: 2716ad0b825440c3a212850f9951cb5e67eef0950db86ab251cbbb2ad3c61610e050d6dcdd24a9b9e257ec3c12e2cddf44ce8e98738b1a7ca4150228b05f1c30
7
- data.tar.gz: 085a10106bd8c24202858a3bdbc0e0ab492313b56d87d54c07956301d8be3676054545a75f18a610dee4e33283ddb243c667956d8b051eae80f64b28fa9dafba
6
+ metadata.gz: 1c4a51bc5f16121738a5d89d69d8a5f77cc9a23563eb0159b87f82bf3d03ecd668a26417abde9ecc611979cc35b7faf9797bcb9a2e868fde95743e145bee1204
7
+ data.tar.gz: a236080e09f67961e04d842e73af11a8d20495ef5d2eb9707439cd42f0dd9f62e5937e1d48e4988e98f2506890599c7493d1ccdb99475ec1c16697e43ed7e48e
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source "https://rubygems.org"
2
2
 
3
3
  gem 'httparty', '~> 0.8.3'
4
4
 
data/Gemfile.lock CHANGED
@@ -1,5 +1,5 @@
1
1
  GEM
2
- remote: http://rubygems.org/
2
+ remote: https://rubygems.org/
3
3
  specs:
4
4
  addressable (2.3.2)
5
5
  crack (0.3.1)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.11
1
+ 0.2.15
@@ -8,10 +8,10 @@ Gem::Specification.new do |s|
8
8
  s.version = File.read 'VERSION'
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Blake Matheny", "Gabe Conradi"]
12
- s.date = "2014-08-08"
11
+ s.authors = ["Blake Matheny", "Gabe Conradi", "Will Richard"]
12
+ s.date = "2015-03-17"
13
13
  s.description = "Provides ruby support for interacting with the Collins API"
14
- s.email = ["bmatheny@tumblr.com","gabe@tumblr.com"]
14
+ s.email = ["accounts@tumblr.com","gabe@tumblr.com","will@tumblr.com"]
15
15
  s.extra_rdoc_files = [
16
16
  "README.md"
17
17
  ]
@@ -123,6 +123,40 @@ module Collins; module Api
123
123
  end
124
124
  end
125
125
 
126
+ # Count number of assets matching the specified criteria
127
+ #
128
+ # @param [Hash] options Query options (same as in the "find" method)
129
+ # @return integer The number of assets matching the query
130
+ # @raise [UnexpectedResponseError] If the HTTP response code is not a 200
131
+ def count options = {}
132
+ # create a copy so that we do not modify the original options array
133
+ options = options.dup
134
+
135
+ if options.include? :size or options.include? :page
136
+ raise ExpectationFailedError.new "Do not specify 'size' or 'page' options when counting assets"
137
+ else
138
+ options[:size] = 1
139
+ options[:page] = 0
140
+ end
141
+
142
+ query = asset_hash_to_find_query options
143
+ params = query.to_a.map do |param|
144
+ key, val = param
145
+ if val.is_a?(Array)
146
+ val.map{|v| "#{key}=#{asset_escape_attribute(v)}"}.join("&")
147
+ else
148
+ "#{key}=#{asset_escape_attribute(val)}"
149
+ end
150
+ end.reject{|s| s.empty?}
151
+
152
+ logger.debug("Counting assets using params #{params.inspect}")
153
+ http_get("/api/assets", params) do |response|
154
+ parse_response response, :expects => 200, :as => :data do |json|
155
+ json["Pagination"]["TotalResults"].to_i
156
+ end
157
+ end
158
+ end
159
+
126
160
  private
127
161
  def asset_escape_attribute value
128
162
  URI.escape(value.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
@@ -58,7 +58,7 @@ module Collins; module Api
58
58
  # @param [String,Collins::Asset] asset_or_tag
59
59
  # @param [String] message
60
60
  # @param [Severity] level severity level to use
61
- # @return [Boolean] true if logged successfully
61
+ # @return [OpenStruct] The log struct created
62
62
  # @raise [Collins::ExpectationFailed] the specified level was invalid
63
63
  # @raise [Collins::RequestError,Collins::UnexpectedResponseError] if the asset or message invalid
64
64
  def log! asset_or_tag, message, level = nil
@@ -70,7 +70,9 @@ module Collins; module Api
70
70
  parameters = select_non_empty_parameters parameters
71
71
  logger.debug("Logging to #{asset.tag} with parameters #{parameters.inspect}")
72
72
  http_put("/api/asset/#{asset.tag}/log", parameters, asset.location) do |response|
73
- parse_response response, :as => :status, :expects => 201
73
+ parse_response response, :as => :paginated, :expects => 201 do |json|
74
+ OpenStruct.new(symbolize_hash(json))
75
+ end
74
76
  end
75
77
  end
76
78
 
@@ -84,7 +86,7 @@ module Collins; module Api
84
86
  # @option options [Fixnum] :size (25) Number of results to retrieve
85
87
  # @option options [String] :sort (DESC) Sort ordering for results
86
88
  # @option options [String] :filter Semicolon separated list of severity levels to include or exclude
87
- # @option options [String] :all_tag If specified, an asset tag is this value, proxy to the all_logs method
89
+ # @option options [String] :all_tag If specified, and asset tag is set to :all_tag, proxy to the all_logs method
88
90
  # @note To exclude a level via a filter it must be prepended with a `!`
89
91
  # @return [Array<OpenStruct>] Array of log objects
90
92
  # @raise [Collins::UnexpectedResponseError] on a non-200 response
@@ -136,6 +138,19 @@ module Collins; module Api
136
138
  end
137
139
  end
138
140
 
141
+ # Get a log, given its id
142
+ # @param [Int] id The log id to retrieve
143
+ # @return [OpenStruct] The log openstruct
144
+ # @raise [Collins::UnexpectedResponseError] on a non-200 response
145
+ def get_log id
146
+ logger.debug("Fetching log #{id}")
147
+ http_get("/api/log/#{id}") do |response|
148
+ parse_response response, :as => :paginated, :default => nil, :raise => strict?, :expects => 200 do |json|
149
+ OpenStruct.new(symbolize_hash(json))
150
+ end
151
+ end
152
+ end
153
+
139
154
  private
140
155
  def log_level_from_string level
141
156
  return nil if (level.nil? || level.empty?)
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: collins_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.11
4
+ version: 0.2.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Matheny
8
8
  - Gabe Conradi
9
+ - Will Richard
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
13
 
13
- date: 2014-08-08 00:00:00 Z
14
+ date: 2015-03-17 00:00:00 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: httparty
@@ -24,8 +25,9 @@ dependencies:
24
25
  version_requirements: *id001
25
26
  description: Provides ruby support for interacting with the Collins API
26
27
  email:
27
- - bmatheny@tumblr.com
28
+ - accounts@tumblr.com
28
29
  - gabe@tumblr.com
30
+ - will@tumblr.com
29
31
  executables: []
30
32
 
31
33
  extensions: []
@@ -94,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
96
  requirements: []
95
97
 
96
98
  rubyforge_project:
97
- rubygems_version: 2.4.1
99
+ rubygems_version: 2.3.0
98
100
  signing_key:
99
101
  specification_version: 3
100
102
  summary: Client library for Collins API