mattermark 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c4ccd6e118b8bbdaa4be72190c0a9822261ab8fe
4
- data.tar.gz: 5a258928298671ce1583ebcb2dde23419b68f5ea
3
+ metadata.gz: 2033000ab0347a5e6e5e23c61616a7f2ec3cd9b7
4
+ data.tar.gz: e2362c8b7f52f7920c19f35b161fbdc9928bde11
5
5
  SHA512:
6
- metadata.gz: 674c7c4fa8aa5e5e447679a1a01f0e25bd76c72e07765ac9f5b1d010e9d8e530ca50e7c87f9124d2fd9cfe1838cf88dd96343810d5357eacb4d56401e7cbe67d
7
- data.tar.gz: c7a1a340db92ef396dd626e270bf061599050933b219e0e364b51015eee442e301d8c44f82d8a796bf90cff8716b3f24642c447cf0d3704a5ee6f8597726455f
6
+ metadata.gz: 17bf9d98218d1177d1860d80e1d06b51987d72364cbb8ed779e11cf0c6ddfc520be0a06e1dffba6e97122eecf2cbde63d38e16d7dddd8d842ed993ebf3a45f21
7
+ data.tar.gz: 80d34267b3dcfd5a6d2036c76658e486445dbbb622c240c071f07d7ae8cf4b59ecef1522b613119d279500ed49c946e3d06d7b9b28e3d1856e5313f65d29bf4d
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Mattermark
2
2
 
3
- TODO: Write a gem description
3
+ Ruby client for the mattermark API.
4
4
 
5
5
  ## Installation
6
6
 
@@ -20,11 +20,21 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- TODO: Write usage instructions here
23
+ Mattermark.configure do |c|
24
+ c.api_key = 'your_api_key'
25
+ end
26
+
27
+ client = Mattermark::Client.new
28
+
29
+ begin
30
+ puts client.companies
31
+ rescue Mattermark::Forbidden
32
+ puts "Forbidden!"
33
+ end
24
34
 
25
35
  ## Contributing
26
36
 
