panoptes-client 1.0.0.pre1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0722172463c45183efc758d2bd5c6d26f297a35e0a1b9a4841253c80af302848
4
- data.tar.gz: '088d99d4d0c06bd10178252af91809065fe7fe49e91ab14b2973f010e972d208'
3
+ metadata.gz: a209f63256bf9a1ca45ab23ad64e49e0c41829210b6a29a268b20c225f3750f0
4
+ data.tar.gz: efe6d6066ea962c1042e116cf233d14c61919ee3a0fac1e8216175ca98230f90
5
5
  SHA512:
6
- metadata.gz: 17627e2612825d642abb4a44dd942cc4584816b84c7ebbbbdf3537247fd04dbfcf673e843c864cd2dc3f2e4e4e2e6d412328bbcc5e3863ee3b41a09ae0e7d732
7
- data.tar.gz: 9f8d7d7a8125c613e4086839ce984a001339514c35885b0fe7ca19c443a78855fc8341d9b67b5945cc43b583b934422ae3deac43cc5c20e278271b638f01e664
6
+ metadata.gz: ca1ae7ddf8b1ff0b5c9f39a4c3cc93e34d521b7aa8530dab38ac688f3a192dfbcdfa25968b4ee2454d46772a434c1aa64c80aeae4e7ce3847fff17376c73d84c
7
+ data.tar.gz: babbdaf433fbfe2557b97920439fb6a10af73f0d328fcd8d5dc529ffbf84cb9a8c65e13880dbfa783bc2b14e652e1e1d2fe7688176e3443e54652f309b757112
data/.hound.yml CHANGED
@@ -1,2 +1,2 @@
1
- ruby:
2
- config_file: .ruby-style.yml
1
+ rubocop:
2
+ config_file: .rubocop.yml
@@ -0,0 +1,2 @@
1
+ Style/Documentation:
2
+ Enabled: false
@@ -1,5 +1,7 @@
1
1
  language: ruby
2
2
  cache: bundler
3
3
  rvm:
4
- - 2.3.0
4
+ - 2.4
5
+ - 2.5
6
+ - 2.6
5
7
  before_install: gem install bundler -v 1.11.2
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in panoptes-client.gemspec
data/Rakefile CHANGED
@@ -1,13 +1,15 @@
1
- require "bundler/gem_tasks"
1
+ # frozen_string_literal: true
2
2
 
3
- require "rspec/core/rake_task"
3
+ require 'bundler/gem_tasks'
4
+
5
+ require 'rspec/core/rake_task'
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
8
  require 'yard'
7
9
  YARD::Rake::YardocTask.new do |t|
8
- t.files = ['lib/**/*.rb'] # optional
10
+ t.files = ['lib/**/*.rb'] # optional
9
11
  t.options = ['--any', '--extra', '--opts'] # optional
10
12
  t.stats_options = ['--list-undoc'] # optional
11
13
  end
12
14
 
13
- task :default => :spec
15
+ task default: :spec
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "bundler/setup"
4
- require "panoptes/client"
4
+ require 'bundler/setup'
5
+ require 'panoptes/client'
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +11,5 @@ require "panoptes/client"
10
11
  # require "pry"
11
12
  # Pry.start
12
13
 
13
- require "irb"
14
+ require 'irb'
14
15
  IRB.start
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'panoptes/client'
2
4
  require 'panoptes/talk_client'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'panoptes/endpoints/json_api_endpoint'
2
4
  require 'panoptes/endpoints/json_endpoint'
3
5
 
@@ -66,19 +68,19 @@ module Panoptes
66
68
 
67
69
  def panoptes_url
68
70
  case env
69
- when :production, 'production'.freeze
70
- 'https://panoptes.zooniverse.org'.freeze
71
+ when :production, 'production'
72
+ 'https://panoptes.zooniverse.org'
71
73
  else
72
- 'https://panoptes-staging.zooniverse.org'.freeze
74
+ 'https://panoptes-staging.zooniverse.org'
73
75
  end
74
76
  end
75
77
 
76
78
  def talk_url
77
79
  case env
