faraday-panoptes 0.1.0 → 0.4.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
- SHA1:
3
- metadata.gz: f9b626bfae3343ec615dfd0dfc13a024655d2635
4
- data.tar.gz: 8ef9c0f1c59c4aaaeb88e0609ff89295b4c621b0
2
+ SHA256:
3
+ metadata.gz: 077ad6c0c7d63af21648067c7e831ca6466883168bf8436b68cf83e9aa49a56c
4
+ data.tar.gz: ed0af98fc264667e80d0312719ef9c5add62179226437caa21e9f68d8f4dcb89
5
5
  SHA512:
6
- metadata.gz: 4de3a792e8e88f01feee12262538759732053b02173b9227886e87f1e2937a293b894286362fa16d86e97d4e99884bb49cbb87d9385e2169e9dd0ba8dd1396a3
7
- data.tar.gz: cc29dc5309c8806b177b3136f7466ccccb3a30b87978ee4ed7855427a83c558b10a3b18eb7b38a8c4e90b3b7ed12679d9820fbf87be67516df8bf2e05839f101
6
+ metadata.gz: d37c4d84ff2d20861c080e252c4abede36aeb1bf3282e111bd34266f196a0491e092a90d094e14c1c54e976e4ed6b7de5d801f9a7e533de3262f69f60516af2f
7
+ data.tar.gz: 671fe25d112f6a5dc73b92150238f522a6727ea492808ac27858cef0e3c4ce6e256ef9260a6be77d0cff269673727f8c409d51dbc7fc188a517615db88d644bf
@@ -0,0 +1,17 @@
1
+ name: Zooni CI
2
+ on:
3
+ pull_request:
4
+ push: { branches: master }
5
+ jobs:
6
+ test:
7
+ name: Run Tests
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@v2
11
+ - name: Setup Ruby
12
+ uses: ruby/setup-ruby@v1
13
+ with:
14
+ ruby-version: 2.7
15
+ bundler-cache: true
16
+ - name: Run tests
17
+ run: bundle exec rspec
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/CHANGELOG.md ADDED
@@ -0,0 +1,9 @@
1
+ # 0.2.0
2
+
3
+ * Provides Faraday middleware which just sets the OAuth access token in the correct header
4
+
5
+ # 0.1.0
6
+
7
+ * Initial release.
8
+ * Provides Faraday middleware which will request access tokens using application key/secret and refresh them when needed.
9
+ * Provides Faraday middleware which will set correct headers for version 1 of the API.
data/Dockerfile ADDED
@@ -0,0 +1,20 @@
1
+ FROM ruby:2.7-slim
2
+
3
+ WORKDIR /app
4
+
5
+ RUN apt-get update && apt-get -y upgrade && \
6
+ apt-get install --no-install-recommends -y \
7
+ build-essential \
8
+ # git is required for installing gems
9
+ git && \
10
+ apt-get clean && rm -rf /var/lib/apt/lists/*
11
+
12
+ ADD ./Gemfile /app/
13
+ ADD ./faraday-panoptes.gemspec /app/
14
+ ADD ./ /app
15
+
16
+ # ensure we use a newer version of rubygems / bundler
17
+ RUN gem update --system
18
+
19
+ RUN bundle config --global jobs `cat /proc/cpuinfo | grep processor | wc -l | xargs -I % expr % - 1`
20
+ RUN bundle install
data/README.md CHANGED
@@ -7,6 +7,8 @@ api_client = Faraday.new(url: "https://panoptes.zooniverse.org") do |faraday|
7
7
  faraday.request :panoptes_client_credentials, url: 'https://panoptes.zooniverse.org', client_id: 'APPLICATION_ID', client_secret: 'APPLICATION_SECRET'
8
8
  faraday.request :panoptes_api_v1
9
9
  faraday.response :json
10
+
11
+ faraday.adapter Faraday.default_adapter # WITHOUT THIS LINE NOTHING WILL HAPPEN
10
12
  end
11
13
 
12
14
  response = api_client.get("/api/projects/1")
@@ -33,10 +35,22 @@ Or install it yourself as:
33
35
 
34
36
  ## Development
35
37
 
36
- 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.
38
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `bundle exec rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
37
39
 
38
40
  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).
39
41
 
42
+ Use docker & compose to setup the dev env
43
+
44
+ ```shell
45
+ $ docker-compose build
46
+ ```
47
+
48
+ Run a bash shell inside the new container
49
+
50
+ ```shell
51
+ $ docker-compose run --service-ports --rm faraday-panoptes bash
52
+ ```
53
+
40
54
  ## Contributing
41
55
 
42
56
  Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/faraday-panoptes. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
data/Rakefile CHANGED
@@ -1,10 +1 @@
1
1
  require "bundler/gem_tasks"
2
- require "rake/testtask"
3
-
4
- Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
7
- t.test_files = FileList['test/**/*_test.rb']
8
- end
9
-
10
- task :default => :test
@@ -0,0 +1,11 @@
1
+ version: '3'
2
+ services:
3
+ faraday-panoptes:
4
+ build:
5
+ context: .
6
+ volumes:
7
+ - ./:/app
8
+ - gem_cache:/usr/local/bundle
9
+
10
+ volumes:
11
+ gem_cache:
@@ -19,11 +19,15 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_dependency 'faraday', '~> 0.9'
23
- spec.add_dependency 'faraday_middleware', '~> 0.10'
22
+ spec.add_dependency 'faraday', '~> 1.0'
23
+ spec.add_dependency 'faraday_middleware', '~> 1.0'
24
24
 
