bamboozled 0.0.7 → 0.1.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: 8f769aff89651d9999ec0a648411f64d02e0090e
4
- data.tar.gz: 6ae8d5acd58d839a6a81109b342ae86b3e6361fd
3
+ metadata.gz: f8a9416ada8eceac7ea3e04dff8fc289b33a49c6
4
+ data.tar.gz: a59005a19d6941995bc4d896b82529ebe9ebcefb
5
5
  SHA512:
6
- metadata.gz: 599ff90163cbb09bd46757e2ae6d38adcddf8aab803459acbf25128c685fb401b69f3c0f58bf42422b38003ef2d5c539d89f86b591e826b42b563d23f0b192bc
7
- data.tar.gz: ade50b34d1f0289eef1b9faaf64033ac5d602dc7c1cfda6946b75c567a52e5323f319959c810d8cd4771534c473e515ce49dfdd68e5f1bde4cde29bba48774d3
6
+ metadata.gz: e1d43d4bc115a83e706c8d58998488287b938f7bd82ff9074964b6d844fbae029accf3f7d73f5e2f1e9a4a826b74f4697865cb5c860f96baf1602a858ef257a1
7
+ data.tar.gz: 8e9e7b24da7477331518467fae8a88e35143a430fa2e01ebddd0f61e4d9ea340f61059baa5235bc76f8d5bd37175fa7043644347c203f615887cc80dc886c2e6
data/.gitignore CHANGED
@@ -1,14 +1,36 @@
1
- # rdoc generated
2
- rdoc
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /spec/examples.txt
9
+ /test/tmp/
10
+ /test/version_tmp/
11
+ /tmp/
3
12
 
4
- # yard generated
5
- doc
6
- .yardoc
13
+ ## Specific to RubyMotion:
14
+ .dat*
15
+ .repl_history
16
+ build/
7
17
 
8
- # bundler
9
- .bundle
18
+ ## Documentation cache and generated files:
19
+ /.yardoc/
20
+ /_yardoc/
21
+ /doc/
22
+ /rdoc/
10
23
 
11
- # jeweler generated
12
- pkg
24
+ ## Environment normalisation:
25
+ /.bundle/
26
+ /vendor/bundle
27
+ /lib/bundler/man/
13
28
 
14
- *.gem
29
+ # for a library or gem, you might want to ignore these files since the code is
30
+ # intended to run in multiple environments; otherwise, check them in:
31
+ Gemfile.lock
32
+ .ruby-version
33
+ .ruby-gemset
34
+
35
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
36
+ .rvmrc
@@ -0,0 +1,2 @@
1
+ ruby:
2
+ config_file: .rubocop.yml
@@ -0,0 +1,37 @@
1
+ # require: rubocop-rspec
2
+
3
+ Rails:
4
+ Enabled: false
5
+
6
+ Style/AlignHash:
7
+ Enabled: true
8
+ EnforcedHashRocketStyle: table
9
+ EnforcedColonStyle: table
10
+
11
+ Style/CollectionMethods:
12
+ Enabled: true
13
+
14
+ Style/CommentAnnotation:
15
+ Enabled: false
16
+
17
+ Style/Documentation:
18
+ Enabled: false
19
+
20
+ Style/MethodCalledOnDoEndBlock:
21
+ Enabled: true
22
+
23
+ Style/OptionHash:
24
+ Enabled: true
25
+
26
+ Style/SingleLineBlockParams:
27
+ Enabled: false
28
+
29
+ Style/StringLiterals:
30
+ Enabled: true
31
+ EnforcedStyle: double_quotes
32
+
33
+ Style/SymbolArray:
34
+ Enabled: true
35
+
36
+ RSpec/FilePath:
37
+ Enabled: false
@@ -1,3 +1,19 @@
1
1
  language: ruby
2
+ sudo: false
3
+ cache: bundler
2
4
  rvm:
3
5
  - 2.0.0