78
- when :production, 'production'.freeze
79
- 'https://talk.zooniverse.org'.freeze
80
+ when :production, 'production'
81
+ 'https://talk.zooniverse.org'
80
82
  else
81
- 'https://talk-staging.zooniverse.org'.freeze
83
+ 'https://talk-staging.zooniverse.org'
82
84
  end
83
85
  end
84
86
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'deprecate'
2
4
 
3
5
  module Panoptes
@@ -82,14 +84,19 @@ module Panoptes
82
84
 
83
85
  def public_key_for_env(env)
84
86
  case env.to_s
85
- when "staging"
86
- File.expand_path(File.join("..","..", "..", "..", "data", "doorkeeper-jwt-staging.pub"), __FILE__)
87
- when "production"
88
- File.expand_path(File.join("..","..", "..", "..", "data", "doorkeeper-jwt-production.pub"), __FILE__)
89
- else
90
- nil
87
+ when 'staging'
88
+ key_file_path('doorkeeper-jwt-staging.pub')
89
+ when 'production'
90
+ key_file_path('doorkeeper-jwt-production.pub')
91
91
  end
92
92
  end
93
+
94
+ def key_file_path(file_name)
95
+ File.expand_path(
96
+ File.join('..', '..', '..', '..', 'data', file_name),
97
+ __FILE__
98
+ )
99
+ end
93
100
  end
94
101
  end
95
102
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'faraday'
2
4
 
3
5
  module Panoptes
@@ -1,20 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Panoptes
2
4
  class Client
3
5
  module Classifications
4
6
  def get_subject_classifications(subject_id, workflow_id)
5
- panoptes.paginate("/classifications/project", {
6
- admin: true,
7
- workflow_id: workflow_id,
8
- subject_id: subject_id
9
- }, resource: "classifications")
7
+ panoptes.paginate('/classifications/project', {
8
+ admin: true,
9
+ workflow_id: workflow_id,
10
+ subject_id: subject_id
11
+ }, resource: 'classifications')
10
12
  end
11
13
 
12
14
  def get_user_classifications(user_id, workflow_id)
13
- panoptes.paginate("/classifications/project", {
14
- admin: true,
15
- workflow_id: workflow_id,
16
- user_id: user_id
17
- }, resource: "classifications")
15
+ panoptes.paginate('/classifications/project', {
16
+ admin: true,
17
+ workflow_id: workflow_id,
18
+ user_id: user_id
19
+ }, resource: 'classifications')
18
20
  end
19
21
  end
20
22
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Panoptes
2
4
  class Client
3
5
  module Collections
4
6
  def add_subjects_to_collection(collection_id, subject_ids)
5
- panoptes.post("/collections/#{collection_id}/links/subjects",subjects: subject_ids)
7
+ panoptes.post("/collections/#{collection_id}/links/subjects", subjects: subject_ids)
6
8
  end
7
9
  end
8
10
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Panoptes
2
4
  class Client
3
5
  module Comments
@@ -7,9 +9,9 @@ module Panoptes
7
9
  # @param focus_type [String] filter by focussable type
8
10
  # @return list of discussions
9
11
  def create_comment(discussion_id:, body:)
10
- user_id = token_contents["id"]
11
- response = talk.post("/comments", comments: {discussion_id: discussion_id, body: body, user_id: user_id})
12
- response.fetch("comments")[0]
12
+ user_id = token_contents['id']
13
+ response = talk.post('/comments', comments: { discussion_id: discussion_id, body: body, user_id: user_id })
14
+ response.fetch('comments')[0]
13
15
  end
14
16
  end
15
17
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Panoptes
2
4
  class Client
3
5
  module Discussions
@@ -11,8 +13,8 @@ module Panoptes
11
13
  query[:focus_id] = focus_id
12
14
  query[:focus_type] = focus_type
13
15
 
14
- response = talk.get("/discussions", query)
15
- response.fetch("discussions")
16
+ response = talk.get('/discussions', query)
17
+ response.fetch('discussions')
16
18
  end
17
19
  end
18
20
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'openssl'
2
4
  require 'jwt'
3
5
 
@@ -5,7 +7,7 @@ module Panoptes
5
7
  class Client
6
8
  module Me
7
9
  def me