25
- spec.add_development_dependency "bundler", "~> 1.10"
26
- spec.add_development_dependency "rake", "~> 10.0"
27
- spec.add_development_dependency "minitest"
25
+ spec.add_development_dependency "bundler", "~> 2.2"
26
+ spec.add_development_dependency "openssl"
28
27
  spec.add_development_dependency "pry"
28
+ spec.add_development_dependency "rake"
29
+ spec.add_development_dependency "rspec"
30
+ spec.add_development_dependency "vcr"
31
+ spec.add_development_dependency "webmock"
32
+ spec.add_development_dependency "jwt"
29
33
  end
@@ -0,0 +1,30 @@
1
+ require 'faraday'
2
+ require 'faraday_middleware'
3
+
4
+ module Faraday
5
+ module Panoptes
6
+ class AccessTokenAuthentication < Faraday::Middleware
7
+ dependency do
8
+ require 'json' unless defined?(::JSON)
9
+ end
10
+
11
+ def initialize(app, url:, access_token:)
12
+ super(app)
13
+ @access_token = access_token
14
+ end
15
+
16
+ def call(env)
17
+ env[:request_headers]["Authorization"] = authorization_header
18
+ @app.call(env)
19
+ end
20
+
21
+ def authorization_header
22
+ "Bearer #{access_token}"
23
+ end
24
+
25
+ def access_token
26
+ @access_token
27
+ end
28
+ end
29
+ end
30
+ end
@@ -3,6 +3,10 @@ require 'faraday_middleware'
3
3
 
4
4
  module Faraday
5
5
  module Panoptes
6
+
7
+ class CredentialsOAuthError < StandardError
8
+ end
9
+
6
10
  class ClientCredentialsAuthentication < Faraday::Middleware
7
11
  dependency do
8
12
  require 'json' unless defined?(::JSON)
@@ -13,6 +17,7 @@ module Faraday
13
17
  @client_id = client_id
14
18
  @client_secret = client_secret
15
19
  @conn = Faraday.new(url: url)
20
+ @current_token = nil
16
21
  end
17
22
 
18
23
  def call(env)
@@ -45,6 +50,8 @@ module Faraday
45
50
  grant_type: 'client_credentials',
46
51
  client_id: @client_id,
47
52
  client_secret: @client_secret)
53
+
54
+ raise CredentialsOAuthError.new "Failed to obtain access token" if result.status == 401 or result.status == 422 or result.body.empty?
48
55
  JSON.parse(result.body)
49
56
  end
50
57
  end
@@ -1,5 +1,5 @@
1
1
  module Faraday
