ruby_isds 0.9.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.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.overcommit.yml +47 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +23 -0
  6. data/.ruby-gemset +1 -0
  7. data/.ruby-version +1 -0
  8. data/CODE_OF_CONDUCT.md +74 -0
  9. data/DOCS.md +133 -0
  10. data/Gemfile +6 -0
  11. data/Gemfile.lock +139 -0
  12. data/Guardfile +7 -0
  13. data/LICENSE.txt +21 -0
  14. data/README.md +160 -0
  15. data/Rakefile +6 -0
  16. data/_config.yml +1 -0
  17. data/bin/console +7 -0
  18. data/lib/ruby_isds.rb +85 -0
  19. data/lib/ruby_isds/configuration.rb +51 -0
  20. data/lib/ruby_isds/data_box.rb +33 -0
  21. data/lib/ruby_isds/data_message.rb +129 -0
  22. data/lib/ruby_isds/request.rb +105 -0
  23. data/lib/ruby_isds/response.rb +17 -0
  24. data/lib/ruby_isds/responses/body.rb +19 -0
  25. data/lib/ruby_isds/responses/data_box.rb +14 -0
  26. data/lib/ruby_isds/responses/db/body.rb +9 -0
  27. data/lib/ruby_isds/responses/db/status.rb +13 -0
  28. data/lib/ruby_isds/responses/dm/body.rb +9 -0
  29. data/lib/ruby_isds/responses/dm/status.rb +13 -0
  30. data/lib/ruby_isds/responses/message.rb +21 -0
  31. data/lib/ruby_isds/responses/messages/attachment.rb +22 -0
  32. data/lib/ruby_isds/responses/messages/collection.rb +28 -0
  33. data/lib/ruby_isds/responses/messages/delivery_info.rb +23 -0
  34. data/lib/ruby_isds/responses/messages/envelope.rb +23 -0
  35. data/lib/ruby_isds/responses/messages/event.rb +14 -0
  36. data/lib/ruby_isds/responses/status.rb +19 -0
  37. data/lib/ruby_isds/utils/errors.rb +10 -0
  38. data/lib/ruby_isds/version.rb +3 -0
  39. data/lib/ruby_isds/web_services/db_access/.gitkeep +0 -0
  40. data/lib/ruby_isds/web_services/db_access/change_isds_password.rb +21 -0
  41. data/lib/ruby_isds/web_services/db_search/check_data_box.rb +17 -0
  42. data/lib/ruby_isds/web_services/db_search/d_t_info.rb +17 -0
  43. data/lib/ruby_isds/web_services/db_search/data_box_credit_info.rb +17 -0
  44. data/lib/ruby_isds/web_services/db_search/find_data_box.rb +25 -0
  45. data/lib/ruby_isds/web_services/db_search/find_personal_data_box.rb +22 -0
  46. data/lib/ruby_isds/web_services/db_search/get_data_box_activity_status.rb +17 -0
  47. data/lib/ruby_isds/web_services/db_search/get_data_box_list.rb +20 -0
  48. data/lib/ruby_isds/web_services/db_search/isds_search_2.rb +18 -0
  49. data/lib/ruby_isds/web_services/db_search/p_d_z_info.rb +17 -0
  50. data/lib/ruby_isds/web_services/db_search/p_d_z_send_info.rb +17 -0
  51. data/lib/ruby_isds/web_services/db_search/request.rb +19 -0
  52. data/lib/ruby_isds/web_services/db_search/response.rb +13 -0
  53. data/lib/ruby_isds/web_services/dm_info/confirm_delivery.rb +17 -0
  54. data/lib/ruby_isds/web_services/dm_info/erase_message.rb +17 -0
  55. data/lib/ruby_isds/web_services/dm_info/get_delivery_info.rb +25 -0
  56. data/lib/ruby_isds/web_services/dm_info/get_list_of_received_messages.rb +26 -0
  57. data/lib/ruby_isds/web_services/dm_info/get_list_of_sent_messages.rb +26 -0
  58. data/lib/ruby_isds/web_services/dm_info/get_message_author.rb +17 -0
  59. data/lib/ruby_isds/web_services/dm_info/get_message_state_changes.rb +17 -0
  60. data/lib/ruby_isds/web_services/dm_info/get_signed_delivery_info.rb +17 -0
  61. data/lib/ruby_isds/web_services/dm_info/mark_message_as_downloaded.rb +17 -0
  62. data/lib/ruby_isds/web_services/dm_info/message_envelope_download.rb +25 -0
  63. data/lib/ruby_isds/web_services/dm_info/request.rb +19 -0
  64. data/lib/ruby_isds/web_services/dm_info/response.rb +13 -0
  65. data/lib/ruby_isds/web_services/dm_info/verify_message.rb +17 -0
  66. data/lib/ruby_isds/web_services/dm_operations/authenticate_message.rb +17 -0
  67. data/lib/ruby_isds/web_services/dm_operations/create_message.rb +30 -0
  68. data/lib/ruby_isds/web_services/dm_operations/create_multiple_messages.rb +30 -0
  69. data/lib/ruby_isds/web_services/dm_operations/message_download.rb +25 -0
  70. data/lib/ruby_isds/web_services/dm_operations/ping.rb +15 -0
  71. data/lib/ruby_isds/web_services/dm_operations/request.rb +19 -0
  72. data/lib/ruby_isds/web_services/dm_operations/resign_isds_document.rb +17 -0
  73. data/lib/ruby_isds/web_services/dm_operations/response.rb +13 -0
  74. data/lib/ruby_isds/web_services/dm_operations/signed_message_download.rb +17 -0
  75. data/lib/ruby_isds/web_services/dm_operations/signed_sent_message_download.rb +17 -0
  76. data/ruby_isds.gemspec +47 -0
  77. data/wercker.yml +12 -0
  78. metadata +303 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a999d47b522dec4ef7976e3073d3c2cfbf5d7b9b