8
- panoptes.get("/me")["users"][0]
10
+ panoptes.get('/me')['users'][0]
9
11
  end
10
12
  end
11
13
  end
@@ -1,32 +1,31 @@
1
+ # frozen_string_literal: true
1
2
 
2
3
  module Panoptes
3
4
  class Client
4
5
  module ProjectPreferences
5
6
  def project_preferences(id)
6
7
  response = panoptes.get("project_preferences/#{id}")
7
- response.fetch("project_preferences").first
8
+ response.fetch('project_preferences').first
8
9
  end
9
10
 
10
11
  def user_project_preferences(user_id, project_id)
11
- response = panoptes.get("project_preferences", {
12
- user_id: user_id,
13
- project_id: project_id
14
- })
15
- response.fetch("project_preferences").first
12
+ response = panoptes.get('project_preferences',
13
+ user_id: user_id,
14
+ project_id: project_id)
15
+ response.fetch('project_preferences').first
16
16
  end
17
17
 
18
18
  def promote_user_to_workflow(user_id, project_id, workflow_id)
19
- id = panoptes.get("project_preferences", {
20
- user_id: user_id,
21
- project_id: project_id
22
- }).fetch("project_preferences").first["id"]
19
+ id = panoptes.get('project_preferences',
20
+ user_id: user_id,
21
+ project_id: project_id).fetch('project_preferences').first['id']
23
22
 
24
23
  response = panoptes.connection.get("/api/project_preferences/#{id}")
25
- etag = response.headers["ETag"]
24
+ etag = response.headers['ETag']
26
25
 
27
26
  panoptes.put("project_preferences/#{id}", {
28
- project_preferences: { settings: { workflow_id: workflow_id } }
29
- }, etag: etag)
27
+ project_preferences: { settings: { workflow_id: workflow_id } }
28
+ }, etag: etag)
30
29
  end
31
30
  end
32
31
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Panoptes
2
4
  class Client
3
5
  module Projects
@@ -10,7 +12,7 @@ module Panoptes
10
12
  params = {}
11
13
  params[:search] = search if search
12
14
 
13
- panoptes.paginate("/projects", params)["projects"]
15
+ panoptes.paginate('/projects', params)['projects']
14
16
  end
15
17
 
16
18
  # Fetches the specified project
@@ -20,7 +22,7 @@ module Panoptes
20
22
  # @return [Hash] The requested project
21
23
  def project(project_id)
22
24
  response = panoptes.get("/projects/#{project_id}")
23
- response.fetch("projects").find {|i| i.fetch("id").to_s == project_id.to_s }
25
+ response.fetch('projects').find { |i| i.fetch('id').to_s == project_id.to_s }
24
26
  end
25
27
 
26
28
  # Starts a background process to generate a new CSV export of all the classifications in the project.
@@ -28,8 +30,9 @@ module Panoptes
28
30
  # @param project_id [Integer] the id of the project to export
29
31
  # @return [Hash] the medium information where the export will be stored when it's generated
30
32
  def create_classifications_export(project_id)
31
- params = {media: {content_type: "text/csv", metadata: { recipients: []}}}
32
- panoptes.post("/projects/#{project_id}/classifications_export", params)["media"].first
33
+ params = export_params('text/csv')
34
+ path = export_path(project_id, 'classifications_export')
35
+ panoptes.post(path, params)['media'].first
33
36
  end
34
37
 
35
38
  # Starts a background process to generate a new CSV export of all the subjects in the project.
@@ -37,8 +40,9 @@ module Panoptes
37
40
  # @param project_id [Integer] the id of the project to export
38
41
  # @return [Hash] the medium information where the export will be stored when it's generated
39
42
  def create_subjects_export(project_id)
40
- params = {media: {content_type: "text/csv", metadata: { recipients: []}}}
41
- panoptes.post("/projects/#{project_id}/subjects_export", params)["media"].first
43
+ params = export_params('text/csv')
44
+ path = export_path(project_id, 'subjects_export')
45
+ panoptes.post(path, params)['media'].first
42
46
  end
43
47
 
44
48
  # Starts a background process to generate a new CSV export of all the workflows in the project.
