lockme 0.1.66 → 0.3.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: cf0fadcec7ed89e97a6e67aa1d8d9cf032d4a357
4
- data.tar.gz: dfd8343a92a171be6e405d09f3f7812c493e3ec2
3
+ metadata.gz: aa37c02a432d1e93c389daf8c240f029b1773fec
4
+ data.tar.gz: 7a77a01614ca111df43be45d3b5427b3648c81f5
5
5
  SHA512:
6
- metadata.gz: 906ce48d6fad359a624c6cc59f70075476e5088cd46fb52cabbc236104f280c2cc8a08c13728ce3741b4d14f36247eff39477cc8ef81e1067f7c4f6da766ba77
7
- data.tar.gz: 7fcd5ec36096260f9e9d912cde7d7af9d94e42eabd676f2b17dc80e560eca6fb9e29aca06022179e9b120cd6b5ed3bfd6ea5cc621d75cb6bc23612547daa70f6
6
+ metadata.gz: 34b50102fa3a223bb655491e82c45c3176fc14a29620e77241d17726acd104b9127ed17d54d0d554c982818d31c59421097aac249fbc14ca667fd9164a3c7a84
7
+ data.tar.gz: e705504893e95198d349208b4428c3855a4753e6b28abceba4f3bdf487c3a0f30ea0903be41fd73daa19ace1b0abda4649249ec8aa3911f91760a1f02bcd4ebd
data/.travis.yml CHANGED
@@ -1,5 +1,16 @@
1
1
  sudo: false
2
+ env:
3
+ global:
4
+ - CC_TEST_REPORTER_ID=2b34c204b674fac709e16283b3b6c75b3d7b5cd88d15f4d73d5262d8df16d700
2
5
  language: ruby
3
6
  rvm:
4
7
  - 2.3.1
5
8
  before_install: gem install bundler -v 1.14.3
9
+ before_script:
10
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
11
+ - chmod +x ./cc-test-reporter
12
+ - ./cc-test-reporter before-build
13
+ script:
14
+ - bundle exec rake test
15
+ after_script:
16
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
data/README.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Lockme
2
2
 
