collins_client 0.2.10 → 0.2.11

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 16ab54b81d038f140c59584b761713f4d771c21b
4
+ data.tar.gz: 0c377aa52c3a063a6e08535372e9acfb14bddc4c
5
+ SHA512:
6
+ metadata.gz: 2716ad0b825440c3a212850f9951cb5e67eef0950db86ab251cbbb2ad3c61610e050d6dcdd24a9b9e257ec3c12e2cddf44ce8e98738b1a7ca4150228b05f1c30
7
+ data.tar.gz: 085a10106bd8c24202858a3bdbc0e0ab492313b56d87d54c07956301d8be3676054545a75f18a610dee4e33283ddb243c667956d8b051eae80f64b28fa9dafba
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.10
1
+ 0.2.11
@@ -5,18 +5,17 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "collins_client"
8
- s.version = "0.2.10"
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"]
12
- s.date = "2012-12-17"
11
+ s.authors = ["Blake Matheny", "Gabe Conradi"]
12
+ s.date = "2014-08-08"
13
13
  s.description = "Provides ruby support for interacting with the Collins API"
14
- s.email = "bmatheny@tumblr.com"
14
+ s.email = ["bmatheny@tumblr.com","gabe@tumblr.com"]
15
15
  s.extra_rdoc_files = [
16
16
  "README.md"
17
17
  ]
18
18
  s.files = [
19
- ".rbenv-version",
20
19
  "Gemfile",
21
20
  "Gemfile.lock",
22
21
  "README.md",
@@ -28,6 +27,7 @@ Gem::Specification.new do |s|
28
27
  "lib/collins/api/admin.rb",
29
28
  "lib/collins/api/asset.rb",
30
29
  "lib/collins/api/asset_state.rb",
30
+ "lib/collins/api/asset_type.rb",
31
31
  "lib/collins/api/attributes.rb",
32
32
  "lib/collins/api/ip_address.rb",
33
33
  "lib/collins/api/logging.rb",
@@ -41,6 +41,7 @@ Gem::Specification.new do |s|
41
41
  "lib/collins/asset.rb",
42
42
  "lib/collins/asset_client.rb",
43
43
  "lib/collins/asset_find.rb",
44
+ "lib/collins/asset_type.rb",
44
45
  "lib/collins/asset_update.rb",
45
46
  "lib/collins/client.rb",
46
47
  "lib/collins/errors.rb",
@@ -1,6 +1,7 @@
1
1
  require 'collins/api/admin'
2
2
  require 'collins/api/asset'
3
3
  require 'collins/api/asset_state'
4
+ require 'collins/api/asset_type'
4
5
  require 'collins/api/attributes'
5
6
  require 'collins/api/ip_address'
6
7
  require 'collins/api/logging'
@@ -104,6 +105,7 @@ module Collins
104
105
  include Collins::Api::Admin
105
106
  include Collins::Api::Asset
106
107
  include Collins::Api::AssetState
108
+ include Collins::Api::AssetType
107
109
  include Collins::Api::Attributes
108
110
  include Collins::Api::IpAddress
109
111
  include Collins::Api::Logging
@@ -12,16 +12,25 @@ module Collins; module Api
12
12
  :description => description,
13
13
  :status => status
14
14
  }
15
+
15
16
  if not ::Collins::Api::AssetState.state_test then
16
17
  parameters = select_non_empty_parameters parameters
17
18
  end
19
+
18
20
  logger.debug("Creating state with name #{name}")
19
21
  http_put("/api/state/#{name}", parameters) do |r|
20
22
  parse_response r, :expects => 201, :as => :status, :raise => strict?, :default => false
21
23
  end
22
24
  end
23
- def state_delete! name
24
- name = validate_state_name name
25
+
26
+ def state_delete! state
27
+ name = validate_state_name case state.class
28
+ when ::Collins::AssetState
29
+ state.name
30
+ else
31
+ state
32
+ end
33
+
25
34
  logger.debug("Deleting state with name #{name}")
26
35
  http_delete("/api/state/#{name}") do |r|
27
36
  parse_response r, :expects => 202, :as => :data, :raise => strict?, :default => 0 do |js|
@@ -29,8 +38,15 @@ module Collins; module Api
29
38
  end
30
39
  end
31
40
  end