@@ -46,8 +50,9 @@ module Panoptes
46
50
  # @param project_id [Integer] the id of the project to export
47
51
  # @return [Hash] the medium information where the export will be stored when it's generated
48
52
  def create_workflows_export(project_id)
49
- params = {media: {content_type: "text/csv", metadata: { recipients: []}}}
50
- panoptes.post("/projects/#{project_id}/workflows_export", params)["media"].first
53
+ params = export_params('text/csv')
54
+ path = export_path(project_id, 'workflows_export')
55
+ panoptes.post(path, params)['media'].first
51
56
  end
52
57
 
53
58
  # Starts a background process to generate a new CSV export of all the workflow_contents in the project.
@@ -55,8 +60,9 @@ module Panoptes
55
60
  # @param project_id [Integer] the id of the project to export
56
61
  # @return [Hash] the medium information where the export will be stored when it's generated
57
62
  def create_workflow_contents_export(project_id)
58
- params = {media: {content_type: "text/csv", metadata: { recipients: []}}}
59
- panoptes.post("/projects/#{project_id}/workflow_contents_export", params)["media"].first
63
+ params = export_params('text/csv')
64
+ path = export_path(project_id, 'workflow_contents_export')
65
+ panoptes.post(path, params)['media'].first
60
66
  end
61
67
 
62
68
  # Starts a background process to generate a new CSV export of the aggretation results of the project.
@@ -64,8 +70,19 @@ module Panoptes
64
70
  # @param project_id [Integer] the id of the project to export
65
71
  # @return [Hash] the medium information where the export will be stored when it's generated
66
72
  def create_aggregations_export(project_id)
67
- params = {media: {content_type: "application/x-gzip", metadata: { recipients: []}}}
68
- panoptes.post("/projects/#{project_id}/aggregations_export", params)["media"].first
73
+ params = export_params('application/x-gzip')
74
+ path = export_path(project_id, 'aggregations_export')
75
+ panoptes.post(path, params)['media'].first
76
+ end
77
+
78
+ private
79
+
80
+ def export_params(content_type)
81
+ { media: { content_type: content_type, metadata: { recipients: [] } } }
82
+ end
83
+
84
+ def export_path(project_id, export_type)
85
+ "/projects/#{project_id}/#{export_type}"
69
86
  end
70
87
  end
71
88
  end
@@ -1,22 +1,24 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Panoptes
2
4
  class Client
3
5
  module SubjectSets
4
6
  def subject_set(subject_set_id)
5
7
  response = panoptes.get("/subject_sets/#{subject_set_id}")
6
- response.fetch("subject_sets").find {|i| i.fetch("id").to_s == subject_set_id.to_s }
8
+ response.fetch('subject_sets').find { |i| i.fetch('id').to_s == subject_set_id.to_s }
7
9
  end
8
10
 
9
11
  def create_subject_set(attributes)
10
- response = panoptes.post("/subject_sets", subject_sets: attributes)
11
- response.fetch("subject_sets").first
12
+ response = panoptes.post('/subject_sets', subject_sets: attributes)
13
+ response.fetch('subject_sets').first
12
14
  end
13
15
 
14
16
  def update_subject_set(subject_set_id, attributes)
15
17
  response = panoptes.connection.get("/api/subject_sets/#{subject_set_id}")
16
- etag = response.headers["ETag"]
18
+ etag = response.headers['ETag']
17
19
 
18
- response = panoptes.put("/subject_sets/#{subject_set_id}", {subject_sets: attributes}, etag: etag)
19
- response.fetch("subject_sets").first
20
+ response = panoptes.put("/subject_sets/#{subject_set_id}", { subject_sets: attributes }, etag: etag)
21
+ response.fetch('subject_sets').first
20
22
  end
21
23
 
22
24
  def add_subjects_to_subject_set(subject_set_id, subject_ids)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Panoptes
2
4
  class Client
3
5
  module Subjects
@@ -12,8 +14,8 @@ module Panoptes
12
14
 
13
15
  raise 'Must filter on at least one of subject_set_id, workflow_id' if query.empty?
14
16
 