2
2
  module Panoptes
3
- VERSION = "0.1.0"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -1,10 +1,12 @@
1
1
  require "faraday/panoptes/version"
2
2
  require 'faraday/panoptes/api_v1'
3
+ require 'faraday/panoptes/access_token_authentication'
3
4
  require 'faraday/panoptes/client_credentials_authentication'
4
5
 
5
6
  module Faraday
6
7
  module Panoptes
7
8
  Faraday::Request.register_middleware \
9
+ panoptes_access_token: lambda { AccessTokenAuthentication },
8
10
  panoptes_client_credentials: lambda { ClientCredentialsAuthentication },
9
11
  panoptes_api_v1: lambda { ApiV1 }
10
12
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday-panoptes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marten Veldthuis
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-26 00:00:00.000000000 Z
11
+ date: 2022-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -16,58 +16,100 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.9'
19
+ version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.9'
26
+ version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faraday_middleware
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.10'
33
+ version: '1.0'
34
34
  type: :runtime
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: '0.10'
40
+ version: '1.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.10'
47
+ version: '2.2'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.10'
54
+ version: '2.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: openssl
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'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: rake
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
- - - "~>"
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
60
95
  - !ruby/object:Gem::Version
61
- version: '10.0'
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
62
104
  type: :development
63
105
  prerelease: false
64
106
  version_requirements: !ruby/object:Gem::Requirement
65
107
  requirements:
66
- - - "~>"
108
+ - - ">="
67
109
  - !ruby/object:Gem::Version
68
- version: '10.0'
110
+ version: '0'
69
111
  - !ruby/object:Gem::Dependency
70
- name: minitest
112
+ name: vcr
71
113
  requirement: !ruby/object:Gem::Requirement
72
114
  requirements:
73
115
  - - ">="
@@ -81,7 +123,21 @@ dependencies:
81
123
  - !ruby/object:Gem::Version
82
124
  version: '0'
83
125
  - !ruby/object:Gem::Dependency
84
- name: pry
126
+ name: webmock
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: jwt
85
141
  requirement: !ruby/object:Gem::Requirement
86
142
  requirements:
87
143
  - - ">="
@@ -102,17 +158,22 @@ executables: []
102
158
  extensions: []
103
159
  extra_rdoc_files: []
104
160
  files:
161
+ - ".github/workflows/run_tests_CI.yml"
105
162
  - ".gitignore"
106
- - ".travis.yml"
163
+ - ".rspec"
164
+ - CHANGELOG.md
107
165
  - CODE_OF_CONDUCT.md
166
+ - Dockerfile
108
167
  - Gemfile
109
168
  - LICENSE.txt
110
169
  - README.md
111
170
  - Rakefile
112
171
  - bin/console
113
172
  - bin/setup
173
+ - docker-compose.yml
114
174
  - faraday-panoptes.gemspec
115
175
  - lib/faraday/panoptes.rb
176
+ - lib/faraday/panoptes/access_token_authentication.rb
116
177
  - lib/faraday/panoptes/api_v1.rb
117
178
  - lib/faraday/panoptes/client_credentials_authentication.rb
118
179
  - lib/faraday/panoptes/version.rb
@@ -120,7 +181,7 @@ homepage: https://github.com/zooniverse/faraday-panoptes
120
181
  licenses:
121
182
  - MIT
122
183
  metadata: {}
123
- post_install_message:
184
+ post_install_message:
124
185
  rdoc_options: []
125
186
  require_paths:
126
187
  - lib
@@ -135,10 +196,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
196
  - !ruby/object:Gem::Version
136
197
  version: '0'
137
198
  requirements: []
138
- rubyforge_project:
139
- rubygems_version: 2.4.6
140
- signing_key:
199
+ rubygems_version: 3.1.4
200
+ signing_key:
141
201
  specification_version: 4
142
202
  summary: Faraday middleware for talking to the Panoptes API
143
203
  test_files: []
144
- has_rdoc:
data/.travis.yml DELETED
@@ -1,4 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.1
4
- before_install: gem install bundler -v 1.10.6