groupme-api 0.7.1 → 0.9.3

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
- SHA1:
3
- metadata.gz: a4512cb454df4cf7c91d422681eaeea2b7148461
4
- data.tar.gz: 808a07bcf9f00489749be865c85cbcf3d933c736
2
+ SHA256:
3
+ metadata.gz: 1a0a40683e4f25c0d66f4865ee278e1e2570651e21cb324d71cec48d033fbe0f
4
+ data.tar.gz: 4a321e8fae697f8197f7bc7130dcec6db6ea8175568da760b6f42c99368e5ab1
5
5
  SHA512:
6
- metadata.gz: 4ad9f65fc24468b6401025d7657c9f28b49d3814367b5df80553d4e08d0e420df4aeea81793eecec2a56f43197f9e7af1e2600578979c1aee9a5696cd110ec35
7
- data.tar.gz: dd8e88f22178a584797e8382b520cf1f4996fe52bafeff73ebd3d9ff82f7580252a7297eb75f3b97847167aff6073e2e3375c5325022bcb2a7bca068bd3c6bdc
6
+ metadata.gz: 22b6310c48cd75a4e2e594691bcb9d61538bd42cc02726636faa488478ed77759f30dc7e18ffd3c5dd6c242d1b2c409a47730d340e00a1dfa08799025ca8a3cf
7
+ data.tar.gz: f17b39de844117a203df4ea0c318ef431b37f4fa3d55a5c22505d1a5eb5de00277380f3f64a88b04630c4ae34d163cb260a0776757f01fe0b7216ca53cde1882
data/Gemfile CHANGED
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  source 'https://rubygems.org'
4
2
 