15
- response = panoptes.paginate("/subjects", query)
16
- response.fetch("subjects")
17
+ response = panoptes.paginate('/subjects', query)
18
+ response.fetch('subjects')
17
19
  end
18
20
 
19
21
  # Fetch a subject given filters (including permissions)
@@ -27,7 +29,7 @@ module Panoptes
27
29
 
28
30
  response = panoptes.get("/subjects/#{subject_id}", query)
29
31
  if response.fetch('subjects', []).count > 1
30
- raise StandardError.new 'Unexpectedly many subjects returned'
32
+ raise StandardError, 'Unexpectedly many subjects returned'
31
33
  end
32
34
 
33
35
  response.fetch('subjects', []).fetch(0, nil)
@@ -40,11 +42,10 @@ module Panoptes
40
42
  # @param subject_id [Integer] the ID of a subject associated with that workflow (through one of the assigned subject_sets)
41
43
  # @return nothing
42
44
  def retire_subject(workflow_id, subject_id, reason: nil)
43
- panoptes.post("/workflows/#{workflow_id}/retired_subjects", {
44
- admin: true,
45
- subject_id: subject_id,
46
- retirement_reason: reason
47
- })
45
+ panoptes.post("/workflows/#{workflow_id}/retired_subjects",
46
+ admin: true,
47
+ subject_id: subject_id,
48
+ retirement_reason: reason)
48
49
  true
49
50
  end
50
51
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Panoptes
2
4
  class Client
3
5
  module UserGroups
@@ -7,20 +9,20 @@ module Panoptes
7
9
  # @param name [String] The name of the user group. Must be unique for the entirity of Zooniverse.
8
10
  # @return [Hash] The created user group.
9
11
  def create_user_group(name)
10
- panoptes.post("/user_groups", user_groups: {
11
- name: name
12
- })["user_groups"][0]
12
+ panoptes.post('/user_groups', user_groups: {
13
+ name: name
14
+ })['user_groups'][0]
13
15
  end
14
16
 
15
17
  def user_groups
16
- panoptes.get("/user_groups")["user_groups"]
18
+ panoptes.get('/user_groups')['user_groups']
17
19
  end
18
20
 
19
21
  def join_user_group(user_group_id, user_id, join_token:)
20
- panoptes.post("/memberships", memberships: {
21
- join_token: join_token,
22
- links: {user: user_id, user_group: user_group_id}
23
- })["memberships"][0]
22
+ panoptes.post('/memberships', memberships: {
23
+ join_token: join_token,
24
+ links: { user: user_id, user_group: user_group_id }
25
+ })['memberships'][0]
24
26
  end
25
27
 
26
28
  def remove_user_from_user_group(user_group_id, user_id)
@@ -29,7 +31,7 @@ module Panoptes
29
31
 
30
32
  def delete_user_group(user_group_id)
31
33
  response = panoptes.connection.get("/api/user_groups/#{user_group_id}")
32
- etag = response.headers["ETag"]
34
+ etag = response.headers['ETag']
33
35
 
34
36
  panoptes.delete("/user_groups/#{user_group_id}", {}, etag: etag)
35
37
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Panoptes
2
4
  class Client
3
5
  module Users
4
6
  def user(user_id)
5
7
  response = panoptes.get("users/#{user_id}")
6
- response.fetch("users").find{ |i| i.fetch("id").to_s == user_id.to_s }
8
+ response.fetch('users').find { |i| i.fetch('id').to_s == user_id.to_s }
7
9
  end
8
10
  end
9
11
  end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Panoptes
2
4
  class Client
3
- VERSION = '1.0.0.pre1'.freeze
5
+ VERSION = '1.0.0'
4
6
  end
5
7
  end
@@ -1,18 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Panoptes
2
4
  class Client
3
5
  module Workflows
4
6
  def workflow(workflow_id)
5
7
  response = panoptes.get("/workflows/#{workflow_id}")
6
- response.fetch("workflows").find {|i| i.fetch("id").to_s == workflow_id.to_s }
8
+ response.fetch('workflows').find do |i|
9
+ i.fetch('id').to_s == workflow_id.to_s
10
+ end
7
11
  end
8
12
 
9
13
  def create_workflow(attributes)
