happi 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +52 -32
- data/lib/happi/error.rb +6 -6
- data/lib/happi/version.rb +1 -1
- data/script/buildkite.sh +19 -0
- data/spec/error_spec.rb +17 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9dbbe19b69447b59fcdffc793300f8058b61d87e
|
4
|
+
data.tar.gz: 1551a9532ba36b03ead3746239880e90eee83ccb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7812c0d9fc728a44e021a95914be86d03dce8e65136748258e3620c4e916d2916796a068e1f7eb947a49b897daac60cd2fc58cb9eb1ba68f866a31bad0c9e40e
|
7
|
+
data.tar.gz: b34a4009a5fed72e54209ae705ef770ada24d74cd07c83aff7074252b45953ab37a7501a472e6cd9501470d5bdd6def8f0965918471422318e4fae2272b5d701
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Happi
|
2
2
|
|
3
|
-
Happi -
|
3
|
+
Happi is a pre-configured Faraday client designed for easy access to RESTful
|
4
|
+
HTTP APIs. It assumes URLS of the form `https://hostname.com/api/v1/something`.
|
4
5
|
|
5
6
|
## Installation
|
6
7
|
|
@@ -12,61 +13,80 @@ And then execute:
|
|
12
13
|
|
13
14
|
$ bundle
|
14
15
|
|
15
|
-
|
16
|
+
## Usage
|
16
17
|
|
17
|
-
|
18
|
+
Happi stores its configuration as class-level state, so it's important to
|
19
|
+
derive your own client from `Happi::Client` rather than using it directly,
|
20
|
+
which can cause requests to be sent to the wrong endpoint.
|
18
21
|
|
19
|
-
|
22
|
+
```ruby
|
23
|
+
require 'happi'
|
20
24
|
|
21
|
-
|
25
|
+
class MyClient < Happi::Client
|
26
|
+
end
|
22
27
|
|
23
|
-
|
24
|
-
|
25
|
-
|
28
|
+
MyClient.configure do |config|
|
29
|
+
config.host = 'http://localhost:3000'
|
30
|
+
end
|
26
31
|
|
27
|
-
|
28
|
-
|
32
|
+
client = Myclient.new(
|
33
|
+
oauth_token: '63ba06720acf97959f5ba3e3fe1020bf69a7596e2fe3091f821a35cdfe615ceb')
|
29
34
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
35
|
+
templates = client.get('templates')[:templates]
|
36
|
+
templates.each do |template|
|
37
|
+
puts template[:name]
|
38
|
+
end
|
34
39
|
|
35
|
-
|
36
|
-
|
37
|
-
|
40
|
+
response = client.post('templates', template: {name: 'test',
|
41
|
+
file: Happi::File.new(File.join(File.dirname(__FILE__), 'spec/fixtures/award.docx')) } )
|
42
|
+
template = response[:template]
|
38
43
|
|
39
|
-
|
40
|
-
|
44
|
+
templates = client.get('templates')[:templates]
|
45
|
+
template = client.get('templates/1')[:template]
|
41
46
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
47
|
+
template = client.patch("templates/#{template[:id]}",
|
48
|
+
template: {id: template[:id],
|
49
|
+
name: 'test' }
|
50
|
+
)[:template]
|
46
51
|
|
47
|
-
|
48
|
-
|
49
|
-
|
52
|
+
client.get('documents')[:documents].each do |document|
|
53
|
+
puts document[:name]
|
54
|
+
end
|
50
55
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
56
|
+
document = client.post('documents',
|
57
|
+
document: {template_id: template[:id],
|
58
|
+
name: 'Test Document',
|
59
|
+
params: JSON.dump({name: 'Test'}) } )[:document]
|
55
60
|
|
56
|
-
|
61
|
+
puts document[:id]
|
62
|
+
```
|
57
63
|
|
58
64
|
## Configuration
|
59
65
|
|
60
66
|
```ruby
|
61
|
-
|
67
|
+
MyClient.configure do |config|
|
62
68
|
config.host = 'http://localhost:8080'
|
63
69
|
config.port = 443
|
64
70
|
config.timeout = 60
|
65
71
|
config.version = 'v1'
|
66
72
|
config.use_json = false
|
73
|
+
config.log_level = :debug
|
67
74
|
end
|
68
75
|
```
|
69
76
|
|
77
|
+
A class deriving from `Happi::Client` can be configured with the following
|
78
|
+
paramters:
|
79
|
+
|
80
|
+
- **config.host** - the hostname of the server
|
81
|
+
- **config.port** - the TCP port to which requests will be sent.
|
82
|
+
- **config.timeout** - the maximum time to allow requests to take.
|
83
|
+
- **config.version** - the API version to interpolate in the URL
|
84
|
+
- **config.use_json** - when `true`, encode requests as JSON, and intepret
|
85
|
+
responses as JSON.
|
86
|
+
- **config.log_level** - when set to `:debug`, will log full request bodies and
|
87
|
+
paramaters, but will only log URL otherwise. Be aware: setting this to `:debug`
|
88
|
+
in data-heavy applications can lead to very large log files.
|
89
|
+
|
70
90
|
## Contributing
|
71
91
|
|
72
92
|
1. Fork it
|
data/lib/happi/error.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
class Happi::Error < StandardError
|
2
|
-
|
3
|
-
attr_reader :response
|
2
|
+
attr_reader :response
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
def initialize(msg = nil, response = nil)
|
5
|
+
super(msg)
|
6
|
+
@response = response
|
7
|
+
end
|
9
8
|
|
9
|
+
class ClientError < self
|
10
10
|
def message
|
11
11
|
"A client error occurred"
|
12
12
|
end
|
data/lib/happi/version.rb
CHANGED
data/script/buildkite.sh
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -e
|
3
|
+
|
4
|
+
REVISION=https://github.com/$BUILDBOX_PROJECT_SLUG/commit/$BUILDBOX_COMMIT
|
5
|
+
|
6
|
+
echo '--- setting ruby version'
|
7
|
+
rbenv local 2.1.5
|
8
|
+
|
9
|
+
echo '--- bundling'
|
10
|
+
bundle install -j $(nproc) --without development production --quiet
|
11
|
+
|
12
|
+
echo '--- running specs'
|
13
|
+
if bundle exec rspec; then
|
14
|
+
echo "[Successful] $BUILDBOX_PROJECT_SLUG - Build - $BUILDBOX_BUILD_URL - Commit - $REVISION" | hipchat_room_message -t $HIPCHAT_TOKEN -r $HIPCHAT_ROOM -f "Buildbox" -c "green"
|
15
|
+
else
|
16
|
+
echo "[Failed] Build $BUILDBOX_PROJECT_SLUG - Build - $BUILDBOX_BUILD_URL - Commit - $REVISION" | hipchat_room_message -t $HIPCHAT_TOKEN -r $HIPCHAT_ROOM -f "Buildbox" -c "red"
|
17
|
+
exit 1;
|
18
|
+
fi
|
19
|
+
|
data/spec/error_spec.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Happi::Error do
|
4
|
+
describe '.new' do
|
5
|
+
context 'with 1 argument' do
|
6
|
+
let(:error) { Happi::Error.new('message') }
|
7
|
+
specify { expect(error.message).to eq('message') }
|
8
|
+
specify { expect(error.response).to be nil }
|
9
|
+
end
|
10
|
+
|
11
|
+
context 'with 2 arguments' do
|
12
|
+
let(:error) { Happi::Error.new('message', 'response') }
|
13
|
+
specify { expect(error.message).to eq('message') }
|
14
|
+
specify { expect(error.response).to eq('response') }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: happi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John D'Agostino
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -200,8 +200,10 @@ files:
|
|
200
200
|
- lib/happi/error.rb
|
201
201
|
- lib/happi/file.rb
|
202
202
|
- lib/happi/version.rb
|
203
|
+
- script/buildkite.sh
|
203
204
|
- spec/client_spec.rb
|
204
205
|
- spec/configuration_spec.rb
|
206
|
+
- spec/error_spec.rb
|
205
207
|
- spec/file_spec.rb
|
206
208
|
- spec/fixtures/award.docx
|
207
209
|
- spec/spec_helper.rb
|
@@ -232,6 +234,7 @@ summary: Simple faraday client wrapper preconfigured for specific usecase
|
|
232
234
|
test_files:
|
233
235
|
- spec/client_spec.rb
|
234
236
|
- spec/configuration_spec.rb
|
237
|
+
- spec/error_spec.rb
|
235
238
|
- spec/file_spec.rb
|
236
239
|
- spec/fixtures/award.docx
|
237
240
|
- spec/spec_helper.rb
|