mindmatch 0.0.1.pre.beta5 → 0.0.1.pre.beta6

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
  SHA1:
3
- metadata.gz: f978f18c15bcfb99347493c00950cbf3db16a072
4
- data.tar.gz: 04aa7daa32980a92dd311e789a58f131fdf6a85e
3
+ metadata.gz: b3e5a49deda4f439b0c972b291dae0c73882de96
4
+ data.tar.gz: 902887d3cbc230824ca003c98143a51c529765b1
5
5
  SHA512:
6
- metadata.gz: 65d603edb50a123147eb72fc693fde93ef94fc15bb323e745b52419c739cbff26fcd01a07e2c8a05ece4cdb9175c7c0e34639e92972772805229301e3619e824
7
- data.tar.gz: d2224dbbbf6ac4b402b94ea356ef525d018d181d89764386de551b6c360cf7c7d62d254d7229b5d2acb0964f2ea8949d1178709b620b4dd5b7204eb05ac5fd91
6
+ metadata.gz: c01244cffb23578783e2c01ac75f787a5fa97a75add3efe26ac65628bd9eea223c8fbb97901a6e03ab8624d6a26fda295a3ca2ecf86f56b5e408677fd74ccf3f
7
+ data.tar.gz: a8894f5947afb821b3fcd10b34899b2b9adc213f7fc6b69908150680184f44aaca5a77119b7d7acccca518e82ee7946814866614a1fe067695579660ff6105da
@@ -6,10 +6,51 @@ module MindMatch
6
6
  class Unauthorized < StandardError; end
7
7
  class UnexpectedError < StandardError; end
8
8
 
9
- class Client
9
+ class QueryBuilder
10
+ def initialize
11
+ @fields = {}
12
+ end
10
13
 
11
- DEFAULT_ENDPOINT = 'https://api.mindmatch.ai'
12
- PATH = '/graphql'
14
+ def build
15
+ @fields = @fields.freeze
16
+ self
17
+ end
18
+
19
+ def to_h
20
+ Hash[
21
+ fields.map { |k, _v| [k, []] }
22
+ ]
23
+ end
24
+
25
+ def to_s
26
+ ''.tap do |s|
27
+ fields.each do |k, v|
28
+ s << "#{k} {\n"
29
+ s << v.join("\n")
30
+ s << "}\n"
31
+ end
32
+ end
33
+ end
34
+
35
+ private
36
+
37
+ attr_reader :fields
38
+
39
+ def method_missing(m, *args, &block)
40
+ method = m.to_s
41
+ if method.start_with?('with_')
42
+ key = method.split('with_')[1]
43
+ @fields[key] = args[0]
44
+ self
45
+ else
46
+ super(m, *args, &block)
47
+ end
48
+ end
49
+ end
50
+
51
+ class Client
52
+ DEFAULT_ENDPOINT = 'https://api.mindmatch.ai'.freeze
53
+ PATH = '/graphql'.freeze
13
54
 
14
55
  def initialize(token:, endpoint: DEFAULT_ENDPOINT)
15
56
  @token = token
@@ -28,26 +69,22 @@ module MindMatch
28
69
  create_matches(talents: talents, companies: companies)
29
70
  end
30
71
 
31
- def query_match(id:)
72
+ def query_match(id:, query: nil)
73
+ unless query.is_a?(QueryBuilder)
74
+ query = (@query_match_query ||= QueryBuilder.new
75
+ .with_results(%w(score personId positionId companyId))
76
+ .with_people(%w(id refId))
77
+ .with_positions(%w(id refId))
78
+ .build)
79
+ end
80
+
32
81
  query_match_score = <<-GRAPHQL
33
82
  query getMatch {
34
83
  match: getMatch(id: "#{id}") {
35
84
  id
36
85
  status
37
86
  data {
38
- results {
39
- score
40
- personId
41
- positionId
42
- }
43
- people {
44
- id
45
- refId
46
- }
47
- positions {
48
- id
49
- refId
50
- }
87
+ #{query.to_s}
51
88
  }
52
89
  }
53
90
  }
@@ -59,8 +96,8 @@ module MindMatch
59
96
  handle_error(raw_response)
60
97
  response = JSON.parse(raw_response.body)
61
98
  match = response.dig('data', 'match')
62
- if match&.has_key?('data') # FIX: remove data namespece in mindmatch api
63
- match = match.merge(match['data'] || {'results'=>[], 'people'=>[], 'positions'=>[]})
99
+ if match&.has_key?('data') # FIX: remove data namespace in mindmatch api
100
+ match = match.merge(match['data'] || query.to_h)
64
101
  match.delete('data')
65
102
  end
66
103
  match
@@ -1,3 +1,3 @@
1
1
  module MindMatch
2
- VERSION = "0.0.1-beta5"
2
+ VERSION = "0.0.1-beta6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mindmatch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.pre.beta5
4
+ version: 0.0.1.pre.beta6
5
5
  platform: ruby
6
6
  authors:
7
7
  - MindMatch
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2017-10-02 00:00:00.000000000 Z
13
+ date: 2017-10-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: faraday