6
+ - 2.1
7
+ - 2.2
8
+ - ruby-head
9
+ - jruby-head
10
+ matrix:
11
+ fast_finish: true
12
+ allow_failures:
13
+ - rvm: ruby-head
14
+ - rvm: jruby-head
15
+ before_install: gem update --remote bundler && bundle --version
16
+ install:
17
+ - bundle install --retry=3
18
+ script:
19
+ - bundle exec rspec
@@ -0,0 +1,27 @@
1
+ # Changelog
2
+
3
+ ## master (unreleased)
4
+
5
+ ### New Features
6
+
7
+ ### Changes
8
+
9
+ ### Bug Fixes
10
+
11
+ ## 0.1.0 (2016-06-14)
12
+
13
+ ### New Features
14
+
15
+ * New method `Employee#add` allows client to create new employees. ([@kylefdoherty][])
16
+ * New method `Employee#update` allows client to update new employees. ([@kylefdoherty][])
17
+
18
+ ### Changes
19
+
20
+ ### Bug Fixes
21
+
22
+ * Added missing documentation for `Employee#add`. ([@mjording][])
23
+
24
+ [@markrickert]: https://github.com/markrickert
25
+ [@enriikke]: https://github.com/Enriikke
26
+ [@kylefdoherty]: https://github.com/kylefdoherty
27
+ [@mjording]: https://github.com/mjording
@@ -0,0 +1,91 @@
1
+ # Contributing
2
+
3
+ Contributions are always welcome! If you discover issues or have ideas for
4
+ improvements, report them or submit pull requests. Please follow the guidelines
5
+ below when doing so.
6
+
7
+ ## Issue Reporting
8
+
9
+ * Make sure the issue has not already been reported.
10
+ * Check that the issue has not already been fixed in `master`.
11
+ * Open a [new issue](https://github.com/Skookum/bamboozled/issues/new) with a
12
+ clear and concise description of the problem.
13
+ * Include any relevant code or error output in the issue summary.
14
+
15
+ ## Pull Request
16
+
17
+ * Fork the project.
18
+ * Create a new branch for your feature/bug.
19
+ * Get coding!
20
+ * Write good tests. See [Testing](#testing).
21
+ * Follow the same coding conventions as the rest of the project. See [Coding Style](#coding-style).
22
+ * Squash related commits when needed and write good commit messages.
23
+ * Add an entry to the [Changelog](CHANGELOG.md) accordingly. See [Changelog Entries](#changelog-entries).
24
+ * Make sure the test suite is passing and that there are no style violations
25
+ before pushing your code.
26
+ * Pull requests should be related to a single subject.
27
+ * Open a pull request until you are happy with your contribution.
28
+
29
+ ### Testing
30
+
31
+ Always include tests with you code. Bamboozled uses [RSpec](https://github.com/rspec/rspec)
32
+ for testing. We like to follow the recommendations listed in [Better Specs](http://betterspecs.org/).
33
+
34
+ ```sh
35
+ # Run the entire test suite.
36
+ bundle exec rspec
37
+
38
+ # Run specific test files.
39
+ bundle exec rspec spec/lib/bamboozled/lib/employee_spec.rb
40
+ ```
41
+
42
+ Alternatively, the `Gemfile` includes [Guard](https://github.com/guard/guard), a
43
+ file watcher that will automatically run `rspec` when a file is saved. This is
44
+ not a requirement but we encourage running `bundle exec guard` before starting
45
+ development so that you are able to catch failed tests as you code away :-).
46
+
47
+ ### Coding Style
48
+
49
+ Bamboozled leverages [Hound](https://houndci.com/) to maintain the code style
50
+ consistent. Hound uses [rubocop](https://github.com/bbatsov/rubocop), which you
51
+ can run locally:
52
+
53
+ ```sh
54
+ # Run for the entire codebase.
55
+ bundle exec rubocop
56
+
57
+ # Run for a specific file.
58
+ bundle exec rubocop lib/bamboozled.rb
59
+ ```
60
+
61
+ Just like with tests, `guard` will automatically run `rubocop` when a file is
62
+ saved (unless a test fails). Once again, we would like to encourage running
63
+ `bundle exec guard` before starting development.
64
+
65
+ Hound will comment on pull requests with style violations, and pull requests
66
+ won't be merged until violations are corrected.
67
+
68
+ ### Changelog Entries
69
+
70
+ * Use [Markdown syntax](http://daringfireball.net/projects/markdown/syntax).
71
+ * The entry line should start with a bullet point `*`.
72
+ * If the change has a related GitHub issue, include a link to it as
73
+ `[#1](https://github.com/Skookum/bamboozled/issues/1):`.
74
+ * Provide a brief summary of the change.
75
+ * At the end of the entry, add an implicit link to your GitHub user page as `([@username][])`.
76
+ * If this is your first contribution, add a link definition for the implicit
77
+ link to the bottom of the changelog as `[@username]:
78
+ https://github.com/username`.
79
+
80
+ Here are a few examples:
81
+
82
+ ```
83
+ * [#3](https://github.com/Skookum/bamboozled/issues/3): Added `HashWithIndifferentAccess` to to fix inconsistencies when accessing data. ([@markrickert][])
84
+ * New method `Employee#add` allows client to create new employees. ([@kylefdoherty][])
85
+ ```
86
+
87
+ ---
88
+
89
+ <p align="center">
90
+ <img src="logos/skookum_mark_black.png" alt="Skookum" width="100" />
91
+ </p>
data/Gemfile CHANGED
@@ -1,10 +1,15 @@
1
1
  source "http://rubygems.org"
2
-
3
2
  gemspec
4
3
 
4
+ group :test do
5
+ gem "coveralls", require: false
6
+ end
7
+
5
8
  group :development, :test do
6
- gem 'bundler', '>= 1.6.2'
7
- gem 'webmock'
8
- gem 'turn'
9
- gem 'rake'
9
+ gem "listen", "3.0.7"
10
+ gem "guard"
11
+ gem "guard-rspec", require: false
12
+ gem "rubocop", require: false
13
+ gem "rubocop-rspec", require: false
14
+ gem "guard-rubocop", require: false
10
15
  end
@@ -0,0 +1,21 @@
1
+ group :tdd, halt_on_fail: true do
2
+ guard :rspec, cmd: "bundle exec rspec" do
3
+ require "guard/rspec/dsl"
4
+ dsl = Guard::RSpec::Dsl.new(self)
5
+
6
+ # RSpec files
7
+ rspec = dsl.rspec
8
+ watch(rspec.spec_helper) { rspec.spec_dir }
9
+ watch(rspec.spec_support) { rspec.spec_dir }
10
+ watch(rspec.spec_files)
11
+
12
+ # Ruby files
13
+ ruby = dsl.ruby
14
+ dsl.watch_spec_files_for(ruby.lib_files)
15
+ end
16
+
17
+ guard :rubocop, all_on_start: false, cmd: "rubocop --require rubocop-rspec" do
18
+ watch(%r{.+\.rb$}) { |m| m[0] }
19
+ watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
20
+ end
21
+ end
@@ -0,0 +1,160 @@
1
+ [![Gem Version](https://img.shields.io/gem/v/bamboozled.svg)][rubygems]
2
+ [![Build Status](https://img.shields.io/travis/Skookum/bamboozled.svg)][travis]
3
+ [![Code Climate](https://img.shields.io/codeclimate/github/Skookum/bamboozled.svg)][codeclimate]
4
+ [![Coverage Status](https://img.shields.io/coveralls/Skookum/bamboozled.svg)][coveralls]
5
+ [![Inline Docs](http://inch-ci.org/github/Skookum/bamboozled.svg?style=shields)][inchdocs]
6
+
7
+ [rubygems]: https://rubygems.org/gems/bamboozled
8
+ [travis]: https://travis-ci.org/Skookum/bamboozled
9
+ [codeclimate]: https://codeclimate.com/github/Skookum/bamboozled
10
+ [coveralls]: https://coveralls.io/r/Skookum/bamboozled
11
+ [inchdocs]: http://inch-ci.org/github/Skookum/bamboozled
12
+
13
+ ---
14
+
15
+ <p align="center">
16
+ <img src="logos/bamboozled_logo_black.png" alt="Bamboozled" />
17
+ </p>
18
+
19
+ Bamboozled is a Ruby wrapper for the [BambooHR API](http://www.bamboohr.com/api/documentation/).
20
+
21
+ ## Versioning
22
+
23
+ Bamboozled follows [Semantic Versioning 2.0.0](http://semver.org/). Make sure to
24
+ always bound the major version when installing if you want to avoid breaking
25
+ changes.
26
+
27
+ ## Documentation
28
+
29
+ This documentation tracks the latest changes in the `master` branch of this
30
+ repo. Some of the features described might not be available in older versions of
31
+ the gem (including the current stable version). Please consult the relevant git
32
+ tag (e.g. v0.0.7) if you need documentation for a specific Bamboozled version.
33
+
34
+ ## Installation
35
+
36
+ Bamboozled's installation follows the standard gem installation process:
37
+
38
+ ```sh
39
+ $ gem install bamboozled
40
+ ```
41
+
42
+ If you prefer to install Bamboozled through `bundler` then add it to your
43
+ `Gemfile`:
44
+
45
+ ```ruby
46
+ gem "bamboozled"
47
+ ```
48
+
49
+ ## Usage
50
+
51
+ Create a `client` and provide it with your BambooHR subdomain and an API key:
52
+
53
+ ```ruby
54
+ # Create the client:
55
+ client = Bamboozled.client(subdomain: "your_subdomain", api_key: "your_api_key")
56
+ ```
57
+
58
+ > TIP! Create an API key by logging into your BambooHR account, then click your
59
+ > image in the upper right corner and select "API Keys".
60
+
61
+ ### Employee related data:
62
+
63
+ You can pass an array of fields to `all` or `:all` to get all fields your user
64
+ is allowed to access. Because BambooHR's API doesn't allow for specifying fields
65
+ on the `/employees/directory` API endpoint, passing a list of fields to retrieve
66
+ will be signifigantly slower than getting just the default fields since the gem
67
+ will get the directory of employees, then request the data for each individual
68
+ employee resulting in `employees.count + 1` API calls.
69
+
70
+ ```ruby
71
+ # Returns an array of all employees
72
+ client.employee.all # Gets all employees with default fields
73
+ client.employee.all(:all) # Gets all fields for all employees
74
+ client.employee.all(["hireDate", "displayName"])
75
+ client.employee.all("hireDate,displayName")
76
+
77
+ # Get the employee records which have changed since a given date
78
+ client.employee.last_changed("2015-01-01T00:00:00-08:00", :updated)
79
+ client.employee.last_changed("2015-01-01T00:00:00-08:00", :inserted)
80
+ client.employee.last_changed("2015-01-01T00:00:00-08:00", :deleted)
81
+ client.employee.last_changed("2015-01-01T00:00:00-08:00") # Return all changes
82
+
83
+ # Returns a hash of a single employee
84
+ client.employee.find(employee_id, fields = nil)
85
+
86
+ # Adds an employee
87
+ client.employee.add(employee_details_hash)
88
+
89
+ # Tabular employee data
90
+ client.employee.job_info(employee_id)
91
+ client.employee.employment_status(employee_id)
92
+ client.employee.compensation(employee_id)
93
+ client.employee.dependents(employee_id)
94
+ client.employee.contacts(employee_id)
95
+
96
+ # Time off estimate for employee. Requires end date in Date or Time format or YY-MM-DD string.
97
+ client.employee.time_off_estimate(employee_id, end_date)
98
+
99
+ # Photos for an employee
100
+ client.employee.photo_url(employee_work_email)
101
+ client.employee.photo_url(employee_id)
102
+ client.employee.photo_binary(employee_id)
103
+ ```
104
+
105
+ ### Time off data
106
+
107
+ ```ruby
108
+ # Get time off requests filtered by a number of parameters
109
+ # :id - the ID of the time off request
110
+ # :action -
111
+ # :employeeId - the ID of the employee you're looking for
112
+ # :start - filter start date
113
+ # :end - filter end date
114
+ # :type - type of time off request
115
+ # :status - must be one or more of the following: approved denied superceded requested canceled
116
+ client.time_off.requests(:employeeId: employee_id, start: Time.now)
117
+
118
+ # See who is out when.
119
+ client.time_off.whos_out(Time.now, "2014-12-31")
120
+ ```
121
+
122
+ ### Reports
123
+
124
+ ```ruby
125
+ # Find a report by its number
126
+ client.report.find(report_number, format = "JSON", fd = true)
127
+ ```
128
+
129
+ ### Metadata
130
+
131
+ ```ruby
132
+ # Get fields
133
+ client.meta.fields
134
+ # Get lists
135
+ client.meta.lists
136
+ # Get tables
137
+ client.meta.tables
138
+ # Get users
139
+ # Note: this is all uses in the system, whereas client.employee.all only gets active employees
140
+ client.meta.users
141
+ ```
142
+
143
+ ## Contributing
144
+
145
+ Thank you for contributing! We always welcome bug reports and/or pull requests.
146
+ Please take the time to go through our [contribution guidelines](CONTRIBUTING.md).
147
+
148
+ Special thanks to all the awesome people who have helped make this gem better.
149
+ You can see a list of them [here](https://github.com/Skookum/bamboozled/graphs/contributors).
150
+
151
+ ## License
152
+
153
+ This project is licensed under the terms of the MIT license. See the
154
+ [LICENSE](/LICENSE) file.
155
+
156
+ ---
157
+
158
+ <p align="center">
159
+ <img src="logos/skookum_mark_black.png" alt="Skookum" width="100" />
160
+ </p>