Class: ConnectorsSdk::Base::Connector

Inherits:
Object
  • Object
show all
Defined in:
lib/connectors_sdk/base/connector.rb

Instance Method Summary collapse

Instance Method Details

#access_token(params) ⇒ Object



91
92
93
# File 'lib/connectors_sdk/base/connector.rb', line 91

def access_token(params)
  authorization.access_token(params)
end

#authorization_uri(params) ⇒ Object



87
88
89
# File 'lib/connectors_sdk/base/connector.rb', line 87

def authorization_uri(params)
  authorization.authorization_uri(params)
end

#compare_secretsObject



106
107
108
# File 'lib/connectors_sdk/base/connector.rb', line 106

def compare_secrets(*)
  raise 'Not implemented for this connector'
end

#configurable_fieldsObject



122
123
124
# File 'lib/connectors_sdk/base/connector.rb', line 122

def configurable_fields
  []
end

#connection_requires_redirectObject



118
119
120
# File 'lib/connectors_sdk/base/connector.rb', line 118

def connection_requires_redirect
  false
end

#deleted(params) ⇒ Object



65
66
67
68
69
70
71
72
73
# File 'lib/connectors_sdk/base/connector.rb', line 65

def deleted(params)
  convert_third_party_errors do
    results = []
    extractor(params).yield_deleted_ids(params[:ids]) do |id|
      results << id
    end
    results
  end
end

#display_nameObject



110
111
112
# File 'lib/connectors_sdk/base/connector.rb', line 110

def display_name
  raise 'Not implemented for this connector'
end

#download(params) ⇒ Object



83
84
85
# File 'lib/connectors_sdk/base/connector.rb', line 83

def download(params)
  extractor(params).download(params[:meta])
end

#extract(params) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/connectors_sdk/base/connector.rb', line 37

def extract(params)
  convert_third_party_errors do
    extractor = extractor(params)

    extractor.yield_document_changes(:modified_since => extractor.config.cursors[:modified_since]) do |action, doc, download_args_and_proc|
      download_obj = nil
      if download_args_and_proc
        download_obj = {
          id: download_args_and_proc[0],
          name: download_args_and_proc[1],
          size: download_args_and_proc[2],
          download_args: download_args_and_proc[3]
        }
      end

      doc = {
        :action => action,
        :document => doc,
        :download => download_obj
      }

      yield doc
    end

    extractor.config.to_h[:cursors]
  end
end

#extractor(params) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/connectors_sdk/base/connector.rb', line 14

def extractor(params)
  content_source_id = params.fetch(:content_source_id)
  secret_storage = params[:secret_storage]

  extractor_class.new(
    content_source_id: content_source_id || "GENERATED-#{BSON::ObjectId.new}",
    service_type: service_type,
    authorization_data_proc: proc do
      secret = secret_storage.fetch_secret(content_source_id)
      {
        access_token: secret[:access_token]
      }
    end,
    client_proc: proc {
      secret = secret_storage.fetch_secret(content_source_id)
      params[:access_token] = secret[:access_token]
      client(params)
    },
    config: config(params),
    features: params.fetch(:features, {}) || {}
  )
end

#permissions(params) ⇒ Object



75
76
77
78
79
80
81
# File 'lib/connectors_sdk/base/connector.rb', line 75

def permissions(params)
  convert_third_party_errors do
    extractor(params).yield_permissions(params[:user_id]) do |permissions|
      return permissions
    end
  end
end

#refresh(params) ⇒ Object



95
96
97
# File 'lib/connectors_sdk/base/connector.rb', line 95

def refresh(params)
  authorization.refresh(params)
end

#service_typeObject



114
115
116
# File 'lib/connectors_sdk/base/connector.rb', line 114

def service_type
  self.class::SERVICE_TYPE
end

#source_status(params) ⇒ Object



99
100
101
102
103
104
# File 'lib/connectors_sdk/base/connector.rb', line 99

def source_status(params)
  health_check(params)
  { :status => 'OK', :statusCode => 200, :message => "Connected to #{display_name}" }
rescue StandardError => e
  { :status => 'FAILURE', :statusCode => e.is_a?(custom_client_error) ? e.status_code : 500, :message => e.message }
end