3
+ [![Build Status](https://travis-ci.org/hajder/lockme.svg?branch=master)](https://travis-ci.org/hajder/lockme)
4
+ [![Maintainability](https://api.codeclimate.com/v1/badges/d14d98a40a58ca93238a/maintainability)](https://codeclimate.com/github/hajder/lockme/maintainability)
5
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/d14d98a40a58ca93238a/test_coverage)](https://codeclimate.com/github/hajder/lockme/test_coverage)
6
+ [![Gem](https://img.shields.io/gem/v/lockme.svg)](https://rubygems.org/gems/lockme)
7
+
3
8
  Lockme is a Ruby gem to interact with [lockme.pl](https://lockme.pl) API.
4
9
 
5
10
  ## Installation
@@ -33,13 +38,10 @@ If you wish to debug the requests sent set `Lockme.logger` to `$stdout` or `Rail
33
38
 
34
39
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
35
40
 
36
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
37
-
38
41
  ## Contributing
39
42
 
40
43
  Bug reports and pull requests are welcome on GitHub at https://github.com/hajder/lockme.
41
44
 
42
-
43
45
  ## License
44
46
 
45
47
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,5 @@
1
+ module Lockme
2
+ class Base
3
+ include JsonUtils
4
+ end
5
+ end
@@ -1,7 +1,7 @@
1
1
  module Lockme
2
2
  module JsonUtils
3
3
  def to_json
4
- @data.to_json.force_encoding('UTF-8').each_codepoint.reduce('') {|str, c| str << (c > 127 ? '\u'+c.to_s(16).rjust(4, '0') : c.chr) }
4
+ @data.to_h.to_json.force_encoding('UTF-8').each_codepoint.reduce('') {|str, c| str << (c > 127 ? '\u'+c.to_s(16).rjust(4, '0') : c.chr) }
5
5
  end
6
6
  end
7
7
  private_constant :JsonUtils
@@ -1,13 +1,14 @@
1
1
  module Lockme
2
- module Request
2
+ module SignedRequest
3
3
  def self.perform(method, path, data = nil)
4
4
  headers = signature(method, path, data)
5
5
  params = {
6
6
  body: data,
7
7
  headers: headers,
8
8
  debug_output: Lockme.logger
9
- }.compact
10
- resp = SignedRequest.send(method.downcase, path, params).parsed_response
9
+ }.delete_if {|k,v| k.nil? || v.nil? }
10
+
11
+ resp = Request.send(method.downcase, path, params).parsed_response
11
12
  if resp.is_a?(Hash) && resp['error']
12
13
  raise Lockme::Error.new(resp['error'])
13
14
  end
@@ -20,9 +21,9 @@ module Lockme
20
21
  digest = Digest::SHA1.hexdigest([
21
22
  method.upcase,
22
23
  path.gsub(/^\//, ''),
23
- data || '[]',
24
+ data,
24
25
  Lockme.api_secret
25
- ].join(''))
26
+ ].compact.join(''))
26
27
 
27
28
  {
28
29
  'Partner-Key' => Lockme.api_key,
@@ -35,7 +36,7 @@ module Lockme
35
36
  end
36
37
  end
37
38
 
38
- module SignedRequest
39
+ module Request
39
40
  include ::HTTParty
40
41
 
41
42
  HEADERS = {
@@ -43,7 +44,7 @@ module Lockme
43
44
  'Accept' => 'application/json',
44
45
  'Content-Type' => 'application/json'
45
46
  }
46
- API_VERSION = '1.0'
47
+ API_VERSION = '1.1'
47
48
 
48
49
  base_uri "https://lockme.pl/api/v#{API_VERSION}/"
49
50
  headers HEADERS
@@ -52,5 +53,4 @@ module Lockme
52
53
  extend Forwardable
53
54
  def_delegators 'self.class', :delete, :get, :post, :put
54
55
  end
55
- private_constant :SignedRequest
56
56
  end
@@ -1,15 +1,15 @@
1
1
  module Lockme
2
- class Reservation
2
+ class Reservation < Lockme::Base
3
3
  def initialize(args = {})
4
- @data = args
4
+ @data = OpenStruct.new(args)
5
5
  end
6
6
 
7
7
  def self.find(lockme_id)
8
- self.new(Lockme::Request.perform("get", "/reservation/#{lockme_id}"))
8
+ self.new(Lockme::SignedRequest.perform("get", "/reservation/#{lockme_id}"))
9
9
  end
10
10
 
11
11
  def save
12
- if(@data[:lockme_id].present?)
12
+ if persisted?
13
13
  update
14
14
  else
15
15
  create
@@ -17,16 +17,26 @@ module Lockme
17
17
  end
18
18
 
19
19
  def destroy
20
- Lockme::Request.perform("delete", "/reservation/#{@data[:id]}")
20
+ Lockme::SignedRequest.perform("delete", "/reservation/#{@data.reservationid}")
21
+ end
22
+
23
+ # Check if object is persisted with Lockme
24
+ def persisted?
25
+ !@data.reservationid.nil?
26
+ end
27
+
28
+ # Provide attribute accessors
29
+ def method_missing(method, *args)
30
+ @data.send method, *args
21
31
  end
22
32
 
23
33
  def create
24
- Lockme::Request.perform("put", "/reservation", self.to_json)
34
+ Lockme::SignedRequest.perform("put", "/reservation", self.to_json)
25
35
  end
26
36
  private :create
27
37
 
28
38
  def update
29
- Lockme::Request.perform("post", "/reservation/#{self.id}", self.to_json)
39
+ Lockme::SignedRequest.perform("post", "/reservation/#{@data.reservationid}", self.to_json)
30
40
  end
31
41
  private :update
32
42
  end
data/lib/lockme/room.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Lockme
2
- class Room
2
+ class Room < Lockme::Base
3
3
  def self.all
4
- Lockme::Request.perform("get", "/rooms")
4
+ Lockme::SignedRequest.perform("get", "/rooms")
5
5
  end
6
6
  end
7
7
  end
data/lib/lockme/test.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Lockme
2
2
  module Test
3
3
  def test
4
- Lockme::Request.perform('get', '/test')
4
+ Lockme::SignedRequest.perform('get', '/test')
5
5
  end
6
6
  end
7
7
  private_constant :Test
@@ -1,3 +1,3 @@
1
1
  module Lockme
2
- VERSION = "0.1.66"
2
+ VERSION = "0.3.0"
3
3
  end
data/lib/lockme.rb CHANGED
@@ -6,6 +6,7 @@ require 'lockme/json_utils'
6
6
  require 'lockme/error'
7
7
  require 'lockme/request'
8
8
  require 'lockme/test'
9
+ require 'lockme/base'
9
10
  require 'lockme/reservation'
10
11
  require 'lockme/room'
11
12
  require 'lockme/version'
data/lockme.gemspec CHANGED
@@ -23,5 +23,6 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "bundler", "~> 1.14"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
25
  spec.add_development_dependency "minitest", "~> 5.0"
26
+ spec.add_development_dependency "simplecov"
26
27
  spec.add_dependency "httparty", "~> 0.15.6"
27
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lockme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.66
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Szyndel
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: httparty
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -82,6 +96,7 @@ files:
82
96
  - bin/console
83
97
  - bin/setup
84
98
  - lib/lockme.rb
99
+ - lib/lockme/base.rb
85
100
  - lib/lockme/configuration.rb
86
101
  - lib/lockme/error.rb
87
102
  - lib/lockme/json_utils.rb