27
- 1. Fork it ( https://github.com/[my-github-username]/mattermark/fork )
37
+ 1. Fork it ( https://github.com/andrewpthorp/mattermark/fork )
28
38
  2. Create your feature branch (`git checkout -b my-new-feature`)
29
39
  3. Commit your changes (`git commit -am 'Add some feature'`)
30
40
  4. Push to the branch (`git push origin my-new-feature`)
data/Rakefile CHANGED
@@ -1,2 +1,10 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.test_files = FileList['test/**/*_test.rb']
7
+ end
8
+
9
+ task default: :test
2
10
 
@@ -0,0 +1,15 @@
1
+ module Mattermark
2
+ class Client
3
+ module Companies
4
+
5
+ def companies(opts={})
6
+ get("#{base_url}/companies", opts)
7
+ end
8
+
9
+ def company(id)
10
+ get("#{base_url}/companies/#{id}")
11
+ end
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ require 'mattermark/request'
2
+ require 'mattermark/configuration'
3
+ require 'mattermark/client/companies'
4
+
5
+ module Mattermark
6
+ class Client
7
+ attr_accessor *Mattermark::Configuration::KEYS
8
+
9
+ def initialize(opts={})
10
+ config = Mattermark.configuration.merge(opts)
11
+ Mattermark::Configuration::KEYS.each do |key|
12
+ send("#{key}=", config[key])
13
+ end
14
+ end
15
+
16
+ def base_url
17
+ "https://mattermark.com/app/v0/"
18
+ end
19
+
20
+ include Mattermark::Request
21
+ include Mattermark::Client::Companies
22
+ end
23
+ end
@@ -0,0 +1,24 @@
1
+ module Mattermark
2
+ module Configuration
3
+
4
+ KEYS = [:api_key]
5
+ attr_accessor *KEYS
6
+
7
+ def self.extended(base)
8
+ base.reset!
9
+ end
10
+
11
+ def configure
12
+ yield self
13
+ end
14
+
15
+ def configuration
16
+ KEYS.inject({}){|o,k| o.merge!(k => send(k)) }
17
+ end
18
+
19
+ def reset!
20
+ self.api_key = nil
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,7 @@
1
+ module Mattermark
2
+
3
+ class Error < StandardError; end
4
+ class Forbidden < Error; end
5
+ class InternalServerError < Error; end
6
+
7
+ end
@@ -0,0 +1,29 @@
1
+ require 'rest-client'
2
+
3
+ module Mattermark
4
+ module Request
5
+
6
+ def get(url, params={})
7
+ RestClient.get(url, build_params(params)) do |resp, req, res, &block|
8
+ case resp.code
9
+ when 200
10
+ JSON.parse(resp)
11
+ when 403
12
+ raise Mattermark::Forbidden
13
+ when 500
14
+ raise Mattermark::InternalServerError
15
+ else
16
+ resp.return!(req, res, &block)
17
+ end
18
+ end
19
+ end
20
+
21
+ private
22
+
23
+ def build_params(params)
24
+ default_params = { key: self.api_key }
25
+ { params: default_params.merge(params) }
26
+ end
27
+
28
+ end
29
+ end
@@ -1,3 +1,3 @@
1
1
  module Mattermark
2
- VERSION = "0.0.1"
2
+ VERSION = '0.1.0'
3
3
  end
data/lib/mattermark.rb CHANGED
@@ -1,4 +1,8 @@
1
- require "mattermark/version"
1
+ require 'mattermark/client'
2
+ require 'mattermark/configuration'
3
+ require 'mattermark/error'
4
+ require 'mattermark/request'
2
5
 
3
6
  module Mattermark
7
+ extend Configuration
4
8
  end
data/mattermark.gemspec CHANGED
@@ -14,10 +14,11 @@ Gem::Specification.new do |spec|
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
18
  spec.require_paths = ["lib"]
20
19
 
21
20
  spec.add_development_dependency "bundler", "~> 1.7"
22
21
  spec.add_development_dependency "rake", "~> 10.0"
22
+ spec.add_development_dependency "pry"
23
+ spec.add_runtime_dependency "rest-client", "~> 1.7.2"
23
24
  end
@@ -0,0 +1,16 @@
1
+ require_relative '../test_helper'
2
+
3
+ class Mattermark::ClientTest < Minitest::Unit::TestCase
4
+ def setup
5
+ @client = Mattermark::Client.new
6
+ end
7
+
8
+ def test_initializer
9
+ c = Mattermark::Client.new(api_key: 'foobar')
10
+ assert_equal 'foobar', c.api_key
11
+ end
12
+
13
+ def test_base_url
14
+ assert_equal "https://mattermark.com/app/v0/", @client.base_url
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ require_relative '../test_helper'
2
+
3
+ class Mattermark::ConfigurationTest < MiniTest::Unit::TestCase
4
+ def setup
5
+ @api_key = 'foobar'
6
+ Mattermark.configure do |c|
7
+ c.api_key = @api_key
8
+ end
9
+ end
10
+
11
+ def test_configure
12
+ client = Mattermark::Client.new
13
+ assert_equal @api_key, client.api_key
14
+ end
15
+
16
+ def test_configuration
17
+ assert_equal({ api_key: @api_key }, Mattermark.configuration)
18
+ end
19
+
20
+ def test_reset!
21
+ Mattermark.reset!
22
+ client = Mattermark::Client.new
23
+ assert_nil client.api_key
24
+ end
25
+ end
@@ -0,0 +1,8 @@
1
+ require 'minitest/autorun'
2
+ require 'mattermark'
3
+
4
+ class MiniTest::Unit::TestCase
5
+ def teardown
6
+ Mattermark.reset!
7
+ end
8
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mattermark
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Thorp
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rest-client
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 1.7.2
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 1.7.2
41
69
  description: Ruby client for the mattermark API, something something longer.
42
70
  email:
43
71
  - andrewpthorp@gmail.com
@@ -51,8 +79,16 @@ files:
51
79
  - README.md
52
80
  - Rakefile
53
81
  - lib/mattermark.rb
82
+ - lib/mattermark/client.rb
83
+ - lib/mattermark/client/companies.rb
84
+ - lib/mattermark/configuration.rb
85
+ - lib/mattermark/error.rb
86
+ - lib/mattermark/request.rb
54
87
  - lib/mattermark/version.rb
55
88
  - mattermark.gemspec
89
+ - test/mattermark/client_test.rb
90
+ - test/mattermark/configuration_test.rb
91
+ - test/test_helper.rb
56
92
  homepage: https://github.com/andrewpthorp/mattermark
57
93
  licenses:
58
94
  - MIT
@@ -77,4 +113,7 @@ rubygems_version: 2.2.2
77
113
  signing_key:
78
114
  specification_version: 4
79
115
  summary: Ruby client for the mattermark API.
80
- test_files: []
116
+ test_files:
117
+ - test/mattermark/client_test.rb
118
+ - test/mattermark/configuration_test.rb
119
+ - test/test_helper.rb