Module: Dipps::Client

Defined in:
lib/dipps/client.rb,
lib/dipps/client/error.rb,
lib/dipps/client/schema.rb,
lib/dipps/client/queries.rb,
lib/dipps/client/version.rb,
lib/dipps/client/transport.rb,
lib/dipps/client/configuration.rb,
lib/dipps/client/graphql_client.rb,
lib/dipps/client/queries/clients.rb,
lib/dipps/client/queries/create_client.rb,
lib/dipps/client/queries/update_client.rb,
lib/dipps/client/queries/own_invoices_page.rb,
lib/dipps/client/queries/create_own_invoice.rb,
lib/dipps/client/queries/own_credit_notes_page.rb

Defined Under Namespace

Modules: Queries Classes: Configuration, Error

Constant Summary collapse

SCHEMA_PATH =
File.expand_path(
  File.join(File.dirname(__FILE__), '..', '..', 'vendor', 'schema.json')
).freeze
Schema =
GraphQL::Client.load_schema(SCHEMA_PATH)
VERSION =
"0.6.1"
Transport =
GraphQL::Client::HTTP.new(Dipps::Client.configuration.api_url) do
  def headers(_)
    { 'Authorization' => "Bearer #{Dipps::Client.configuration.api_key}" }
  end
end
GraphqlClient =
GraphQL::Client.new(schema: Schema, execute: Transport)

Class Method Summary collapse

Class Method Details

.clients(freelance_profile_id:, org_number: nil, email: nil) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
# File 'lib/dipps/client.rb', line 73

def clients(freelance_profile_id:, org_number: nil, email: nil)
  perform_query(
    query: Dipps::Client::Queries::Clients,
    result_field: 'clients',
    variables: {
      orgNumber: org_number,
      email: email,
      freelance_profile_id: freelance_profile_id
    }
  )
end

.configurationObject



22
23
24
# File 'lib/dipps/client.rb', line 22

def configuration
  @configuration ||= Dipps::Client::Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



14
15
16
17
18
19
20
# File 'lib/dipps/client.rb', line 14

def configure
  yield(configuration)

  unless require_relative 'client/queries'
    raise 'Dipps::Client has already been configured.'
  end
end

.create_client(attributes:) ⇒ Object



85
86
87
88
89
90
91
92
93
# File 'lib/dipps/client.rb', line 85

def create_client(attributes:)
  perform_query(
    query: Dipps::Client::Queries::CreateClient,
    result_field: 'createClient',
    variables: {
      attributes: attributes
    }
  )
end

.create_own_invoice(freelance_profile_id:, attributes:) ⇒ Object



36
37
38
39
40
41
42
43
44
45
# File 'lib/dipps/client.rb', line 36

def create_own_invoice(freelance_profile_id:, attributes:)
  perform_query(
    query: Dipps::Client::Queries::CreateOwnInvoice,
    result_field: 'createOwnInvoice',
    variables: {
      freelance_profile_id: freelance_profile_id,
      attributes: attributes
    }
  )
end

.own_credit_notes_page(filter:, sort_by:, page: 1, per_page: 20) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/dipps/client.rb', line 60

def own_credit_notes_page(filter:, sort_by:, page: 1, per_page: 20)
  perform_query(
    query: Dipps::Client::Queries::OwnCreditNotesPage,
    result_field: 'ownCreditNotesPage',
    variables: {
      filter: filter,
      sort_by: sort_by,
      page: page,
      per_page: per_page
    }
  )
end

.own_invoices_page(filter:, sort_by:, page: 1, per_page: 20) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/dipps/client.rb', line 47

def own_invoices_page(filter:, sort_by:, page: 1, per_page: 20)
  perform_query(
    query: Dipps::Client::Queries::OwnInvoicesPage,
    result_field: 'ownInvoicesPage',
    variables: {
      filter: filter,
      sort_by: sort_by,
      page: page,
      per_page: per_page
    }
  )
end

.perform_query(query:, result_field:, variables: {}) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/dipps/client.rb', line 26

def perform_query(query:, result_field:, variables: {})
  result = GraphqlClient.query(query, variables: variables)

  if result.errors.any?
    raise(Dipps::Client::Error, result.errors.details.inspect)
  end

  result.data.to_h.fetch(result_field)
end

.update_client(id:, attributes:) ⇒ Object



95
96
97
98
99
100
101
102
103
104
# File 'lib/dipps/client.rb', line 95

def update_client(id:, attributes:)
  perform_query(
    query: Dipps::Client::Queries::UpdateClient,
    result_field: 'updateClient',
    variables: {
      id: id,
      attributes: attributes
    }
  )
end