snitcher 0.4.0.rc4 → 0.4.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 +4 -4
- data/.travis.yml +7 -1
- data/CHANGELOG.md +1 -1
- data/README.md +0 -10
- data/examples/api.rb +5 -5
- data/lib/snitcher/api.rb +0 -59
- data/lib/snitcher/version.rb +1 -1
- data/spec/api_spec.rb +0 -72
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ce9137c78af3585cd04a72db5dcfa25890c5c58
|
4
|
+
data.tar.gz: 0382afa241770a4ce4eb1757fa3e3dd911ac608a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f4d73519250309f111a2359162a4748eeccf10161aa3f37dce680372b11c2d611efd32c1da98a4c2246c0e3f653e00c6a832cf99964ca668c87049bb44a7f57
|
7
|
+
data.tar.gz: 03a7310d071a11568fcb2f6d05abf74c69138dc8211715c9d8782431fada6d0136ddf5772e443f043aff40e6b5bf16b1483bf97534988dc95789165cc5361172
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -31,16 +31,6 @@ Snitcher.snitch("c2354d53d2", timeout: 10)
|
|
31
31
|
|
32
32
|
## API Access
|
33
33
|
|
34
|
-
### Retrieving Your API Key At Command Line
|
35
|
-
|
36
|
-
```ruby
|
37
|
-
require "snitcher/api"
|
38
|
-
|
39
|
-
key = Snitcher::API.get_key("jane@example.com", "password")
|
40
|
-
```
|
41
|
-
|
42
|
-
Returns an authentication key to access the api.
|
43
|
-
|
44
34
|
### Setup
|
45
35
|
|
46
36
|
Initialize the API client directly with your api key:
|
data/examples/api.rb
CHANGED
@@ -3,17 +3,17 @@ $:.unshift File.expand_path("../../lib", __FILE__)
|
|
3
3
|
# Need to require the API separately as it is not required by Snitcher itself.
|
4
4
|
require "snitcher/api"
|
5
5
|
|
6
|
-
if !
|
7
|
-
puts "Set
|
8
|
-
puts "
|
6
|
+
if !ENV["DMS_API_KEY"]
|
7
|
+
puts "Set DMS_API_KEY environment variable to your deadmanssnitch.com API key"
|
8
|
+
puts "before running this example."
|
9
9
|
puts
|
10
|
-
puts "example:
|
10
|
+
puts "example: DMS_API_KEY=c23452notarealkeyhello! ruby examples/api.rb"
|
11
11
|
|
12
12
|
exit 1
|
13
13
|
end
|
14
14
|
|
15
15
|
# Get an API key for a given user with password
|
16
|
-
key =
|
16
|
+
key = ENV["DMS_API_KEY"]
|
17
17
|
|
18
18
|
# Create a new API client
|
19
19
|
client = Snitcher::API::Client.new(key)
|
data/lib/snitcher/api.rb
CHANGED
@@ -7,67 +7,8 @@ require "snitcher/version"
|
|
7
7
|
|
8
8
|
module Snitcher
|
9
9
|
module API
|
10
|
-
extend self
|
11
|
-
|
12
10
|
# Snitcher::API::Error and subclasses
|
13
11
|
require "snitcher/api/error"
|
14
|
-
|
15
|
-
# Retrieve an API Key for your account.
|
16
|
-
#
|
17
|
-
# @param username [String] username for your Dead Man's Snitch account.
|
18
|
-
# @param password [String] password for your Dead Man's Snitch account.
|
19
|
-
#
|
20
|
-
# @param [Hash] options
|
21
|
-
# @option options [String] uri location of alternative Dead Man's Snitch API
|
22
|
-
# @option timeout [Float, Fixnum] timeout number of seconds to wait for
|
23
|
-
# server response before timing out.
|
24
|
-
#
|
25
|
-
# @example
|
26
|
-
# Snitcher::API.get_key("alice@example.com", "password")
|
27
|
-
# # => "_caeEiZXnEyEzXXYVh2NhQ"
|
28
|
-
#
|
29
|
-
# @raise [Timeout::Error] if the API request took too long to execute.
|
30
|
-
# @raise [Snitcher::API::AuthenticationError] credentials are invalid.
|
31
|
-
# @raise [Snitcher::API::Error] if any other API errors occur.
|
32
|
-
#
|
33
|
-
# @return [String] the API key to use for further API requests.
|
34
|
-
def get_key(username, password, options={})
|
35
|
-
api = options.fetch(:uri, "https://api.deadmanssnitch.com")
|
36
|
-
uri = URI.parse("#{api}/v1/api_key")
|
37
|
-
|
38
|
-
timeout = options.fetch(:timeout, 5)
|
39
|
-
http_options = {
|
40
|
-
open_timeout: timeout,
|
41
|
-
read_timeout: timeout,
|
42
|
-
ssl_timeout: timeout,
|
43
|
-
use_ssl: uri.scheme == "https",
|
44
|
-
}
|
45
|
-
|
46
|
-
Net::HTTP.start(uri.host, uri.port, http_options) do |http|
|
47
|
-
request = Net::HTTP::Get.new(uri.path)
|
48
|
-
request["User-Agent"] = user_agent
|
49
|
-
request.basic_auth(username, password)
|
50
|
-
|
51
|
-
response = http.request(request)
|
52
|
-
|
53
|
-
if response.is_a?(Net::HTTPSuccess)
|
54
|
-
JSON.parse(response.body)["api_key"]
|
55
|
-
else
|
56
|
-
error = JSON.parse(response.body)
|
57
|
-
|
58
|
-
raise ::Snitcher::API::Error.new(error)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
private
|
64
|
-
|
65
|
-
def user_agent
|
66
|
-
# RUBY_ENGINE was not added until 1.9.3
|
67
|
-
engine = defined?(::RUBY_ENGINE) ? ::RUBY_ENGINE : "Ruby"
|
68
|
-
|
69
|
-
"Snitcher; #{engine}/#{RUBY_VERSION}; #{RUBY_PLATFORM}; v#{::Snitcher::VERSION}"
|
70
|
-
end
|
71
12
|
end
|
72
13
|
end
|
73
14
|
|
data/lib/snitcher/version.rb
CHANGED
data/spec/api_spec.rb
CHANGED
@@ -1,78 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
require "base64"
|
4
|
-
require "securerandom"
|
5
|
-
|
6
3
|
require "snitcher/api"
|
7
4
|
|
8
5
|
describe Snitcher::API do
|
9
|
-
describe "#get_key" do
|
10
|
-
it "returns the api_key" do
|
11
|
-
user = "alice@example.com"
|
12
|
-
pass = "password"
|
13
|
-
|
14
|
-
request = stub_request(:get, "https://api.deadmanssnitch.com/v1/api_key").
|
15
|
-
with(basic_auth: [user, pass]).
|
16
|
-
to_return({
|
17
|
-
:body => '{"api_key": "_caeEiZXnEyEzXXYVh2NhQ"}',
|
18
|
-
:status => 200
|
19
|
-
})
|
20
|
-
|
21
|
-
actual = Snitcher::API.get_key(user, pass)
|
22
|
-
|
23
|
-
expect(actual).to eq("_caeEiZXnEyEzXXYVh2NhQ")
|
24
|
-
expect(request).to have_been_made.once
|
25
|
-
end
|
26
|
-
|
27
|
-
it "raises an error if authentication failed" do
|
28
|
-
user = "lol@notreally.horse"
|
29
|
-
pass = "nope"
|
30
|
-
|
31
|
-
request = stub_request(:get, "https://api.deadmanssnitch.com/v1/api_key").
|
32
|
-
with(basic_auth: [user, pass]).
|
33
|
-
to_return({
|
34
|
-
:body => JSON.generate({
|
35
|
-
:type => "sign_in_incorrect",
|
36
|
-
:error => "Invalid email or password."
|
37
|
-
}),
|
38
|
-
:status => 401
|
39
|
-
})
|
40
|
-
|
41
|
-
expect {
|
42
|
-
# Some shenanigans to verify type
|
43
|
-
begin
|
44
|
-
Snitcher::API.get_key(user, pass)
|
45
|
-
rescue Snitcher::API::Error => e
|
46
|
-
expect(e.type).to eq("sign_in_incorrect")
|
47
|
-
expect(e.message).to eq("Invalid email or password.")
|
48
|
-
|
49
|
-
raise e
|
50
|
-
end
|
51
|
-
}.to raise_error(Snitcher::API::AuthenticationError)
|
52
|
-
|
53
|
-
expect(request).to have_been_made.once
|
54
|
-
end
|
55
|
-
|
56
|
-
it "raises Timeout::Error on a timeout" do
|
57
|
-
stub_request(:any, "https://api.deadmanssnitch.com/v1/api_key").to_timeout
|
58
|
-
|
59
|
-
expect {
|
60
|
-
Snitcher::API.get_key("", "")
|
61
|
-
}.to raise_error(Timeout::Error)
|
62
|
-
end
|
63
|
-
|
64
|
-
it "allows the API URI to be provided" do
|
65
|
-
request = stub_request(:any, "dms.dev:4000/v1/api_key").
|
66
|
-
with(basic_auth: ["user", "pass"]).
|
67
|
-
to_return({
|
68
|
-
:body => '{"api_key": "this_is_an_api_key"}',
|
69
|
-
:status => 200
|
70
|
-
})
|
71
|
-
|
72
|
-
actual = Snitcher::API.get_key("user", "pass", uri: "http://dms.dev:4000")
|
73
|
-
|
74
|
-
expect(actual).to eq("this_is_an_api_key")
|
75
|
-
expect(request).to have_been_made.once
|
76
|
-
end
|
77
|
-
end
|
78
6
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: snitcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.0
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Collective Idea
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -85,12 +85,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
85
85
|
version: 1.9.3
|
86
86
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- - "
|
88
|
+
- - ">="
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
90
|
+
version: '0'
|
91
91
|
requirements: []
|
92
92
|
rubyforge_project:
|
93
|
-
rubygems_version: 2.
|
93
|
+
rubygems_version: 2.6.4
|
94
94
|
signing_key:
|
95
95
|
specification_version: 4
|
96
96
|
summary: Simple API client for deadmanssnitch.com
|