32
- def state_update! name, options = {}
33
- name = validate_state_name name
41
+
42
+ def state_update! state, options = {}
43
+ name = validate_state_name case state.class
44
+ when ::Collins::AssetState
45
+ state.name
46
+ else
47
+ state
48
+ end
49
+
34
50
  parameters = {
35
51
  :label => options[:label],
36
52
  :description => options[:description],
@@ -45,6 +61,7 @@ module Collins; module Api
45
61
  parse_response r, :expects => 200, :as => :status, :raise => strict?, :default => false
46
62
  end
47
63
  end
64
+
48
65
  def state_get name
49
66
  name = validate_state_name name
50
67
  logger.debug("Fetching state with name #{name}")
@@ -55,6 +72,7 @@ module Collins; module Api
55
72
  end
56
73
  end
57
74
  end
75
+
58
76
  def state_get_all
59
77
  http_get("/api/states") do |r|
60
78
  parse_response r, :expects => 200, :as => :data, :default => [], :raise => false do |js|
@@ -0,0 +1,98 @@
1
+ require 'collins/asset_type'
2
+ module Collins; module Api
3
+
4
+ module AssetType
5
+ def asset_type_test; @asset_type_test end
6
+ def asset_type_test= v; @asset_type_test = v end
7
+ module_function :asset_type_test, :asset_type_test=
8
+
9
+ def asset_type_create! name, label
10
+ name = validate_name name
11
+ parameters = { :label => label }
12
+
13
+ if not ::Collins::Api::AssetType.asset_type_test then
14
+ parameters = select_non_empty_parameters parameters
15
+ end
16
+
17
+ logger.debug("Creating asset type with name #{name}")
18
+ http_put("/api/assettype/#{name}", parameters) do |r|
19
+ parse_response r, :expects => 201, :as => :status, :raise => strict?, :default => false
20
+ end
21
+ end
22
+
23
+ def asset_type_delete! atype
24
+ name = validate_name case atype.class
25
+ when ::Collins::AssetType
26
+ atype.name
27
+ else
28
+ atype
29
+ end
30
+
31
+ logger.debug("Deleting asset type with name #{name}")
32
+ http_delete("/api/assettype/#{name}") do |r|
33
+ parse_response r, :expects => 202, :as => :data, :raise => strict?, :default => 0 do |js|
34
+ js["DELETED"].to_s.to_i
35
+ end
36
+ end
37
+ end
38
+
39
+ def asset_type_update! atype, options = {}
40
+ name = validate_name case atype.class
41
+ when ::Collins::AssetType
42
+ atype.name
43
+ else
44
+ atype
45
+ end
46
+
47
+ parameters = {
48
+ :name => options[:name],
49
+ :label => options[:label]
50
+ }
51
+ if not ::Collins::Api::AssetType.asset_type_test then
52
+ parameters = select_non_empty_parameters parameters
53
+ end
54
+ logger.debug("Updating asset type with name #{name} params #{parameters}")
55
+ http_post("/api/assettype/#{name}", parameters) do |r|
56
+ parse_response r, :expects => 200, :as => :status, :raise => strict?, :default => false
57
+ end
58
+ end
59
+
60
+ def asset_type_get name
61
+ name = validate_name name
62
+ logger.debug("Fetching asset type with name #{name}")
63
+ http_get("/api/assettype/#{name}") do |r|
64
+ empty = ::Collins::AssetType.new({})
65
+ parse_response r, :expects => 200, :as => :data, :default => empty, :raise => false do |js|
66
+ ::Collins::AssetType.from_json(js)
67
+ end
68
+ end
69
+ end
70
+
71
+ def asset_type_get_all
72
+ http_get("/api/assettypes") do |r|
73
+ parse_response r, :expects => 200, :as => :data, :default => [], :raise => false do |js|
74
+ js.map do |atype|
75
+ ::Collins::AssetType.from_json(atype)
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ private
82
+ def validate_name name
83
+ if ::Collins::Api::AssetType.asset_type_test then
84
+ return name
85
+ end
86
+ name_opt = ::Collins::Option(name).map {|x| x.to_s.strip}.filter_not {|x| x.empty?}.filter {|x|
87
+ x.size > 1 && x.size <= 32
88
+ }
89
+ if name_opt.empty? then
90
+ raise ::Collins::ExpectationFailedError.new("name must be between 2 and 32 characters")
91
+ else
92
+ name_opt.get
93
+ end
94
+ end
95
+
96
+ end # end module AssetType
97
+
98
+ end; end
@@ -0,0 +1,37 @@
1
+ require 'ostruct'
2
+
3
+ module Collins
4
+ class AssetType
5
+ include Collins::Util
6
+
7
+ attr_accessor :id, :label, :name
8
+
9
+ def self.from_json json
10
+ Collins::AssetType.new json
11
+ end
12
+
13
+ def initialize opts = {}
14
+ hash = symbolize_hash(opts).inject({}) do |result, (k,v)|
15
+ key = k.to_s.downcase.to_sym
16
+ result[key] = v
17
+ result
18
+ end
19
+ @id = hash[:id].to_s.to_i
20
+ @label = hash[:label].to_s
21
+ @name = hash[:name].to_s
22
+ end
23
+
24
+ def empty?
25
+ @id == 0
26
+ end
27
+
28
+ def to_s
29
+ if empty? then
30
+ "AssetType(None)"
31
+ else
32
+ "AssetType(id = #{id}, name = '#{name}', label = '#{label}')"
33
+ end
34
+ end
35
+
36
+ end
37
+ end
metadata CHANGED
@@ -1,40 +1,38 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: collins_client
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.10
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.11
6
5
  platform: ruby
7
- authors:
6
+ authors:
8
7
  - Blake Matheny
8
+ - Gabe Conradi
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-17 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
12
+
13
+ date: 2014-08-08 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
15
16
  name: httparty
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: 0.8.3
22
- type: :runtime
23
17
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ requirements:
27
20
  - - ~>
28
- - !ruby/object:Gem::Version
21
+ - !ruby/object:Gem::Version
29
22
  version: 0.8.3
23
+ type: :runtime
24
+ version_requirements: *id001
30
25
  description: Provides ruby support for interacting with the Collins API
31
- email: bmatheny@tumblr.com
26
+ email:
27
+ - bmatheny@tumblr.com
28
+ - gabe@tumblr.com
32
29
  executables: []
30
+
33
31
  extensions: []
34
- extra_rdoc_files:
32
+
33
+ extra_rdoc_files:
35
34
  - README.md
36
- files:
37
- - .rbenv-version
35
+ files:
38
36
  - Gemfile
39
37
  - Gemfile.lock
40
38
  - README.md
@@ -46,6 +44,7 @@ files:
46
44
  - lib/collins/api/admin.rb
47
45
  - lib/collins/api/asset.rb
48
46
  - lib/collins/api/asset_state.rb
47
+ - lib/collins/api/asset_type.rb
49
48
  - lib/collins/api/attributes.rb
50
49
  - lib/collins/api/ip_address.rb
51
50
  - lib/collins/api/logging.rb
@@ -59,6 +58,7 @@ files:
59
58
  - lib/collins/asset.rb
60
59
  - lib/collins/asset_client.rb
61
60
  - lib/collins/asset_find.rb
61
+ - lib/collins/asset_type.rb
62
62
  - lib/collins/asset_update.rb
63
63
  - lib/collins/client.rb
64
64
  - lib/collins/errors.rb
@@ -73,31 +73,30 @@ files:
73
73
  - lib/collins/util.rb
74
74
  - lib/collins_client.rb
75
75
  homepage: https://github.com/tumblr/collins/tree/master/support/ruby/collins-client
76
- licenses:
76
+ licenses:
77
77
  - APL 2.0
78
+ metadata: {}
79
+
78
80
  post_install_message:
79
81
  rdoc_options: []
80
- require_paths:
82
+
83
+ require_paths:
81
84
  - lib
82
- required_ruby_version: !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - ! '>='
86
- - !ruby/object:Gem::Version
87
- version: '0'
88
- segments:
89
- - 0
90
- hash: -2685565510305324275
91
- required_rubygems_version: !ruby/object:Gem::Requirement
92
- none: false
93
- requirements:
94
- - - ! '>='
95
- - !ruby/object:Gem::Version
96
- version: '0'
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - &id002
88
+ - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: "0"
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - *id002
97
94
  requirements: []
95
+
98
96
  rubyforge_project:
99
- rubygems_version: 1.8.23
97
+ rubygems_version: 2.4.1
100
98
  signing_key:
101
99
  specification_version: 3
102
100
  summary: Client library for Collins API
103
101
  test_files: []
102
+
@@ -1 +0,0 @@
1
- 1.9.2-p290