ecoportal-api-graphql 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +21 -0
- data/.rspec +3 -0
- data/.rubocop.yml +55 -0
- data/.travis.yml +5 -0
- data/.yardopts +10 -0
- data/CHANGELOG.md +22 -0
- data/Gemfile +6 -0
- data/LICENSE +21 -0
- data/README.md +20 -0
- data/Rakefile +27 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/bin/setup.ps1 +6 -0
- data/ecoportal-api-graphql.gemspec +34 -0
- data/lib/ecoportal/api/common/graphql/auth_service.rb +66 -0
- data/lib/ecoportal/api/common/graphql/class_helpers.rb +34 -0
- data/lib/ecoportal/api/common/graphql/client.rb +43 -0
- data/lib/ecoportal/api/common/graphql/doc_helpers.rb +10 -0
- data/lib/ecoportal/api/common/graphql/hash_helpers.rb +79 -0
- data/lib/ecoportal/api/common/graphql/http_client.rb +84 -0
- data/lib/ecoportal/api/common/graphql.rb +15 -0
- data/lib/ecoportal/api/common.graphql.rb +8 -0
- data/lib/ecoportal/api/graphql/base/action.rb +36 -0
- data/lib/ecoportal/api/graphql/base/action_category.rb +13 -0
- data/lib/ecoportal/api/graphql/base/connection.rb +33 -0
- data/lib/ecoportal/api/graphql/base/contractor_entity.rb +17 -0
- data/lib/ecoportal/api/graphql/base/date_time.rb +12 -0
- data/lib/ecoportal/api/graphql/base/field.rb +12 -0
- data/lib/ecoportal/api/graphql/base/file_attachment.rb +15 -0
- data/lib/ecoportal/api/graphql/base/file_container.rb +14 -0
- data/lib/ecoportal/api/graphql/base/id_diff_input.rb +11 -0
- data/lib/ecoportal/api/graphql/base/model.rb +33 -0
- data/lib/ecoportal/api/graphql/base/organization.rb +13 -0
- data/lib/ecoportal/api/graphql/base/page.rb +12 -0
- data/lib/ecoportal/api/graphql/base/page_info.rb +12 -0
- data/lib/ecoportal/api/graphql/base/payload.rb +25 -0
- data/lib/ecoportal/api/graphql/base/person_member.rb +20 -0
- data/lib/ecoportal/api/graphql/base/query.rb +61 -0
- data/lib/ecoportal/api/graphql/base/query_connection.rb +56 -0
- data/lib/ecoportal/api/graphql/base/resource.rb +13 -0
- data/lib/ecoportal/api/graphql/base/validation_errors.rb +23 -0
- data/lib/ecoportal/api/graphql/base.rb +28 -0
- data/lib/ecoportal/api/graphql/connection/action.rb +11 -0
- data/lib/ecoportal/api/graphql/connection/contractor_entity.rb +11 -0
- data/lib/ecoportal/api/graphql/connection/person_member.rb +11 -0
- data/lib/ecoportal/api/graphql/connection.rb +12 -0
- data/lib/ecoportal/api/graphql/fragment/contractor_entity.rb +19 -0
- data/lib/ecoportal/api/graphql/fragment/pagination.rb +17 -0
- data/lib/ecoportal/api/graphql/fragment.rb +50 -0
- data/lib/ecoportal/api/graphql/input/create_contractor_entity.rb +14 -0
- data/lib/ecoportal/api/graphql/input/destroy_contractor_entity.rb +11 -0
- data/lib/ecoportal/api/graphql/input/search.rb +13 -0
- data/lib/ecoportal/api/graphql/input/search_filter.rb +12 -0
- data/lib/ecoportal/api/graphql/input/search_sorter.rb +11 -0
- data/lib/ecoportal/api/graphql/input/update_contractor_entity.rb +10 -0
- data/lib/ecoportal/api/graphql/input.rb +15 -0
- data/lib/ecoportal/api/graphql/model/account.rb +13 -0
- data/lib/ecoportal/api/graphql/model/action.rb +21 -0
- data/lib/ecoportal/api/graphql/model/contractor_entity.rb +12 -0
- data/lib/ecoportal/api/graphql/model/field.rb +10 -0
- data/lib/ecoportal/api/graphql/model/file_attachment.rb +10 -0
- data/lib/ecoportal/api/graphql/model/file_container.rb +11 -0
- data/lib/ecoportal/api/graphql/model/organization.rb +46 -0
- data/lib/ecoportal/api/graphql/model/page.rb +10 -0
- data/lib/ecoportal/api/graphql/model/person_member.rb +15 -0
- data/lib/ecoportal/api/graphql/model/resource.rb +12 -0
- data/lib/ecoportal/api/graphql/model/user.rb +12 -0
- data/lib/ecoportal/api/graphql/model.rb +20 -0
- data/lib/ecoportal/api/graphql/payload/create_contractor_entity.rb +11 -0
- data/lib/ecoportal/api/graphql/payload/destroy_contractor_entity.rb +10 -0
- data/lib/ecoportal/api/graphql/payload/update_contractor_entity.rb +10 -0
- data/lib/ecoportal/api/graphql/payload.rb +12 -0
- data/lib/ecoportal/api/graphql/query/actions.rb +94 -0
- data/lib/ecoportal/api/graphql/query/contractor_entities.rb +64 -0
- data/lib/ecoportal/api/graphql/query.rb +11 -0
- data/lib/ecoportal/api/graphql.rb +38 -0
- data/lib/ecoportal/api/graphql_version.rb +5 -0
- data/lib/ecoportal/api-graphql.rb +10 -0
- data/tests/actions_get.rb +8 -0
- data/tests/contractor_entities_get.rb +20 -0
- data/tests/local_libs.rb +14 -0
- metadata +278 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class GraphQL
|
4
|
+
module Model
|
5
|
+
class Action < Ecoportal::API::GraphQL::Base::Action
|
6
|
+
embeds_one :actionCategory, klass: GraphQL::Base::ActionCategory
|
7
|
+
embeds_one :dueOrClosedDate, klass: GraphQL::Base::DateTime
|
8
|
+
embeds_many :assignedTo, klass: GraphQL::Model::PersonMember
|
9
|
+
embeds_one :creator, klass: GraphQL::Model::PersonMember
|
10
|
+
embeds_one :creatorUser, klass: GraphQL::Model::User
|
11
|
+
embeds_one :updater, klass: GraphQL::Model::PersonMember
|
12
|
+
embeds_one :updaterUser, klass: GraphQL::Model::User
|
13
|
+
embeds_one :completer, klass: GraphQL::Model::PersonMember
|
14
|
+
embeds_many :fileContainers, klass: GraphQL::Model::FileContainer
|
15
|
+
embeds_many :linkedResources, klass: GraphQL::Model::Resource
|
16
|
+
#embeds_many :activities, klass: GraphQL::Activity::Action
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class GraphQL
|
4
|
+
module Model
|
5
|
+
class ContractorEntity < Ecoportal::API::GraphQL::Base::ContractorEntity
|
6
|
+
embeds_one :associatedPeople, klass: "Ecoportal::API::GraphQL::Connections::PersonMemberConnection"
|
7
|
+
embeds_many :leadContractors, enum_class: "Ecoportal::API::GraphQL::Model::PersonMember"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class GraphQL
|
4
|
+
module Model
|
5
|
+
class Organization < Ecoportal::API::GraphQL::Base::Organization
|
6
|
+
class << self
|
7
|
+
#userGroup, userGroups,
|
8
|
+
#tagTree, tagTrees,
|
9
|
+
#register, registers
|
10
|
+
#personMembers, attachablePersonMembers
|
11
|
+
#contractorEntity,
|
12
|
+
|
13
|
+
# @return [Connection::ContractorEntity, Query::ContractorEntities]
|
14
|
+
def contractorEntities(**kargs, &block)
|
15
|
+
if kargs.empty?
|
16
|
+
contractorEntitiesQuery
|
17
|
+
else
|
18
|
+
contractorEntitiesQuery.query(**kargs, &block)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def contractorEntitiesQuery
|
23
|
+
Ecoportal::API::GraphQL::Query::ContractorEntities.new(client)
|
24
|
+
end
|
25
|
+
|
26
|
+
# @return [Connection::Action, Query::Actions]
|
27
|
+
def actions(**kargs, &block)
|
28
|
+
if kargs.empty?
|
29
|
+
actionsQuery
|
30
|
+
else
|
31
|
+
actionsQuery.query(**kargs, &block)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def actionsQuery
|
36
|
+
Ecoportal::API::GraphQL::Query::Actions.new(client)
|
37
|
+
end
|
38
|
+
|
39
|
+
#actionCategories
|
40
|
+
#action, actionsByPage, actionsCounter
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class GraphQL
|
4
|
+
module Model
|
5
|
+
class PersonMember < Ecoportal::API::GraphQL::Base::PersonMember
|
6
|
+
embeds_one :contractorOrganization, klass: "Ecoportal::API::GraphQL::Model::ContractorEntity"
|
7
|
+
embeds_one :account, klass: Ecoportal::API::GraphQL::Model::Account
|
8
|
+
|
9
|
+
# embeds_many :privateFields, enum_class: Ecoportal::API::GraphQL::Model::MemberSchemaFields
|
10
|
+
# embeds_many :publicFields, enum_class: Ecoportal::API::GraphQL::Model::MemberSchemaFields
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class GraphQL
|
4
|
+
module Model
|
5
|
+
class Resource < Ecoportal::API::GraphQL::Base::Resource
|
6
|
+
embeds_one :page, klass: "Ecoportal::API::GraphQL::Model::Page"
|
7
|
+
embeds_one :field, klass: "Ecoportal::API::GraphQL::Model::Field"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class GraphQL
|
4
|
+
module Model
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'ecoportal/api/graphql/model/account'
|
11
|
+
require 'ecoportal/api/graphql/model/user'
|
12
|
+
require 'ecoportal/api/graphql/model/person_member'
|
13
|
+
require 'ecoportal/api/graphql/model/file_attachment'
|
14
|
+
require 'ecoportal/api/graphql/model/file_container'
|
15
|
+
require 'ecoportal/api/graphql/model/field'
|
16
|
+
require 'ecoportal/api/graphql/model/page'
|
17
|
+
require 'ecoportal/api/graphql/model/resource'
|
18
|
+
require 'ecoportal/api/graphql/model/action'
|
19
|
+
require 'ecoportal/api/graphql/model/contractor_entity'
|
20
|
+
require 'ecoportal/api/graphql/model/organization'
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class GraphQL
|
4
|
+
module Payload
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'ecoportal/api/graphql/payload/create_contractor_entity'
|
11
|
+
require 'ecoportal/api/graphql/payload/update_contractor_entity'
|
12
|
+
require 'ecoportal/api/graphql/payload/destroy_contractor_entity'
|
@@ -0,0 +1,94 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class GraphQL
|
4
|
+
module Query
|
5
|
+
class Actions < Ecoportal::API::GraphQL::Base::QueryConnection
|
6
|
+
class_resolver :item_class, Ecoportal::API::GraphQL::Model::Action
|
7
|
+
class_resolver :connection_class, Ecoportal::API::GraphQL::Connection::Action
|
8
|
+
|
9
|
+
def query(path: default_base_path, **kargs, &block)
|
10
|
+
path ||= default_base_path
|
11
|
+
kargs = self.class.slice_params(kargs)
|
12
|
+
request(*path, "actions") do
|
13
|
+
next client.query(kargs, &basic_block(&block)) if block_given?
|
14
|
+
client.query(kargs, &basic_block)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def default_base_path
|
19
|
+
["currentOrganization"]
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def basic_block(&block)
|
25
|
+
connection_block = block || default_connection_block
|
26
|
+
Proc.new {
|
27
|
+
query(searchConf: :Search, after: :string, before: :string, first: :int, last: :int) {
|
28
|
+
currentOrganization {
|
29
|
+
actions(
|
30
|
+
searchConf: :searchConf,
|
31
|
+
after: :after,
|
32
|
+
before: :before,
|
33
|
+
first: :first,
|
34
|
+
last: :last,
|
35
|
+
&connection_block
|
36
|
+
)
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
def default_connection_block
|
43
|
+
Proc.new {
|
44
|
+
totalCount
|
45
|
+
pageInfo {
|
46
|
+
endCursor
|
47
|
+
}
|
48
|
+
nodes {
|
49
|
+
id
|
50
|
+
altId
|
51
|
+
actionCategory {
|
52
|
+
name
|
53
|
+
value
|
54
|
+
}
|
55
|
+
standaloneAction
|
56
|
+
status
|
57
|
+
relativeStatus
|
58
|
+
archived
|
59
|
+
tags
|
60
|
+
name
|
61
|
+
description
|
62
|
+
assignedTo {
|
63
|
+
name
|
64
|
+
email
|
65
|
+
}
|
66
|
+
dueDate {
|
67
|
+
dateTime
|
68
|
+
timeZone
|
69
|
+
}
|
70
|
+
completedAt {
|
71
|
+
dateTime
|
72
|
+
timeZone
|
73
|
+
}
|
74
|
+
completer {
|
75
|
+
name
|
76
|
+
email
|
77
|
+
}
|
78
|
+
linkedResources {
|
79
|
+
page {
|
80
|
+
name
|
81
|
+
mouldCounter
|
82
|
+
}
|
83
|
+
field {
|
84
|
+
label
|
85
|
+
}
|
86
|
+
}
|
87
|
+
}
|
88
|
+
}
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
class GraphQL
|
4
|
+
module Query
|
5
|
+
class ContractorEntities < Ecoportal::API::GraphQL::Base::QueryConnection
|
6
|
+
class_resolver :item_class, Ecoportal::API::GraphQL::Model::ContractorEntity
|
7
|
+
class_resolver :connection_class, Ecoportal::API::GraphQL::Connection::ContractorEntity
|
8
|
+
|
9
|
+
def query(path: default_base_path, **kargs, &block)
|
10
|
+
path ||= default_base_path
|
11
|
+
kargs = self.class.slice_params(kargs)
|
12
|
+
ap = access_point(path)
|
13
|
+
request(*path, "contractorEntities") do
|
14
|
+
next client.query(kargs, &basic_block(&block)) if block_given?
|
15
|
+
client.query(kargs, &basic_block)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def default_base_path
|
20
|
+
["currentOrganization"]
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def basic_block(&block)
|
26
|
+
connection_block = block || default_connection_block
|
27
|
+
Proc.new {
|
28
|
+
query(searchConf: :Search, after: :string, before: :string, first: :int, last: :int) {
|
29
|
+
currentOrganization {
|
30
|
+
contractorEntities(
|
31
|
+
searchConf: :searchConf,
|
32
|
+
after: :after,
|
33
|
+
before: :before,
|
34
|
+
first: :first,
|
35
|
+
last: :last,
|
36
|
+
&connection_block
|
37
|
+
)
|
38
|
+
}
|
39
|
+
}
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
def default_connection_block
|
44
|
+
Proc.new {
|
45
|
+
totalCount
|
46
|
+
pageInfo {
|
47
|
+
endCursor
|
48
|
+
}
|
49
|
+
nodes {
|
50
|
+
id
|
51
|
+
name
|
52
|
+
schemaId
|
53
|
+
active
|
54
|
+
approved
|
55
|
+
associatedPeopleIds
|
56
|
+
leadContractorIds
|
57
|
+
}
|
58
|
+
}
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Ecoportal
|
2
|
+
module API
|
3
|
+
# @attr_reader client [Common::GraphQL::Client] a client object that holds the configuration of the api connection.
|
4
|
+
# @attr_reader logger [Logger] the logger.
|
5
|
+
class GraphQL
|
6
|
+
include Ecoportal::API::Common::GraphQL::ClassHelpers
|
7
|
+
|
8
|
+
attr_reader :client
|
9
|
+
|
10
|
+
# Creates a `GraphQL` object to interact with the ecoPortal `GraphQL API`.
|
11
|
+
# @param org_id [String] the id of the target organization.
|
12
|
+
# It defaults to the environmental variable `ORGANIZATION_ID`, if defined
|
13
|
+
# @param logger [Logger] an object with `Logger` interface to generate logs.
|
14
|
+
def initialize(org_id: ENV['ORGANIZATION_ID'])
|
15
|
+
@client = Ecoportal::API::Common::GraphQL::Client.new(org_id: org_id, no_schema: true)
|
16
|
+
@fragments = Ecoportal::API::GraphQL::Fragment.new(client)
|
17
|
+
end
|
18
|
+
|
19
|
+
def currentOrganizationClass
|
20
|
+
API::GraphQL::Model::Organization.tap do |org_class|
|
21
|
+
org_class.client = client
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def currentOrganization
|
26
|
+
currentOrganizationClass
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
require 'ecoportal/api/graphql/base'
|
33
|
+
require 'ecoportal/api/graphql/model'
|
34
|
+
require 'ecoportal/api/graphql/connection'
|
35
|
+
require 'ecoportal/api/graphql/payload'
|
36
|
+
require 'ecoportal/api/graphql/input'
|
37
|
+
require 'ecoportal/api/graphql/fragment'
|
38
|
+
require 'ecoportal/api/graphql/query'
|
@@ -0,0 +1,8 @@
|
|
1
|
+
require_relative 'local_libs'
|
2
|
+
require 'ecoportal/api-graphql'
|
3
|
+
|
4
|
+
api = Ecoportal::API::GraphQL.new
|
5
|
+
api.currentOrganization.actions.each_with_index do |action, idx|
|
6
|
+
break if idx >= 14
|
7
|
+
puts "#{idx+1}. '#{action.name}' (#{action.altId}): #{action.status} (#{action.relativeStatus})"
|
8
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative 'local_libs'
|
2
|
+
require 'ecoportal/api-graphql'
|
3
|
+
|
4
|
+
api = Ecoportal::API::GraphQL.new
|
5
|
+
api.currentOrganization.contractorEntities.each_with_index do |entity, idx|
|
6
|
+
break if idx >= 14
|
7
|
+
puts "#{idx+1}. #{entity.name}"
|
8
|
+
end
|
9
|
+
|
10
|
+
result = api.currentOrganization.contractorEntities(first: 10)
|
11
|
+
result.nodes.each {|entity| puts "• #{entity.name}"}
|
12
|
+
|
13
|
+
result = api.currentOrganization.contractorEntities(first: 5) {
|
14
|
+
nodes {
|
15
|
+
id
|
16
|
+
name
|
17
|
+
approved
|
18
|
+
}
|
19
|
+
}
|
20
|
+
result.nodes.each {|entity| puts "#{entity.name} => approved? #{entity.approved}"}
|
data/tests/local_libs.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
base_dir = 'C:/ruby_scripts/git'
|
2
|
+
|
3
|
+
api_path = File.join(base_dir,'/ecoportal-api/lib')
|
4
|
+
$LOAD_PATH.unshift File.expand_path(api_path)
|
5
|
+
#require 'ecoportal/api'
|
6
|
+
api_req = File.join(base_dir,'/ecoportal-api/lib/ecoportal/api')
|
7
|
+
require api_req
|
8
|
+
|
9
|
+
api_v2_path = File.join(base_dir,'/ecoportal-api-v2/lib')
|
10
|
+
$LOAD_PATH.unshift File.expand_path(api_v2_path)
|
11
|
+
#require 'ecoportal/api-v2'
|
12
|
+
require File.join(base_dir,'/ecoportal-api-v2/lib/ecoportal/api-v2')
|
13
|
+
api_path = '../lib'
|
14
|
+
$LOAD_PATH.unshift File.expand_path(api_path)
|