4
+ data.tar.gz: a0966c93baf6bc5c4c25aa75fb7e04b846ecc286
5
+ SHA512:
6
+ metadata.gz: 95284c717024822d02ab7fd283cdd02fedcc2bf1bd3a4a1a7030e0cee48644d0045b9f5d76bb11c9c0ef6d1f48627a3aa4276f8d1cda865a3c7a51cd82548071
7
+ data.tar.gz: 650cb369e47ccfac8fd7c45a9abdad7e823ec5418825457ba0f6db33ff7aee542dfa1311f6e998cbcbaa85503ecfae0e12517e84f73c0e779595da6450ec5078
data/.gitignore ADDED
@@ -0,0 +1,13 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
12
+
13
+ bin/debug_console
data/.overcommit.yml ADDED
@@ -0,0 +1,47 @@
1
+ # Use this file to configure the Overcommit hooks you wish to use. This will
2
+ # extend the default configuration defined in:
3
+ # https://github.com/brigade/overcommit/blob/master/config/default.yml
4
+ #
5
+ # At the topmost level of this YAML file is a key representing type of hook
6
+ # being run (e.g. pre-commit, commit-msg, etc.). Within each type you can
7
+ # customize each hook, such as whether to only run it on certain files (via
8
+ # `include`), whether to only display output if it fails (via `quiet`), etc.
9
+ #
10
+ # For a complete list of hooks, see:
11
+ # https://github.com/brigade/overcommit/tree/master/lib/overcommit/hook
12
+ #
13
+ # For a complete list of options that you can use to customize hooks, see:
14
+ # https://github.com/brigade/overcommit#configuration
15
+ #
16
+ # Uncomment the following lines to make the configuration take effect.
17
+
18
+ #PreCommit:
19
+ # RuboCop:
20
+ # enabled: true
21
+ # on_warn: fail # Treat all warnings as failures
22
+ #
23
+ # TrailingWhitespace:
24
+ # enabled: true
25
+ # exclude:
26
+ # - '**/db/structure.sql' # Ignore trailing whitespace in generated files
27
+ #
28
+ #PostCheckout:
29
+ # ALL: # Special hook name that customizes all hooks of this type
30
+ # quiet: true # Change all post-checkout hooks to only display output on failure
31
+ #
32
+ # IndexTags:
33
+ # enabled: true # Generate a tags file with `ctags` each time HEAD changes
34
+ PreCommit:
35
+ Reek:
36
+ enabled: false
37
+
38
+ RuboCop:
39
+ enabled: true
40
+ command: ['bundle', 'exec', 'rubocop']
41
+
42
+ TrailingWhitespace:
43
+ enabled: true
44
+
45
+ BundleAudit:
46
+ enabled: true
47
+
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,23 @@
1
+ AllCops:
2
+ Exclude:
3
+ - 'ruby_isds.gemspec'
4
+ - 'spec/**/*'
5
+ TargetRubyVersion: 2.3
6
+
7
+ Style/FrozenStringLiteralComment:
8
+ Enabled: false
9
+
10
+ Metrics/LineLength:
11
+ Max: 89
12
+
13
+ Documentation:
14
+ Enabled: false
15
+
16
+ Naming/VariableName:
17
+ Enabled: false
18
+
19
+ Naming/UncommunicativeMethodParamName:
20
+ Enabled: false
21
+
22
+ Style/MultilineIfModifier:
23
+ Enabled: false
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ isds
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.4.3
@@ -0,0 +1,74 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at andrej@antas.cz. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at [http://contributor-covenant.org/version/1/4][version]
72
+
73
+ [homepage]: http://contributor-covenant.org
74
+ [version]: http://contributor-covenant.org/version/1/4/
data/DOCS.md ADDED
@@ -0,0 +1,133 @@
1
+ # Compiled useful information around ISDS
2
+
3
+ ## Data Box
4
+
5
+ ### Types
6
+
7
+ Symbol | Number | Description
8
+ ------------|---------|------------
9
+ -- | 0 | ISDS system
10
+ OVM | 10 | Standard government (state or municipality or similar) office
11
+ OVM_NOTAR | 11 | Notary (stopped being used, replaced with OVM_PFO)
12
+ OVM_EXEKUT | 12 | Executor (stopped being used, replaced with OVM_PFO)
13
+ OVM_REQ | 13 | Subsidiary office with OVM status assigned on request (section 6 and 7 of act)
14
+ OVM_FO | 14 | Natural person with OVM status (without identification number)
15
+ OVM_PFO | 15 | Natural person in business with OVM status (e.g. notary or executor)
16
+ OVM_PO | 16 | Juridical person with OVM status (arisen from previously existing PO or PO_REQ)
17
+ PO | 20 | Standard commercial organization (in trade registry)
18
+ PO_ZAK | 21 | Other organization based on law (stopped being used, replaced with PO)
19
+ PO_REQ | 22 | Organization with box assigned on request
20
+ PFO | 30 | Person in business
21
+ PFO_ADVOK | 31 | Lawyer
22
+ PFO_DANPOR | 32 | Tax consultant
23
+ PFO_INSSPR | 33 | Administrator of insolvency
24
+ PFO_AUDITOR | 34 | Statutory auditor
25
+ FO | 40 | Standard person
26
+
27
+ ### States
28
+
29
+ Value | Description
30
+ -----------|-------------
31
+ 0 or empty | Error occurred while retrieving box state
32
+ 1 | Box is accessible.
33
+ 2 | Temporarily inaccessible (on owner's request)
34
+ 3 | Not yet active
35
+ 4 | Permanently inaccessible
36
+ 5 | Box has been removed
37
+ 6 | Temporarily inaccessible (by law)
38
+
39
+
40
+
41
+ ## Data Message
42
+
43
+ Missing `@dmType` attribute means noncommercial standard message.
44
+
45
+ ### Commercial messages
46
+
47
+ #### @dmType
48
+
49
+ Value | Meaning
50
+ -------|----------
51
+ I | Commercial message offering paying the response instead of the recipient (so called initiatory message)
52
+ K | Commercial message
53
+ O | Commercial message as a response paid by sender of initiatory message
54
+ V | Noncommercial standard message
55
+
56
+ ### Incomming or downloaded sent
57
+
58
+ #### @dmType
59
+
60
+ Value | Meaning
61
+ -------|---------
62
+ A | Subsidized initiatory commercial message which can pay a response
63
+ B | Subsidized initiatory commercial message which has already paid the response
64
+ C | Subsidized initiatory commercial message where the response offer has expired
65
+ D | Externally subsidized commercial messsage
66
+ E | Prepaid stamp
67
+ G | Paid by a sponsor
68
+ I | Initiatory commercial message which can pay a response
69
+ K | Commercial message paid by sender
70
+ O | Commercial message as a response paid by sended of initiatory message
71
+ X | Initiatory commercial message where the response offer has expired
72
+ Y | Initiatory commercial message which has already paid the response
73
+ Z | Limitedly subsidized commercial message
74
+
75
+ ### States
76
+
77
+ Value | Meaning
78
+ -------|-------------------------------------------------------------------------
79
+ 1 | Message has been put into ISDS
80
+ 2 | Message stamped by TSA
81
+ 3 | Message included viruses, infected document has been removed
82
+ 4 | Message delivered (dmDeliveryTime stored)
83
+ 5 | Message delivered through fiction (dmAcceptanceTime stored)
84
+ 6 | Message delivered by user log-in or user explicit request (in case of commercial message) (dmAcceptanceTime stored)
85
+ 7 | Message has been read by user
86
+ 8 | Message could not been delivered (e.g. recipient box has been made inaccessible meantime)
87
+ 9 | Message content deleted (thus can not be obtained on-line)
88
+ 10 | Message saved in long term storage (this is optional commercial service)
89
+
90
+ ### System messages
91
+
92
+ There exists special message type initiated by ISDS (i.e. from system, not
93
+ from other box). Such message has reserved from-box `aaaaaaa` (7 × `a`) value
94
+ and sender type `0` and it always contains a document of type HTML and
95
+ sometimes a document of type XML. The XML one provides structured reason of
96
+ sending the system message, the HTML one is a human-readable form. There are
97
+ following cases defined:
98
+
99
+ Case | Meaning
100
+ -------|--------
101
+ 1 | Outgoing message contained malicious code.
102
+ 2 | You, administrator, deleted other user.
103
+ 3 | Outgoing message could not been delivered because recipient box had been made inaccessible retrospectively.
104
+ 4 | Outgoing commercial message has been deleted before accepting it by the recipient.
105
+ 5 | User has been added to your box.
106
+ 6 | User permissions has been changed.
107
+ 7 | Box has been made temporary inaccessible on court desicion (e.g. user has been found eligable unresponsible).
108
+ 8 | Box has been made temporary inaccessible on box owner or administrator request.
109
+ 9 | Box has been made permanently inaccessible because organization does not exist anymore.
110
+ 10 | Box has been made permanently inaccessible because owner has died.
111
+ 11 | Personal data of box owner does not match central register.
112
+
113
+ The XML document has following structures:
114
+
115
+ SystemMessage – Attribute `type` is a number of case 1, or 4.
116
+ - dmID – message ID
117
+ - dbIDRecipient – recipient box ID
118
+
119
+ SystemMessage – Attribute `type` is a number of case 2, 5, or 6.
120
+ - userID – user ID
121
+ - userName – user proper name
122
+
123
+ SystemMessage – Attribute `type` is a number of case 3.
124
+ - dmID – undeliverable message ID
125
+ - dbIDRecipient – inaccessible recipient box ID
126
+ - dbName – recipent box name
127
+ - undelivDate – date when the box was made inaccessible
128
+ - dmAnnotation – message subject
129
+ - dmSenderRefNumber – sender's reference number of the message
130
+ - dmSenderIdent – sender's identity number of the message
131
+
132
+ SystemMessage – Attribute `type` is a number of case 7, 8, 9, 10, or 11.
133
+ - No elements are defined.
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in ruby_isds.gemspec
6
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,139 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ruby_isds (0.9.0)
5
+ activesupport
6
+ nokogiri
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ activesupport (5.2.0)
12
+ concurrent-ruby (~> 1.0, >= 1.0.2)
13
+ i18n (>= 0.7, < 2)
14
+ minitest (~> 5.1)
15
+ tzinfo (~> 1.1)
16
+ addressable (2.5.2)
17
+ public_suffix (>= 2.0.2, < 4.0)
18
+ ast (2.4.0)
19
+ childprocess (0.9.0)
20
+ ffi (~> 1.0, >= 1.0.11)
21
+ coderay (1.1.2)
22
+ concurrent-ruby (1.0.5)
23
+ crack (0.4.3)
24
+ safe_yaml (~> 1.0.0)
25
+ diff-lcs (1.3)
26
+ docile (1.3.1)
27
+ ffi (1.9.25)
28
+ formatador (0.2.5)
29
+ guard (2.14.2)
30
+ formatador (>= 0.2.4)
31
+ listen (>= 2.7, < 4.0)
32
+ lumberjack (>= 1.0.12, < 2.0)
33
+ nenv (~> 0.1)
34
+ notiffany (~> 0.0)
35
+ pry (>= 0.9.12)
36
+ shellany (~> 0.0)
37
+ thor (>= 0.18.1)
38
+ guard-compat (1.2.1)
39
+ guard-rspec (4.7.3)
40
+ guard (~> 2.1)
41
+ guard-compat (~> 1.1)
42
+ rspec (>= 2.99.0, < 4.0)
43
+ hashdiff (0.3.7)
44
+ i18n (1.0.1)
45
+ concurrent-ruby (~> 1.0)
46
+ iniparse (1.4.4)
47
+ jaro_winkler (1.5.1)
48
+ json (2.1.0)
49
+ listen (3.1.5)
50
+ rb-fsevent (~> 0.9, >= 0.9.4)
51
+ rb-inotify (~> 0.9, >= 0.9.7)
52
+ ruby_dep (~> 1.2)
53
+ lumberjack (1.0.13)
54
+ method_source (0.9.0)
55
+ mini_portile2 (2.3.0)
56
+ minitest (5.11.3)
57
+ nenv (0.3.0)
58
+ nokogiri (1.8.2)
59
+ mini_portile2 (~> 2.3.0)
60
+ notiffany (0.1.1)
61
+ nenv (~> 0.1)
62
+ shellany (~> 0.0)
63
+ overcommit (0.45.0)
64
+ childprocess (~> 0.6, >= 0.6.3)
65
+ iniparse (~> 1.4)
66
+ parallel (1.12.1)
67
+ parser (2.5.1.0)
68
+ ast (~> 2.4.0)
69
+ powerpack (0.1.2)
70
+ pry (0.11.3)
71
+ coderay (~> 1.1.0)
72
+ method_source (~> 0.9.0)
73
+ public_suffix (3.0.2)
74
+ rainbow (3.0.0)
75
+ rake (10.5.0)
76
+ rb-fsevent (0.10.3)
77
+ rb-inotify (0.9.10)
78
+ ffi (>= 0.5.0, < 2)
79
+ rspec (3.7.0)
80
+ rspec-core (~> 3.7.0)
81
+ rspec-expectations (~> 3.7.0)
82
+ rspec-mocks (~> 3.7.0)
83
+ rspec-core (3.7.1)
84
+ rspec-support (~> 3.7.0)
85
+ rspec-expectations (3.7.0)
86
+ diff-lcs (>= 1.2.0, < 2.0)
87
+ rspec-support (~> 3.7.0)
88
+ rspec-mocks (3.7.0)
89
+ diff-lcs (>= 1.2.0, < 2.0)
90
+ rspec-support (~> 3.7.0)
91
+ rspec-support (3.7.1)
92
+ rubocop (0.57.2)
93
+ jaro_winkler (~> 1.5.1)
94
+ parallel (~> 1.10)
95
+ parser (>= 2.5)
96
+ powerpack (~> 0.1)
97
+ rainbow (>= 2.2.2, < 4.0)
98
+ ruby-progressbar (~> 1.7)
99
+ unicode-display_width (~> 1.0, >= 1.0.1)
100
+ ruby-progressbar (1.9.0)
101
+ ruby_dep (1.5.0)
102
+ safe_yaml (1.0.4)
103
+ shellany (0.0.1)
104
+ simplecov (0.16.1)
105
+ docile (~> 1.1)
106
+ json (>= 1.8, < 3)
107
+ simplecov-html (~> 0.10.0)
108
+ simplecov-html (0.10.2)
109
+ thor (0.20.0)
110
+ thread_safe (0.3.6)
111
+ timecop (0.9.1)
112
+ tzinfo (1.2.5)
113
+ thread_safe (~> 0.1)
114
+ unicode-display_width (1.4.0)
115
+ vcr (3.0.3)
116
+ webmock (3.4.2)
117
+ addressable (>= 2.3.6)
118
+ crack (>= 0.3.2)
119
+ hashdiff
120
+
121
+ PLATFORMS
122
+ ruby
123
+
124
+ DEPENDENCIES
125
+ bundler
126
+ guard-rspec
127
+ overcommit
128
+ pry
129
+ rake (~> 10.0)
130
+ rspec (~> 3.0)
131
+ rubocop (~> 0.49)
132
+ ruby_isds!
133
+ simplecov (~> 0.14)
134
+ timecop
135
+ vcr (~> 3.0)
136
+ webmock (~> 3.0)
137
+
138
+ BUNDLED WITH
139
+ 1.16.2