10
- response = panoptes.post("/workflows", workflows: attributes)
11
- response.fetch("workflows").first
14
+ response = panoptes.post('/workflows', workflows: attributes)
15
+ response.fetch('workflows').first
12
16
  end
13
17
 
14
18
  def add_subject_set_to_workflow(workflow_id, subject_set_id)
15
- panoptes.post("/workflows/#{workflow_id}/links/subject_sets",subject_sets: subject_set_id)
19
+ panoptes.post(
20
+ "/workflows/#{workflow_id}/links/subject_sets",
21
+ subject_sets: subject_set_id
22
+ )
16
23
  end
17
24
  end
18
25
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'faraday'
2
4
  require 'faraday_middleware'
3
5
  require 'faraday/panoptes'
@@ -58,7 +60,10 @@ module Panoptes
58
60
  end
59
61
 
60
62
  def request(method, path, *args)
61
- path = "#{prefix}/#{path}" if prefix
63
+ if prefix
64
+ sep = path[0] == '/' ? nil : '/'
65
+ path = "#{prefix}#{sep}#{path}"
66
+ end
62
67
  handle_response connection.send(method, path, *args)
63
68
  end
64
69
 
@@ -83,9 +88,7 @@ module Panoptes
83
88
  faraday.request :json
84
89
  faraday.response :json
85
90
  faraday.adapter Faraday.default_adapter
86
- if @params
87
- faraday.params = @params
88
- end
91
+ faraday.params = @params if @params
89
92
  end
90
93
  end
91
94
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'base_endpoint'
2
4
 
3
5
  module Panoptes
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'base_endpoint'
2
4
 
3
5
  module Panoptes
@@ -7,7 +9,7 @@ module Panoptes
7
9
  # @see Panoptes::Endpoints::BaseEndpoint#initialize
8
10
  def initialize(auth: {}, url: nil, prefix: nil, &config)
9
11
  super auth: auth, url: url, prefix: prefix do |faraday|
10
- config.call(faraday) if config
12
+ yield(faraday) if config
11
13
  faraday.request :json
12
14
  faraday.response :json
13
15
  faraday.adapter Faraday.default_adapter
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Panoptes
2
4
  class Session
3
- def initialize(auth)
4
- end
5
+ def initialize(auth); end
5
6
  end
6
7
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Panoptes
2
4
  # Backwards compat
3
5
  class TalkClient < Client
@@ -1,31 +1,32 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'panoptes/client/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "panoptes-client"
8
+ spec.name = 'panoptes-client'
8
9
  spec.version = Panoptes::Client::VERSION
9
10
  spec.authors = ['Marten Veldthuis', 'Zach Wolfenbarger', 'Amy Boyer']
10
11
  spec.email = ['marten@veldthuis.com', 'zach@zooniverse.org', 'amy@zooniverse.org']
11
12
 
