aptly-api 0.1.1 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c90f06df3d3b2e00e9008004e91a1af0cddfd6db
4
- data.tar.gz: d5762a76f1a4905ab1a4be067298ceb4d364a3a7
3
+ metadata.gz: 50c0d2cde02dbc8cf5b02b56e74262b0dd087dbe
4
+ data.tar.gz: f7bdcbcfe2059813f9518c555ebdbaf9dbf4cf9f
5
5
  SHA512:
6
- metadata.gz: 25880d1d8dcce12e87bb1ed9b31f7db13a83fe3b59ad2f146856c7640e684e9476fb9888bc645405902ffa794a93678a126deb70c49d7a8a291af8b9a79673d0
7
- data.tar.gz: 60b14cfd4853c3e2791334c36863a9a18197073e7af222ca3538fc5eaf0f1c596c79df8779722bacddf17efb325583ea2c808e3c93cfececd3e339f7c3985659
6
+ metadata.gz: 07024dad873ce1672950e0e035a988af09b01e277822c1d7a2887886b9295ea4d038beaf936e76b57b4eda651ce153bb27ecc5646b0247f44db08bc50cc2d78c
7
+ data.tar.gz: b4ae271870390480f2a5bd9da9c28e9f86205bece7cb376e1c4b391c880f39dc8f56df60a431a77aa456d516fd0724bc96597531f98f8caf5bd94bb568d37616
@@ -51,7 +51,9 @@ module Aptly
51
51
 
52
52
  def build_query(kwords)
53
53
  query = @query.merge(kwords.delete(:query) { {} })
54
- query = query.map { |k, v| [k.to_s.capitalize, v] }.to_h
54
+ if kwords.delete(:query_mangle) { true }
55
+ query = query.map { |k, v| [k.to_s.capitalize, v] }.to_h
56
+ end
55
57
  query
56
58
  end
57
59
 
@@ -84,9 +86,16 @@ module Aptly
84
86
  end
85
87
 
86
88
  def run_getish(action, path, kwords)
89
+ body = kwords.delete(:body)
87
90
  params = kwords.delete(:query)
88
91
  headers = kwords.delete(:headers)
89
- @connection.send(action, path, params, headers)
92
+
93
+ @connection.send(action, path, params, headers) do |request|
94
+ if body
95
+ request.headers[:content_type] = 'application/json'
96
+ request.body = body
97
+ end
98
+ end
90
99
  end
91
100
 
92
101
  def http_call(action, path, kwords)
@@ -40,10 +40,35 @@ module Aptly
40
40
  # @return [Array<String>] list of packages in the repository
41
41
  def packages(**kwords)
42
42
  response = connection.send(:get, "/repos/#{self.Name}/packages",
43
- query: kwords)
43
+ query: kwords,
44
+ query_mangle: false)
44
45
  JSON.parse(response.body)
45
46
  end
46
47
 
48
+ # Add a package (by key) to the repository.
49
+ # @param packages [Array<String>, String] a list of package keys or
50
+ # a single package key to add to the repository. The package key(s)
51
+ # must already be in the aptly database.
52
+ def add_package(packages, **kwords)
53
+ connection.send(:post, "/repos/#{self.Name}/packages",
54
+ query: kwords,
55
+ body: JSON.generate(PackageRefs: [*packages]))
56
+ self
57
+ end
58
+ alias_method :add_packages, :add_package
59
+
60
+ # Deletes a package (by key) from the repository.
61
+ # @param packages [Array<String>, String] a list of package keys or
62
+ # a single package key to add to the repository. The package key(s)
63
+ # must already be in the aptly database.
64
+ def delete_package(packages, **kwords)
65
+ connection.send(:delete, "/repos/#{self.Name}/packages",
66
+ query: kwords,
67
+ body: JSON.generate(PackageRefs: [*packages]))
68
+ self
69
+ end
70
+ alias_method :delete_packages, :delete_package
71
+
47
72
  # Convenience wrapper around {Aptly.publish}, publishing this repository
48
73
  # locally and as only source of prefix.
49
74
  # @param prefix [String] prefix to publish under (i.e. published repo name)
@@ -102,13 +127,21 @@ module Aptly
102
127
  # Check if a repository exists.
103
128
  # @param name [String] the name of the repository which might exist
104
129
  # @param connection [Connection] connection to use for the instance
105
- # @return [Boolean] whether or not the repositoryexists
130
+ # @return [Boolean] whether or not the repository exists
106
131
  def exist?(name, connection = Connection.new, **kwords)
107
132
  get(name, connection, **kwords)
108
133
  true
109
134
  rescue Aptly::Errors::NotFoundError
110
135
  false
111
136
  end
137
+
138
+ # List all known repositories.
139
+ # @param connection [Connection] connection to use for the instance
140
+ # @return [Array<Repository>] all known repositories
141
+ def list(connection = Connection.new, **kwords)
142
+ response = connection.send(:get, '/repos', query: kwords)
143
+ JSON.parse(response.body).collect { |r| new(connection, r) }
144
+ end
112
145
  end
113
146
  end
114
147
  end
@@ -1,4 +1,4 @@
1
1
  # Aptly API
2
2
  module Aptly
3
- VERSION = '0.1.1'
3
+ VERSION = '0.2.0'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aptly-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harald Sitter
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-21 00:00:00.000000000 Z
11
+ date: 2016-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -183,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
183
183
  version: '0'
184
184
  requirements: []
185
185
  rubyforge_project:
186
- rubygems_version: 2.4.6
186
+ rubygems_version: 2.5.1
187
187
  signing_key:
188
188
  specification_version: 4
189
189
  summary: REST client for the Aptly API