5
3
  gemspec
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # GroupMe Ruby Gem (BETA)
2
2
  [![Build Status](https://travis-ci.org/kinnell/groupme-ruby-gem.svg?branch=master)](https://travis-ci.org/kinnell/groupme-ruby-gem)
3
3
  [![Coverage Status](https://coveralls.io/repos/github/kinnell/groupme-ruby-gem/badge.svg?branch=master)](https://coveralls.io/github/kinnell/groupme-ruby-gem?branch=master)
4
+ [![Known Vulnerabilities](https://snyk.io/test/github/kinnell/groupme-ruby-gem/badge.svg?targetFile=Gemfile.lock)](https://snyk.io/test/github/kinnell/groupme-ruby-gem?targetFile=Gemfile.lock)
4
5
 
5
6
  A Ruby wrapper for [GroupMe REST API (v3)](https://dev.groupme.com/docs/v3).
6
7
 
@@ -12,11 +12,6 @@ module GroupMe
12
12
  @client = HTTPClient.new(base_url: API_BASE_URL, default_header: API_DEFAULT_HEADER)
13
13
  end
14
14
 
15
- def request(method, path, query: {}, body: nil)
16
- response = @client.request(method, path, { token: @access_token }.merge(query), body&.to_json)
17
- [parse_response_body(response), response.status]
18
- end
19
-
20
15
  def get(path, query = {})
21
16
  request(:get, path, query: query)
22
17
  end
@@ -29,14 +24,18 @@ module GroupMe
29
24
  request(:delete, path, query: query)
30
25
  end
31
26
 
27
+ def request(method, path, query: {}, body: nil)
28
+ response = @client.request(method, path, { token: @access_token }.merge(query), body&.to_json)
29
+ [parse_response_body(response), response.status]
30
+ end
31
+
32
32
  private
33
33
 
34
34
  def parse_response_body(response)
35
35
  return response.reason unless response.ok?
36
+ return if blank?(response.body)
36
37
 
37
- unless blank?(response.body)
38
- JSON.parse(response.body, symbolize_names: true).fetch(:response)
39
- end
38
+ JSON.parse(response.body, symbolize_names: true).fetch(:response)
40
39
  end
41
40
 
42
41
  def blank?(string)
@@ -44,11 +43,11 @@ module GroupMe
44
43
  end
45
44
  end
46
45
 
47
- def self.client
48
- @client ||= Client.new
49
- end
50
-
51
46
  def self.client=(client)
52
47
  @client = client
53
48
  end
49
+
50
+ def self.client
51
+ @client ||= Client.new
52
+ end
54
53
  end
@@ -13,19 +13,23 @@ module GroupMe
13
13
  end
14
14
 
15
15
  def groups_per_page
16
- @groups_per_page || API_MAX_GROUPS_PER_PAGE
16
+ @groups_per_page ||= API_MAX_GROUPS_PER_PAGE
17
17
  end
18
18
  end
19
19
 
20
- def self.configuration
21
- @configuration ||= Configuration.new
20
+ def self.configure
21
+ yield(configuration)
22
+ end
23
+
24
+ def self.reset_configuration!
25
+ @configuration = Configuration.new
22
26
  end
23
27
 
24
28
  def self.configuration=(configuration)
25
29
  @configuration = configuration
26
30
  end
27
31
 
28
- def self.configure
29
- yield(configuration)
32
+ def self.configuration
33
+ @configuration ||= Configuration.new
30
34
  end
31
35
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GroupMe
4
+ module Core
5
+ def self.root
6
+ Pathname.new(__dir__)
7
+ end
8
+ end
9
+
10
+ extend Core
11
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GroupMe
4
- VERSION = '0.7.1'
4
+ VERSION = '0.9.3'
5
5
  end
data/lib/groupme-api.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'groupme'
3
+ require_relative 'groupme'
data/lib/groupme.rb CHANGED
@@ -2,16 +2,15 @@
2
2
 
3
3
  require 'httpclient'
4
4
  require 'json'
5
+ require 'pathname'
5
6
 
6
- require 'groupme/client'
7
- require 'groupme/configuration'
8
- require 'groupme/errors'
9
- require 'groupme/group'
10
- require 'groupme/image_client'
11
- require 'groupme/version'
7
+ require_relative 'groupme/core'
8
+ require_relative 'groupme/client'
9
+ require_relative 'groupme/configuration'
10
+ require_relative 'groupme/errors'
11
+ require_relative 'groupme/group'
12
+ require_relative 'groupme/image_client'
13
+ require_relative 'groupme/version'
12
14
 
13
15
  module GroupMe
14
- def self.reset!
15
- @configuration = Configuration.new
16
- end
17
16
  end
data/lib/groupme_api.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'groupme'
3
+ require_relative 'groupme'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: groupme-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kinnell Shah
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-13 00:00:00.000000000 Z
11
+ date: 2021-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
@@ -30,14 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.16'
33
+ version: '2.1'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.16'
40
+ version: '2.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: byebug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '11.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '11.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: coveralls
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,34 @@ dependencies:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: gem-release
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.16'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.16'
55
97
  - !ruby/object:Gem::Dependency
56
98
  name: guard-rspec
57
99
  requirement: !ruby/object:Gem::Requirement
@@ -66,112 +108,109 @@ dependencies:
66
108
  - - "~>"
67
109
  - !ruby/object:Gem::Version
68
110
  version: '4.7'
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard-rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.0'
69
125
  - !ruby/object:Gem::Dependency
70
126
  name: rake
71
127
  requirement: !ruby/object:Gem::Requirement
72
128
  requirements:
73
129
  - - "~>"
74
130
  - !ruby/object:Gem::Version
75
- version: '10.0'
131
+ version: '13.0'
76
132
  type: :development
77
133
  prerelease: false
78
134
  version_requirements: !ruby/object:Gem::Requirement
79
135
  requirements:
80
136
  - - "~>"
81
137
  - !ruby/object:Gem::Version
82
- version: '10.0'
138
+ version: '13.0'
83
139
  - !ruby/object:Gem::Dependency
84
140
  name: rspec
85
141
  requirement: !ruby/object:Gem::Requirement
86
142
  requirements:
87
143
  - - "~>"
88
144
  - !ruby/object:Gem::Version
89
- version: '3.8'
145
+ version: '3.9'
90
146
  type: :development
91
147
  prerelease: false
92
148
  version_requirements: !ruby/object:Gem::Requirement
93
149
  requirements:
94
150
  - - "~>"
95
151
  - !ruby/object:Gem::Version
96
- version: '3.8'
152
+ version: '3.9'
97
153
  - !ruby/object:Gem::Dependency
98
154
  name: simplecov
99
155
  requirement: !ruby/object:Gem::Requirement
100
156
  requirements:
101
157
  - - "~>"
102
158
  - !ruby/object:Gem::Version
103
- version: '0.15'
159
+ version: '0.16'
104
160
  type: :development
105
161
  prerelease: false
106
162
  version_requirements: !ruby/object:Gem::Requirement
107
163
  requirements:
108
164
  - - "~>"
109
165
  - !ruby/object:Gem::Version
110
- version: '0.15'
166
+ version: '0.16'
111
167
  - !ruby/object:Gem::Dependency
112
168
  name: vcr
113
169
  requirement: !ruby/object:Gem::Requirement
114
170
  requirements:
115
171
  - - "~>"
116
172
  - !ruby/object:Gem::Version
117
- version: '4.0'
173
+ version: '5.0'
118
174
  type: :development
119
175
  prerelease: false
120
176
  version_requirements: !ruby/object:Gem::Requirement
121
177
  requirements:
122
178
  - - "~>"
123
179
  - !ruby/object:Gem::Version
124
- version: '4.0'
180
+ version: '5.0'
125
181
  - !ruby/object:Gem::Dependency
126
182
  name: webmock
127
183
  requirement: !ruby/object:Gem::Requirement
128
184
  requirements:
129
185
  - - "~>"
130
186
  - !ruby/object:Gem::Version
131
- version: '3.4'
187
+ version: '3.8'
132
188
  type: :development
133
189
  prerelease: false
134
190
  version_requirements: !ruby/object:Gem::Requirement
135
191
  requirements:
136
192
  - - "~>"
137
193
  - !ruby/object:Gem::Version
138
- version: '3.4'
139
- description:
140
- email: kinnell@gmail.com
194
+ version: '3.8'
195
+ description: A Ruby wrapper for GroupMe REST API (v3)
196
+ email:
197
+ - kinnell@gmail.com
141
198
  executables: []
142
199
  extensions: []
143
200
  extra_rdoc_files: []
144
201
  files:
145
- - ".gitignore"
146
- - ".rspec"
147
- - ".rubocop.yml"
148
- - ".ruby-version"
149
- - ".travis.yml"
150
202
  - Gemfile
151
- - Gemfile.lock
152
- - Guardfile
153
- - LICENSE
154
203
  - README.md
155
- - Rakefile
156
- - groupme-api.gemspec
157
204
  - lib/groupme-api.rb
158
205
  - lib/groupme.rb
159
206
  - lib/groupme/client.rb
160
207
  - lib/groupme/configuration.rb
208
+ - lib/groupme/core.rb
161
209
  - lib/groupme/errors.rb
162
210
  - lib/groupme/group.rb
163
211
  - lib/groupme/image_client.rb
164
212
  - lib/groupme/version.rb
165
213
  - lib/groupme_api.rb
166
- - spec/groupme/client_spec.rb
167
- - spec/groupme/configuration_spec.rb
168
- - spec/groupme/group_spec.rb
169
- - spec/groupme/image_client_spec.rb
170
- - spec/groupme_spec.rb
171
- - spec/spec_helper.rb
172
- - spec/support/groupme.rb
173
- - spec/support/vcr.rb
174
- - spec/support/webmock.rb
175
214
  homepage: https://github.com/kinnell/groupme-ruby-gem
176
215
  licenses:
177
216
  - MIT
@@ -184,16 +223,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
184
223
  requirements:
185
224
  - - ">="
186
225
  - !ruby/object:Gem::Version
187
- version: 2.3.0
226
+ version: 2.5.0
188
227
  required_rubygems_version: !ruby/object:Gem::Requirement
189
228
  requirements:
190
229
  - - ">="
191
230
  - !ruby/object:Gem::Version
192
- version: '0'
231
+ version: '2.0'
193
232
  requirements: []
194
- rubyforge_project:
195
- rubygems_version: 2.5.1
233
+ rubygems_version: 3.1.6
196
234
  signing_key:
197
235
  specification_version: 4
198
- summary: A Ruby wrapper for GroupMe REST API (v3)
236
+ summary: GroupMe
199
237
  test_files: []
data/.gitignore DELETED
@@ -1,11 +0,0 @@
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
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper
data/.rubocop.yml DELETED
@@ -1,11 +0,0 @@
1
- Documentation:
2
- Enabled: false
3
-
4
- Metrics/BlockLength:
5
- Enabled: false
6
-
7
- Metrics/LineLength:
8
- Enabled: false
9
-
10
- Style/BracesAroundHashParameters:
11
- Enabled: false
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.3.0
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.5.0
7
- before_install: gem install bundler -v 1.16.3
data/Gemfile.lock DELETED
@@ -1,104 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- groupme-api (0.7.1)
5
- httpclient (~> 2.8)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- addressable (2.7.0)
11
- public_suffix (>= 2.0.2, < 5.0)
12
- coderay (1.1.2)
13
- coveralls (0.8.23)
14
- json (>= 1.8, < 3)
15
- simplecov (~> 0.16.1)
16
- term-ansicolor (~> 1.3)
17
- thor (>= 0.19.4, < 2.0)
18
- tins (~> 1.6)
19
- crack (0.4.3)
20
- safe_yaml (~> 1.0.0)
21
- diff-lcs (1.3)
22
- docile (1.3.2)
23
- ffi (1.11.1)
24
- formatador (0.2.5)
25
- guard (2.15.1)
26
- formatador (>= 0.2.4)
27
- listen (>= 2.7, < 4.0)
28
- lumberjack (>= 1.0.12, < 2.0)
29
- nenv (~> 0.1)
30
- notiffany (~> 0.0)
31
- pry (>= 0.9.12)
32
- shellany (~> 0.0)
33
- thor (>= 0.18.1)
34
- guard-compat (1.2.1)
35
- guard-rspec (4.7.3)
36
- guard (~> 2.1)
37
- guard-compat (~> 1.1)
38
- rspec (>= 2.99.0, < 4.0)
39
- hashdiff (1.0.0)
40
- httpclient (2.8.3)
41
- json (2.2.0)
42
- listen (3.2.0)
43
- rb-fsevent (~> 0.10, >= 0.10.3)
44
- rb-inotify (~> 0.9, >= 0.9.10)
45
- lumberjack (1.0.13)
46
- method_source (0.9.2)
47
- nenv (0.3.0)
48
- notiffany (0.1.3)
49
- nenv (~> 0.1)
50
- shellany (~> 0.0)
51
- pry (0.12.2)
52
- coderay (~> 1.1.0)
53
- method_source (~> 0.9.0)
54
- public_suffix (4.0.1)
55
- rake (10.5.0)
56
- rb-fsevent (0.10.3)
57
- rb-inotify (0.10.0)
58
- ffi (~> 1.0)
59
- rspec (3.9.0)
60
- rspec-core (~> 3.9.0)
61
- rspec-expectations (~> 3.9.0)
62
- rspec-mocks (~> 3.9.0)
63
- rspec-core (3.9.0)
64
- rspec-support (~> 3.9.0)
65
- rspec-expectations (3.9.0)
66
- diff-lcs (>= 1.2.0, < 2.0)
67
- rspec-support (~> 3.9.0)
68
- rspec-mocks (3.9.0)
69
- diff-lcs (>= 1.2.0, < 2.0)
70
- rspec-support (~> 3.9.0)
71
- rspec-support (3.9.0)
72
- safe_yaml (1.0.5)
73
- shellany (0.0.1)
74
- simplecov (0.16.1)
75
- docile (~> 1.1)
76
- json (>= 1.8, < 3)
77
- simplecov-html (~> 0.10.0)
78
- simplecov-html (0.10.2)
79
- term-ansicolor (1.7.1)
80
- tins (~> 1.0)
81
- thor (0.20.3)
82
- tins (1.21.1)
83
- vcr (4.0.0)
84
- webmock (3.7.6)
85
- addressable (>= 2.3.6)
86
- crack (>= 0.3.2)
87
- hashdiff (>= 0.4.0, < 2.0.0)
88
-
89
- PLATFORMS
90
- ruby
91
-
92
- DEPENDENCIES
93
- bundler (~> 1.16)
94
- coveralls (~> 0.8)
95
- groupme-api!
96
- guard-rspec (~> 4.7)
97
- rake (~> 10.0)
98
- rspec (~> 3.8)
99
- simplecov (~> 0.15)
100
- vcr (~> 4.0)
101
- webmock (~> 3.4)
102
-
103
- BUNDLED WITH
104
- 1.16.3
data/Guardfile DELETED
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- guard :rspec, cmd: 'bundle exec rspec' do
4
- watch(%r{^spec/.+_spec\.rb$})
5
- watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
6
- watch('spec/spec_helper.rb') { 'spec' }
7
- watch(%r{^spec/support/(.+)$}) { 'spec' }
8
- end
data/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2018 Kinnell Shah
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
data/Rakefile DELETED
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
4
- require 'rspec/core/rake_task'
5
-
6
- RSpec::Core::RakeTask.new(:spec)
7
-
8
- task default: :spec
data/groupme-api.gemspec DELETED
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- lib = File.expand_path('lib', __dir__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
-
6
- require 'groupme/version'
7
-
8
- Gem::Specification.new do |spec|
9
- spec.platform = Gem::Platform::RUBY
10
- spec.name = 'groupme-api'
11
- spec.version = GroupMe::VERSION
12
- spec.summary = 'A Ruby wrapper for GroupMe REST API (v3)'
13
- spec.license = 'MIT'
14
-
15
- spec.author = 'Kinnell Shah'
16
- spec.email = 'kinnell@gmail.com'
17
- spec.homepage = 'https://github.com/kinnell/groupme-ruby-gem'
18
-
19
- spec.files = `git ls-files`.split("\n")
20
- spec.require_path = 'lib'
21
- spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
22
-
23
- spec.add_dependency 'httpclient', '~> 2.8'
24
-
25
- spec.add_development_dependency 'bundler', '~> 1.16'
26
- spec.add_development_dependency 'coveralls', '~> 0.8'
27
- spec.add_development_dependency 'guard-rspec', '~> 4.7'
28
- spec.add_development_dependency 'rake', '~> 10.0'
29
- spec.add_development_dependency 'rspec', '~> 3.8'
30
- spec.add_development_dependency 'simplecov', '~> 0.15'
31
- spec.add_development_dependency 'vcr', '~> 4.0'
32
- spec.add_development_dependency 'webmock', '~> 3.4'
33
- end
@@ -1,194 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe GroupMe::Client do
4
- include_context :with_default_groupme_configuration
5
-
6
- let(:client) { GroupMe::Client.new(access_token: access_token) }
7
- let(:base_url) { GroupMe::Client::API_BASE_URL }
8
-
9
- describe '.new' do
10
- context 'when :access_token is not supplied' do
11
- let(:client) { GroupMe::Client.new }
12
-
13
- it 'should use configured :access_token' do
14
- expect(client.access_token).to eq(GroupMe.configuration.access_token)
15
- end
16
- end
17
-
18
- context 'when :access_token is supplied' do
19
- let(:client) { GroupMe::Client.new(access_token: new_access_token) }
20
-
21
- it 'should not use configured :access_token' do
22
- expect(client.access_token).not_to eq(GroupMe.configuration.access_token)
23
- end
24
-
25
- it 'should use the supplied :access_token' do
26
- expect(client.access_token).to eq(new_access_token)
27
- end
28
- end
29
- end
30
-
31
- describe '#request' do
32
- let(:stubbed_data) { { id: 1, name: 'Group' } }
33
- let(:stubbed_response_body) { { response: stubbed_data }.to_json }
34
- let(:stubbed_response_status) { 200 }
35
-
36
- before do
37
- stub_request(:any, /api.groupme.com/).to_return(
38
- body: stubbed_response_body,
39
- status: stubbed_response_status
40
- )
41
- end
42
-
43
- context 'when no parameters are supplied' do
44
- it 'should send the correct HTTP request' do
45
- client.request(:get, 'groups')
46
-
47
- expect(WebMock).to have_requested(:get, "#{base_url}groups").with(query: { token: access_token })
48
- end
49
- end
50
-
51
- context 'when query parameters are supplied' do
52
- it 'should send the correct HTTP request' do
53
- client.request(:get, 'groups', query: { per_page: 1 })
54
-
55
- expect(WebMock).to have_requested(:get, "#{base_url}groups").with(query: { token: access_token, per_page: 1 })
56
- end
57
- end
58
-
59
- context 'when body parameters are supplied' do
60
- it 'should send the correct HTTP request' do
61
- client.request(:post, 'groups', body: { name: 'Group' })
62
-
63
- expect(WebMock).to have_requested(:post, "#{base_url}groups?token=#{access_token}").with(body: { name: 'Group' }.to_json)
64
- end
65
- end
66
-
67
- context 'when the response is successful' do
68
- let(:stubbed_response_body) { { response: stubbed_data }.to_json }
69
- let(:stubbed_response_status) { 201 }
70
-
71
- it 'should parse and return the response' do
72
- response, _status = client.request(:post, 'groups')
73
-
74
- expect(response).to eq(stubbed_data)
75
- end
76
-
77
- it 'should return the successful status code' do
78
- _response, status = client.request(:post, 'groups')
79
-
80
- expect(status).to eq(201)
81
- end
82
- end
83
-
84
- context 'when the response is unsuccessful' do
85
- let(:stubbed_response_body) { '' }
86
- let(:stubbed_response_status) { [404, 'Not Found'] }
87
-
88
- it 'should return the response reason' do
89
- response, _status = client.request(:post, 'groups')
90
-
91
- expect(response).to eq('Not Found')
92
- end
93
-
94
- it 'should return the unsuccesful status code' do
95
- _response, status = client.request(:post, 'groups')
96
-
97
- expect(status).to eq(404)
98
- end
99
- end
100
- end
101
-
102
- describe '#get' do
103
- let(:stubbed_data) { { id: 1, name: 'Group' } }
104
- let(:stubbed_response_code) { 200 }
105
-
106
- before do
107
- stub_request(:get, /api.groupme.com/).to_return(
108
- body: { response: stubbed_data }.to_json,
109
- status: stubbed_response_code
110
- )
111
- end
112
-
113
- it 'should parse and return the response' do
114
- response, _status = client.get('groups', per_page: 1)
115
-
116
- expect(response).to eq(stubbed_data)
117
- end
118
-
119
- it 'should return the status code' do
120
- _response, status = client.get('groups', per_page: 1)
121
-
122
- expect(status).to eq(stubbed_response_code)
123
- end
124
- end
125
-
126
- describe '#post' do
127
- let(:stubbed_data) { { id: 1, name: 'Group' } }
128
- let(:stubbed_response_code) { 200 }
129
-
130
- before do
131
- stub_request(:post, /api.groupme.com/).to_return(
132
- body: { response: stubbed_data }.to_json,
133
- status: stubbed_response_code
134
- )
135
- end
136
-
137
- it 'should parse and return the response' do
138
- response, _status = client.post('groups', name: 'Group')
139
-
140
- expect(response).to eq(stubbed_data)
141
- end
142
-
143
- it 'should return the status code' do
144
- _response, status = client.post('groups', name: 'Group')
145
-
146
- expect(status).to eq(stubbed_response_code)
147
- end
148
- end
149
-
150
- describe '#delete' do
151
- let(:stubbed_data) { 'OK' }
152
- let(:stubbed_response_code) { 200 }
153
-
154
- before do
155
- stub_request(:delete, /api.groupme.com/).to_return(
156
- body: { response: stubbed_data }.to_json,
157
- status: stubbed_response_code
158
- )
159
- end
160
-
161
- it 'should parse and return the response' do
162
- response, _status = client.delete('groups', id: 1)
163
-
164
- expect(response).to eq(stubbed_data)
165
- end
166
-
167
- it 'should return the status code' do
168
- _response, status = client.delete('groups', id: 1)
169
-
170
- expect(status).to eq(stubbed_response_code)
171
- end
172
- end
173
- end
174
-
175
- RSpec.describe GroupMe do
176
- include_context :with_default_groupme_configuration
177
-
178
- describe '.client' do
179
- it 'should return a GroupMe::Client object' do
180
- expect(GroupMe.client).to be_a_instance_of(GroupMe::Client)
181
- end
182
- end
183
-
184
- describe '.client=' do
185
- it 'should set a new default client' do
186
- old_client = GroupMe.client
187
- new_client = GroupMe::Client.new
188
- GroupMe.client = new_client
189
-
190
- expect(GroupMe.client).not_to eq(old_client)
191
- expect(GroupMe.client).to eq(new_client)
192
- end
193
- end
194
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe GroupMe::Configuration do
6
- before(:each) { GroupMe.reset! }
7
-
8
- describe '#access_token' do
9
- context 'when :access_token is not configured' do
10
- it 'should raise an error' do
11
- expect { GroupMe.configuration.access_token }.to raise_error(GroupMe::MissingConfigurationError)
12
- end
13
- end
14
-
15
- context 'when :access_token is configured' do
16
- include_context :with_default_groupme_configuration
17
-
18
- it 'should return the access_token' do
19
- expect(GroupMe.configuration.access_token).to eq(access_token)
20
- end
21
- end
22
- end
23
- end
24
-
25
- RSpec.describe GroupMe do
26
- describe '.configuration' do
27
- it 'should return a GroupMe::Configuration object' do
28
- expect(GroupMe.configuration).to be_an_instance_of(GroupMe::Configuration)
29
- end
30
- end
31
-
32
- describe '.configuration=' do
33
- it 'should set a new default configuration' do
34
- old_configuration = GroupMe.configuration
35
- new_configuration = GroupMe::Configuration.new
36
- GroupMe.configuration = new_configuration
37
-
38
- expect(GroupMe.configuration).not_to eq(old_configuration)
39
- expect(GroupMe.configuration).to eq(new_configuration)
40
- end
41
- end
42
-
43
- describe 'configure' do
44
- it 'should set configuration attributes' do
45
- GroupMe.configure { |config| config.access_token = access_token }
46
-
47
- expect(GroupMe.configuration.access_token).to eq(access_token)
48
- end
49
- end
50
-
51
- describe 'reset!' do
52
- it 'should reset the configuration' do
53
- old_configuration = GroupMe.configuration
54
- GroupMe.reset!
55
-
56
- expect(GroupMe.configuration).not_to eq(old_configuration)
57
- end
58
- end
59
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe GroupMe::Group do
4
- include_context :with_default_groupme_configuration
5
-
6
- describe '#all' do
7
- it 'should send the correct HTTP request' do
8
- _groups = GroupMe::Group.all
9
-
10
- expect(WebMock).to have_requested(:get, 'https://api.groupme.com/v3/groups').with(query: { token: access_token, omit: :memberships, per_page: GroupMe.configuration.groups_per_page })
11
- end
12
- end
13
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe GroupMe::ImageClient do
4
- include_context :with_default_groupme_configuration
5
-
6
- let(:image_blob) { '\x89PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01\b\x03\x00\x00\x00(\xCB4\xBB\x00\x00\x00\x03PLTE\xDD.DX\x9D\x17\x1C\x00\x00\x00\x01tRNS\xD8\xC8\xEE\x82\x80\x00\x00\x00\nIDATx\x01c`\x00\x00\x00\x02\x00\x01su\x01\x18\x00\x00\x00\x00IEND\xAEB`\x82' }
7
-
8
- describe '#new' do
9
- it 'should send the correct HTTP request' do
10
- _image_client = GroupMe::ImageClient.new
11
- _image_client.upload(image_blob)
12
-
13
- expect(WebMock).to have_requested(:post, 'https://image.groupme.com/pictures').with(body: image_blob)
14
- end
15
- end
16
- end
data/spec/groupme_spec.rb DELETED
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe GroupMe do
6
- it 'has a version number' do
7
- expect(GroupMe::VERSION).not_to be nil
8
- end
9
- end
data/spec/spec_helper.rb DELETED
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'simplecov'
4
- require 'coveralls'
5
-
6
- SimpleCov.start
7
- Coveralls.wear!
8
-
9
- require 'groupme'
10
-
11
- require 'support/groupme'
12
- require 'support/vcr'
13
- require 'support/webmock'
14
-
15
- RSpec.configure do |config|
16
- config.filter_run_when_matching :focus
17
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'securerandom'
4
-
5
- RSpec.shared_context :with_defined_access_token do
6
- let(:access_token) { 'cQOvtsbxn7mHCS6yRimKuKHwXCGtqRwcU4E4NToe' }
7
- let(:new_access_token) { SecureRandom.base64(30).tr('+', '0') }
8
- end
9
-
10
- RSpec.shared_context :with_default_groupme_configuration do
11
- before(:each) do
12
- GroupMe.configure do |config|
13
- config.access_token = 'cQOvtsbxn7mHCS6yRimKuKHwXCGtqRwcU4E4NToe'
14
- end
15
- end
16
- end
17
-
18
- RSpec.configure do |config|
19
- config.include_context :with_defined_access_token
20
- end
data/spec/support/vcr.rb DELETED
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'vcr'
4
-
5
- VCR.configure do |config|
6
- config.hook_into :webmock
7
- config.allow_http_connections_when_no_cassette = true
8
- config.cassette_library_dir = 'spec/fixtures'
9
- config.default_cassette_options = { record: :new_episodes }
10
- config.filter_sensitive_data('ACCESS_TOKEN') { ACCESS_TOKEN }
11
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'webmock/rspec'
4
-
5
- WebMock.enable!