12
- spec.summary = %q{API wrapper for https://panoptes.zooniverse.org}
13
- spec.homepage = "https://github.com/zooniverse/panoptes-client.rb"
14
- spec.license = "Apache 2.0"
13
+ spec.summary = 'API wrapper for https://panoptes.zooniverse.org'
14
+ spec.homepage = 'https://github.com/zooniverse/panoptes-client.rb'
15
+ spec.license = 'Apache 2.0'
15
16
 
16
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
- spec.bindir = "exe"
18
+ spec.bindir = 'exe'
18
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
20
21
 
21
- spec.add_dependency "deprecate"
22
- spec.add_dependency "faraday"
23
- spec.add_dependency "faraday-panoptes", "~> 0.3.0"
24
- spec.add_dependency "jwt", "~> 1.5.0"
22
+ spec.add_dependency 'deprecate'
23
+ spec.add_dependency 'faraday'
24
+ spec.add_dependency 'faraday-panoptes', '~> 0.3.0'
25
+ spec.add_dependency 'jwt', '~> 1.5.0'
25
26
 
26
- spec.add_development_dependency "bundler", "~> 1.11"
27
- spec.add_development_dependency "rake", "~> 10.0"
28
- spec.add_development_dependency "rspec", "~> 3.0"
29
- spec.add_development_dependency "timecop", "~> 0.8.0"
30
- spec.add_development_dependency "yard"
27
+ spec.add_development_dependency 'bundler', '~> 1.11'
28
+ spec.add_development_dependency 'rake', '~> 10.0'
29
+ spec.add_development_dependency 'rspec', '~> 3.0'
30
+ spec.add_development_dependency 'timecop', '~> 0.8.0'
31
+ spec.add_development_dependency 'yard'
31
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: panoptes-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marten Veldthuis
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2019-12-04 00:00:00.000000000 Z
13
+ date: 2019-12-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: deprecate
@@ -150,7 +150,7 @@ files:
150
150
  - ".gitignore"
151
151
  - ".hound.yml"
152
152
  - ".rspec"
153
- - ".ruby-style.yml"
153
+ - ".rubocop.yml"
154
154
  - ".travis.yml"
155
155
  - CHANGELOG.md
156
156
  - CODE_OF_CONDUCT.md
@@ -200,9 +200,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
200
200
  version: '0'
201
201
  required_rubygems_version: !ruby/object:Gem::Requirement
202
202
  requirements:
203
- - - ">"
203
+ - - ">="
204
204
  - !ruby/object:Gem::Version
205
- version: 1.3.1
205
+ version: '0'
206
206
  requirements: []
207
207
  rubygems_version: 3.0.4
208
208
  signing_key:
@@ -1,206 +0,0 @@
1
- inherit_from: .rubocop_todo.yml
2
-
3
- AllCops:
4
- Exclude:
5
- - "vendor/**/*"
6
- - "db/schema.rb"
7
- UseCache: false
8
-
9
- Style/DotPosition:
10
- Description: Checks the position of the dot in multi-line method calls.
11
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains
12
- Enabled: true
13
- EnforcedStyle: leading
14
- SupportedStyles:
15
- - leading
16
- - trailing
17
- Style/FileName:
18
- Description: Use snake_case for source file names.
19
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-files
20
- Enabled: true
21
- Exclude: []
22
- Style/GuardClause:
23
- Description: Check for conditionals that can be replaced with guard clauses
24
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals
25
- Enabled: false
26
- MinBodyLength: 1
27
- Style/IfUnlessModifier:
28
- Description: Favor modifier if/unless usage when you have a single-line body.
29
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier
30
- Enabled: false
31
- MaxLineLength: 80
32
- Style/OptionHash:
33
- Description: Don't use option hashes when you can use keyword arguments.
34
- Enabled: false
35
- Style/ParallelAssignment:
36
- Enabled: false
37
- Style/PercentLiteralDelimiters:
38
- Description: Use `%`-literal delimiters consistently
39
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-literal-braces
40
- Enabled: false
41
- PreferredDelimiters:
42
- "%": "()"
43
- "%i": "()"
44
- "%q": "()"
45
- "%Q": "()"
46
- "%r": "{}"
47
- "%s": "()"
48
- "%w": "()"
49
- "%W": "()"
50
- "%x": "()"
51
- Style/PredicateName:
52
- Description: Check the names of predicate methods.
53
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark
54
- Enabled: true
55
- NamePrefix:
56
- - is_
57
- - has_
58
- - have_
59
- NamePrefixBlacklist:
60
- - is_
61
- Exclude:
62
- - spec/**/*
63
- Style/RaiseArgs:
64
- Description: Checks the arguments passed to raise/fail.
65
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#exception-class-messages
66
- Enabled: false
67
- EnforcedStyle: exploded
68
- SupportedStyles:
69
- - compact
70
- - exploded
71
- Style/SignalException:
72
- Description: Checks for proper usage of fail and raise.
73
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#fail-method
74
- Enabled: false
75
- EnforcedStyle: semantic
76
- SupportedStyles:
77
- - only_raise
78
- - only_fail
79
- - semantic
80
- Style/SingleLineBlockParams:
81
- Description: Enforces the names of some block params.
82
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#reduce-blocks
83
- Enabled: false
84
- Methods:
85
- - reduce:
86
- - a
87
- - e
88
- - inject:
89
- - a
90
- - e
91
- Style/SingleLineMethods:
92
- Description: Avoid single-line methods.
93
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-single-line-methods
94
- Enabled: false
95
- AllowIfMethodIsEmpty: true
96
- Metrics/AbcSize:
97
- Description: A calculated magnitude based on number of assignments, branches, and
98
- conditions.
99
- Enabled: false
100
- Max: 15
101
- Metrics/ClassLength:
102
- Description: Avoid classes longer than 100 lines of code.
103
- Enabled: false
104
- CountComments: false
105
- Max: 100
106
- Metrics/LineLength:
107
- Enabled: false
108
- Metrics/ModuleLength:
109
- CountComments: false
110
- Max: 100
111
- Description: Avoid modules longer than 100 lines of code.
112
- Enabled: false
113
- Metrics/CyclomaticComplexity:
114
- Description: A complexity metric that is strongly correlated to the number of test
115
- cases needed to validate a method.
116
- Enabled: false
117
- Max: 6
118
- Metrics/MethodLength:
119
- Description: Avoid methods longer than 10 lines of code.
120
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#short-methods
121
- Enabled: false
122
- CountComments: false
123
- Max: 10
124
- Metrics/ParameterLists:
125
- Description: Avoid parameter lists longer than three or four parameters.
126
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#too-many-params
127
- Enabled: false
128
- Max: 5
129
- CountKeywordArgs: true
130
- Metrics/PerceivedComplexity:
131
- Description: A complexity metric geared towards measuring complexity for a human
132
- reader.
133
- Enabled: false
134
- Max: 7
135
- Lint/AssignmentInCondition:
136
- Description: Don't use assignment in conditions.
137
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition
138
- Enabled: false
139
- AllowSafeAssignment: true
140
- Style/InlineComment:
141
- Description: Avoid inline comments.
142
- Enabled: false
143
- Style/AccessorMethodName:
144
- Description: Check the naming of accessor methods for get_/set_.
145
- Enabled: false
146
- Style/Alias:
147
- Description: Use alias_method instead of alias.
148
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#alias-method
149
- Enabled: false
150
- Style/Documentation:
151
- Description: Document classes and non-namespace modules.
152
- Enabled: false
153
- Style/DoubleNegation:
154
- Description: Checks for uses of double negation (!!).
155
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-bang-bang
156
- Enabled: false
157
- Style/EachWithObject:
158
- Description: Prefer `each_with_object` over `inject` or `reduce`.
159
- Enabled: false
160
- Style/EmptyLiteral:
161
- Description: Prefer literals to Array.new/Hash.new/String.new.
162
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#literal-array-hash
163
- Enabled: false
164
- Style/ModuleFunction:
165
- Description: Checks for usage of `extend self` in modules.
166
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#module-function
167
- Enabled: false
168
- Style/OneLineConditional:
169
- Description: Favor the ternary operator(?:) over if/then/else/end constructs.
170
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#ternary-operator
171
- Enabled: false
172
- Style/PerlBackrefs:
173
- Description: Avoid Perl-style regex back references.
174
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers
175
- Enabled: false
176
- Style/Send:
177
- Description: Prefer `Object#__send__` or `Object#public_send` to `send`, as `send`
178
- may overlap with existing methods.
179
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#prefer-public-send
180
- Enabled: false
181
- Style/SpecialGlobalVars:
182
- Description: Avoid Perl-style global variables.
183
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms
184
- Enabled: false
185
- Style/VariableInterpolation:
186
- Description: Don't interpolate global, instance and class variables directly in
187
- strings.
188
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#curlies-interpolate
189
- Enabled: false
190
- Style/WhenThen:
191
- Description: Use when x then ... for one-line cases.
192
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#one-line-cases
193
- Enabled: false
194
- Lint/EachWithObjectArgument:
195
- Description: Check for immutable argument given to each_with_object.
196
- Enabled: true
197
- Lint/HandleExceptions:
198
- Description: Don't suppress exception.
199
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions
200
- Enabled: false
201
- Lint/LiteralInCondition:
202
- Description: Checks of literals used in conditions.
203
- Enabled: false
204
- Lint/LiteralInInterpolation:
205
- Description: Checks for literals used in interpolation.
206
- Enabled: false