carddb 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rspec_status +129 -128
- data/CHANGELOG.md +10 -0
- data/README.md +25 -6
- data/lib/carddb/query_builder.rb +20 -0
- data/lib/carddb/resources/scans.rb +30 -0
- data/lib/carddb/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6dd0e81d58cc181746d0c3f2f58a9b79b88422e3ceea5fab2ef59d9df85621eb
|
|
4
|
+
data.tar.gz: 90e8ea0085d6fab3b6f8bb93bf2d0a92e6971b0c50e313e2c0771e8d524da347
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3c556701df9623c27fee58aea3ec629bae7d3d4c8ba89290de268b0b374efb9fff6225b67ce65365fcb79c0e75cf2445c5ef5ebf30d2bd6fc1e1e84df21ac461
|
|
7
|
+
data.tar.gz: 21c656b6e138994dbf1ccf2face5291cc4e5b21a13dc15857ffc21fd1834da04f9241b9057e531ff8e62b4e813efd83b11333346ee05b8007e39916e94a39265
|
data/.rspec_status
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
example_id | status | run_time |
|
|
2
2
|
---------------------------------------------------------- | ------ | --------------- |
|
|
3
|
-
./spec/carddb/client_spec.rb[1:1:1] | passed | 0.
|
|
3
|
+
./spec/carddb/client_spec.rb[1:1:1] | passed | 0.00022 seconds |
|
|
4
4
|
./spec/carddb/client_spec.rb[1:1:2] | passed | 0.00004 seconds |
|
|
5
5
|
./spec/carddb/client_spec.rb[1:1:3] | passed | 0.00004 seconds |
|
|
6
|
-
./spec/carddb/client_spec.rb[1:1:4] | passed | 0.
|
|
7
|
-
./spec/carddb/client_spec.rb[1:2:1] | passed | 0.
|
|
6
|
+
./spec/carddb/client_spec.rb[1:1:4] | passed | 0.00003 seconds |
|
|
7
|
+
./spec/carddb/client_spec.rb[1:2:1] | passed | 0.00016 seconds |
|
|
8
8
|
./spec/carddb/client_spec.rb[1:2:2] | passed | 0.00016 seconds |
|
|
9
9
|
./spec/carddb/client_spec.rb[1:3:1] | passed | 0.00003 seconds |
|
|
10
10
|
./spec/carddb/client_spec.rb[1:4:1] | passed | 0.00003 seconds |
|
|
@@ -13,175 +13,176 @@ example_id | status | run_time
|
|
|
13
13
|
./spec/carddb/client_spec.rb[1:7:1] | passed | 0.00003 seconds |
|
|
14
14
|
./spec/carddb/client_spec.rb[1:8:1] | passed | 0.00004 seconds |
|
|
15
15
|
./spec/carddb/client_spec.rb[1:9:1] | passed | 0.00003 seconds |
|
|
16
|
-
./spec/carddb/client_spec.rb[1:10:1] | passed | 0.
|
|
16
|
+
./spec/carddb/client_spec.rb[1:10:1] | passed | 0.00003 seconds |
|
|
17
17
|
./spec/carddb/client_spec.rb[1:11:1] | passed | 0.00003 seconds |
|
|
18
|
-
./spec/carddb/client_spec.rb[1:12:1] | passed | 0.
|
|
19
|
-
./spec/carddb/client_spec.rb[1:13:1] | passed | 0.
|
|
20
|
-
./spec/carddb/client_spec.rb[1:13:2] | passed | 0.
|
|
18
|
+
./spec/carddb/client_spec.rb[1:12:1] | passed | 0.00003 seconds |
|
|
19
|
+
./spec/carddb/client_spec.rb[1:13:1] | passed | 0.00023 seconds |
|
|
20
|
+
./spec/carddb/client_spec.rb[1:13:2] | passed | 0.00876 seconds |
|
|
21
21
|
./spec/carddb/collection_spec.rb[1:1:1] | passed | 0.00005 seconds |
|
|
22
22
|
./spec/carddb/collection_spec.rb[2:1:1] | passed | 0.00003 seconds |
|
|
23
|
-
./spec/carddb/collection_spec.rb[3:1:1] | passed | 0.
|
|
24
|
-
./spec/carddb/collection_spec.rb[3:1:2] | passed | 0.
|
|
25
|
-
./spec/carddb/collection_spec.rb[3:1:3] | passed | 0.
|
|
26
|
-
./spec/carddb/collection_spec.rb[3:1:4] | passed | 0.
|
|
23
|
+
./spec/carddb/collection_spec.rb[3:1:1] | passed | 0.00228 seconds |
|
|
24
|
+
./spec/carddb/collection_spec.rb[3:1:2] | passed | 0.00017 seconds |
|
|
25
|
+
./spec/carddb/collection_spec.rb[3:1:3] | passed | 0.00038 seconds |
|
|
26
|
+
./spec/carddb/collection_spec.rb[3:1:4] | passed | 0.00036 seconds |
|
|
27
27
|
./spec/carddb/collection_spec.rb[3:1:5] | passed | 0.00005 seconds |
|
|
28
28
|
./spec/carddb/collection_spec.rb[4:1:1] | passed | 0.00016 seconds |
|
|
29
29
|
./spec/carddb/collection_spec.rb[4:1:2] | passed | 0.00014 seconds |
|
|
30
30
|
./spec/carddb/collection_spec.rb[4:1:3] | passed | 0.00016 seconds |
|
|
31
31
|
./spec/carddb/collection_spec.rb[4:1:4] | passed | 0.00004 seconds |
|
|
32
|
-
./spec/carddb/configuration_spec.rb[1:1:1] | passed | 0.
|
|
32
|
+
./spec/carddb/configuration_spec.rb[1:1:1] | passed | 0.00004 seconds |
|
|
33
33
|
./spec/carddb/configuration_spec.rb[1:1:2] | passed | 0.00003 seconds |
|
|
34
|
-
./spec/carddb/configuration_spec.rb[1:1:3] | passed | 0.
|
|
35
|
-
./spec/carddb/configuration_spec.rb[1:1:4] | passed | 0.
|
|
34
|
+
./spec/carddb/configuration_spec.rb[1:1:3] | passed | 0.00003 seconds |
|
|
35
|
+
./spec/carddb/configuration_spec.rb[1:1:4] | passed | 0.00003 seconds |
|
|
36
36
|
./spec/carddb/configuration_spec.rb[1:1:5] | passed | 0.00003 seconds |
|
|
37
37
|
./spec/carddb/configuration_spec.rb[1:1:6] | passed | 0.00003 seconds |
|
|
38
|
-
./spec/carddb/configuration_spec.rb[1:2:1:1] | passed | 0.
|
|
39
|
-
./spec/carddb/configuration_spec.rb[1:2:2:1] | passed | 0.
|
|
38
|
+
./spec/carddb/configuration_spec.rb[1:2:1:1] | passed | 0.00006 seconds |
|
|
39
|
+
./spec/carddb/configuration_spec.rb[1:2:2:1] | passed | 0.00004 seconds |
|
|
40
40
|
./spec/carddb/configuration_spec.rb[1:2:2:2] | passed | 0.00005 seconds |
|
|
41
|
-
./spec/carddb/configuration_spec.rb[1:3:1:1] | passed | 0.
|
|
41
|
+
./spec/carddb/configuration_spec.rb[1:3:1:1] | passed | 0.00004 seconds |
|
|
42
42
|
./spec/carddb/configuration_spec.rb[1:3:2:1] | passed | 0.00003 seconds |
|
|
43
43
|
./spec/carddb/configuration_spec.rb[1:3:2:2] | passed | 0.00004 seconds |
|
|
44
|
-
./spec/carddb/configuration_spec.rb[1:3:2:3] | passed | 0.
|
|
45
|
-
./spec/carddb/configuration_spec.rb[1:4:1] | passed | 0.
|
|
44
|
+
./spec/carddb/configuration_spec.rb[1:3:2:3] | passed | 0.00003 seconds |
|
|
45
|
+
./spec/carddb/configuration_spec.rb[1:4:1] | passed | 0.00004 seconds |
|
|
46
46
|
./spec/carddb/configuration_spec.rb[1:4:2] | passed | 0.00003 seconds |
|
|
47
|
-
./spec/carddb/configuration_spec.rb[1:5:1] | passed | 0.
|
|
47
|
+
./spec/carddb/configuration_spec.rb[1:5:1] | passed | 0.00004 seconds |
|
|
48
48
|
./spec/carddb/configuration_spec.rb[1:6:1] | passed | 0.00004 seconds |
|
|
49
49
|
./spec/carddb/configuration_spec.rb[1:6:2] | passed | 0.00003 seconds |
|
|
50
|
-
./spec/carddb/configuration_spec.rb[1:6:3] | passed | 0.
|
|
50
|
+
./spec/carddb/configuration_spec.rb[1:6:3] | passed | 0.00004 seconds |
|
|
51
51
|
./spec/carddb/configuration_spec.rb[1:7:1] | passed | 0.00003 seconds |
|
|
52
52
|
./spec/carddb/configuration_spec.rb[1:7:2] | passed | 0.00004 seconds |
|
|
53
53
|
./spec/carddb/configuration_spec.rb[1:7:3] | passed | 0.00004 seconds |
|
|
54
|
-
./spec/carddb/deck_tokens_spec.rb[1:1:1] | passed | 0.
|
|
55
|
-
./spec/carddb/deck_tokens_spec.rb[1:2:1] | passed | 0.
|
|
56
|
-
./spec/carddb/deck_tokens_spec.rb[1:2:2] | passed | 0.
|
|
57
|
-
./spec/carddb/deck_tokens_spec.rb[1:2:3] | passed | 0.
|
|
58
|
-
./spec/carddb/filter_builder_spec.rb[1:1:1] | passed | 0.
|
|
59
|
-
./spec/carddb/filter_builder_spec.rb[1:1:2] | passed | 0.
|
|
54
|
+
./spec/carddb/deck_tokens_spec.rb[1:1:1] | passed | 0.00069 seconds |
|
|
55
|
+
./spec/carddb/deck_tokens_spec.rb[1:2:1] | passed | 0.00073 seconds |
|
|
56
|
+
./spec/carddb/deck_tokens_spec.rb[1:2:2] | passed | 0.00024 seconds |
|
|
57
|
+
./spec/carddb/deck_tokens_spec.rb[1:2:3] | passed | 0.00008 seconds |
|
|
58
|
+
./spec/carddb/filter_builder_spec.rb[1:1:1] | passed | 0.00004 seconds |
|
|
59
|
+
./spec/carddb/filter_builder_spec.rb[1:1:2] | passed | 0.00003 seconds |
|
|
60
60
|
./spec/carddb/filter_builder_spec.rb[1:1:3] | passed | 0.00004 seconds |
|
|
61
|
-
./spec/carddb/filter_builder_spec.rb[1:1:4] | passed | 0.
|
|
62
|
-
./spec/carddb/filter_builder_spec.rb[1:1:5] | passed | 0.
|
|
61
|
+
./spec/carddb/filter_builder_spec.rb[1:1:4] | passed | 0.00004 seconds |
|
|
62
|
+
./spec/carddb/filter_builder_spec.rb[1:1:5] | passed | 0.00004 seconds |
|
|
63
63
|
./spec/carddb/filter_builder_spec.rb[1:1:6] | passed | 0.00004 seconds |
|
|
64
64
|
./spec/carddb/filter_builder_spec.rb[1:1:7] | passed | 0.00003 seconds |
|
|
65
65
|
./spec/carddb/filter_builder_spec.rb[1:1:8] | passed | 0.00003 seconds |
|
|
66
|
-
./spec/carddb/filter_builder_spec.rb[1:2:1] | passed | 0.
|
|
66
|
+
./spec/carddb/filter_builder_spec.rb[1:2:1] | passed | 0.00003 seconds |
|
|
67
67
|
./spec/carddb/filter_builder_spec.rb[1:2:2] | passed | 0.00003 seconds |
|
|
68
68
|
./spec/carddb/filter_builder_spec.rb[1:2:3] | passed | 0.00003 seconds |
|
|
69
|
-
./spec/carddb/filter_builder_spec.rb[1:2:4] | passed | 0.
|
|
69
|
+
./spec/carddb/filter_builder_spec.rb[1:2:4] | passed | 0.00004 seconds |
|
|
70
70
|
./spec/carddb/filter_builder_spec.rb[1:2:5] | passed | 0.00003 seconds |
|
|
71
|
-
./spec/carddb/filter_builder_spec.rb[1:2:6] | passed | 0.
|
|
71
|
+
./spec/carddb/filter_builder_spec.rb[1:2:6] | passed | 0.00004 seconds |
|
|
72
72
|
./spec/carddb/filter_builder_spec.rb[1:2:7] | passed | 0.00003 seconds |
|
|
73
73
|
./spec/carddb/filter_builder_spec.rb[1:2:8] | passed | 0.00004 seconds |
|
|
74
|
-
./spec/carddb/filter_builder_spec.rb[1:2:9] | passed | 0.
|
|
75
|
-
./spec/carddb/filter_builder_spec.rb[1:2:10] | passed | 0.
|
|
74
|
+
./spec/carddb/filter_builder_spec.rb[1:2:9] | passed | 0.00004 seconds |
|
|
75
|
+
./spec/carddb/filter_builder_spec.rb[1:2:10] | passed | 0.00004 seconds |
|
|
76
76
|
./spec/carddb/filter_builder_spec.rb[1:2:11] | passed | 0.00003 seconds |
|
|
77
|
-
./spec/carddb/filter_builder_spec.rb[1:2:12] | passed | 0.
|
|
77
|
+
./spec/carddb/filter_builder_spec.rb[1:2:12] | passed | 0.00004 seconds |
|
|
78
78
|
./spec/carddb/filter_builder_spec.rb[1:2:13] | passed | 0.00003 seconds |
|
|
79
79
|
./spec/carddb/query_builder_spec.rb[1:1:1] | passed | 0.00004 seconds |
|
|
80
80
|
./spec/carddb/query_builder_spec.rb[1:1:2] | passed | 0.00004 seconds |
|
|
81
|
-
./spec/carddb/query_builder_spec.rb[1:1:3] | passed | 0.
|
|
82
|
-
./spec/carddb/query_builder_spec.rb[1:2:1:1] | passed | 0.
|
|
81
|
+
./spec/carddb/query_builder_spec.rb[1:1:3] | passed | 0.00004 seconds |
|
|
82
|
+
./spec/carddb/query_builder_spec.rb[1:2:1:1] | passed | 0.00005 seconds |
|
|
83
83
|
./spec/carddb/query_builder_spec.rb[1:2:2:1] | passed | 0.00004 seconds |
|
|
84
|
-
./spec/carddb/query_builder_spec.rb[1:3:1] | passed | 0.
|
|
85
|
-
./spec/carddb/query_builder_spec.rb[1:3:2] | passed | 0.
|
|
86
|
-
./spec/carddb/query_builder_spec.rb[1:4:1] | passed | 0.
|
|
84
|
+
./spec/carddb/query_builder_spec.rb[1:3:1] | passed | 0.00005 seconds |
|
|
85
|
+
./spec/carddb/query_builder_spec.rb[1:3:2] | passed | 0.00004 seconds |
|
|
86
|
+
./spec/carddb/query_builder_spec.rb[1:4:1] | passed | 0.00005 seconds |
|
|
87
87
|
./spec/carddb/query_builder_spec.rb[1:4:2] | passed | 0.00003 seconds |
|
|
88
|
-
./spec/carddb/query_builder_spec.rb[1:5:1] | passed | 0.
|
|
89
|
-
./spec/carddb/query_builder_spec.rb[1:5:2] | passed | 0.
|
|
88
|
+
./spec/carddb/query_builder_spec.rb[1:5:1] | passed | 0.00004 seconds |
|
|
89
|
+
./spec/carddb/query_builder_spec.rb[1:5:2] | passed | 0.00004 seconds |
|
|
90
90
|
./spec/carddb/query_builder_spec.rb[1:5:3] | passed | 0.00004 seconds |
|
|
91
|
-
./spec/carddb/query_builder_spec.rb[1:5:4] | passed | 0.
|
|
92
|
-
./spec/carddb/query_builder_spec.rb[1:5:5] | passed | 0.
|
|
93
|
-
./spec/carddb/query_builder_spec.rb[1:5:6] | passed | 0.
|
|
91
|
+
./spec/carddb/query_builder_spec.rb[1:5:4] | passed | 0.00004 seconds |
|
|
92
|
+
./spec/carddb/query_builder_spec.rb[1:5:5] | passed | 0.00005 seconds |
|
|
93
|
+
./spec/carddb/query_builder_spec.rb[1:5:6] | passed | 0.00004 seconds |
|
|
94
94
|
./spec/carddb/query_builder_spec.rb[1:5:7] | passed | 0.00004 seconds |
|
|
95
|
-
./spec/carddb/query_builder_spec.rb[1:6:1] | passed | 0.
|
|
96
|
-
./spec/carddb/query_builder_spec.rb[1:6:2] | passed | 0.
|
|
97
|
-
./spec/carddb/query_builder_spec.rb[1:6:3] | passed | 0.
|
|
95
|
+
./spec/carddb/query_builder_spec.rb[1:6:1] | passed | 0.00006 seconds |
|
|
96
|
+
./spec/carddb/query_builder_spec.rb[1:6:2] | passed | 0.00006 seconds |
|
|
97
|
+
./spec/carddb/query_builder_spec.rb[1:6:3] | passed | 0.00005 seconds |
|
|
98
98
|
./spec/carddb/query_builder_spec.rb[1:6:4] | passed | 0.00003 seconds |
|
|
99
|
-
./spec/carddb/query_builder_spec.rb[1:6:5] | passed | 0.
|
|
100
|
-
./spec/carddb/resources/datasets_spec.rb[1:1:1] | passed | 0.
|
|
101
|
-
./spec/carddb/resources/datasets_spec.rb[1:1:2] | passed | 0.
|
|
102
|
-
./spec/carddb/resources/datasets_spec.rb[1:2:1] | passed | 0.
|
|
103
|
-
./spec/carddb/resources/decks_spec.rb[1:1:1] | passed | 0.
|
|
104
|
-
./spec/carddb/resources/decks_spec.rb[1:1:2] | passed | 0.
|
|
105
|
-
./spec/carddb/resources/decks_spec.rb[1:1:3] | passed | 0.
|
|
106
|
-
./spec/carddb/resources/decks_spec.rb[1:1:4] | passed | 0.
|
|
107
|
-
./spec/carddb/resources/decks_spec.rb[1:2:1] | passed | 0.
|
|
108
|
-
./spec/carddb/resources/decks_spec.rb[1:2:2] | passed | 0.
|
|
109
|
-
./spec/carddb/resources/decks_spec.rb[1:2:3] | passed | 0.
|
|
110
|
-
./spec/carddb/resources/decks_spec.rb[1:3:1] | passed | 0.
|
|
111
|
-
./spec/carddb/resources/decks_spec.rb[1:4:1] | passed | 0.
|
|
112
|
-
./spec/carddb/resources/decks_spec.rb[1:5:1] | passed | 0.
|
|
113
|
-
./spec/carddb/resources/decks_spec.rb[1:6:1] | passed | 0.
|
|
114
|
-
./spec/carddb/resources/decks_spec.rb[1:7:1] | passed | 0.
|
|
115
|
-
./spec/carddb/resources/decks_spec.rb[1:8:1] | passed | 0.
|
|
116
|
-
./spec/carddb/resources/decks_spec.rb[1:9:1] | passed | 0.
|
|
117
|
-
./spec/carddb/resources/decks_spec.rb[1:10:1] | passed | 0.
|
|
118
|
-
./spec/carddb/resources/decks_spec.rb[1:11:1] | passed | 0.
|
|
119
|
-
./spec/carddb/resources/decks_spec.rb[1:11:2] | passed | 0.
|
|
120
|
-
./spec/carddb/resources/decks_spec.rb[1:11:3] | passed | 0.
|
|
121
|
-
./spec/carddb/resources/decks_spec.rb[1:11:4] | passed | 0.
|
|
122
|
-
./spec/carddb/resources/decks_spec.rb[1:12:1] | passed | 0.
|
|
123
|
-
./spec/carddb/resources/decks_spec.rb[1:13:1] | passed | 0.
|
|
124
|
-
./spec/carddb/resources/decks_spec.rb[1:14:1] | passed | 0.
|
|
125
|
-
./spec/carddb/resources/decks_spec.rb[1:14:2] | passed | 0.
|
|
126
|
-
./spec/carddb/resources/decks_spec.rb[1:14:3] | passed | 0.
|
|
127
|
-
./spec/carddb/resources/decks_spec.rb[1:15:1] | passed | 0.
|
|
128
|
-
./spec/carddb/resources/decks_spec.rb[1:16:1] | passed | 0.
|
|
129
|
-
./spec/carddb/resources/decks_spec.rb[1:17:1] | passed | 0.
|
|
130
|
-
./spec/carddb/resources/decks_spec.rb[1:17:2] | passed | 0.
|
|
131
|
-
./spec/carddb/resources/decks_spec.rb[1:17:3] | passed | 0.
|
|
132
|
-
./spec/carddb/resources/decks_spec.rb[1:18:1] | passed | 0.
|
|
133
|
-
./spec/carddb/resources/decks_spec.rb[1:19:1] | passed | 0.
|
|
134
|
-
./spec/carddb/resources/decks_spec.rb[1:20:1] | passed | 0.
|
|
135
|
-
./spec/carddb/resources/decks_spec.rb[1:21:1] | passed | 0.
|
|
136
|
-
./spec/carddb/resources/decks_spec.rb[1:22:1] | passed | 0.
|
|
137
|
-
./spec/carddb/resources/decks_spec.rb[1:23:1] | passed | 0.
|
|
138
|
-
./spec/carddb/resources/decks_spec.rb[1:24:1] | passed | 0.
|
|
139
|
-
./spec/carddb/resources/decks_spec.rb[1:25:1] | passed | 0.
|
|
140
|
-
./spec/carddb/resources/games_spec.rb[1:1:1] | passed | 0.
|
|
141
|
-
./spec/carddb/resources/games_spec.rb[1:1:2] | passed | 0.
|
|
142
|
-
./spec/carddb/resources/games_spec.rb[1:2:1] | passed | 0.
|
|
143
|
-
./spec/carddb/resources/games_spec.rb[1:2:2] | passed | 0.
|
|
144
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:1] | passed | 0.
|
|
145
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:2] | passed | 0.
|
|
146
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:3] | passed | 0.
|
|
147
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:2:1] | passed | 0.
|
|
99
|
+
./spec/carddb/query_builder_spec.rb[1:6:5] | passed | 0.00004 seconds |
|
|
100
|
+
./spec/carddb/resources/datasets_spec.rb[1:1:1] | passed | 0.00437 seconds |
|
|
101
|
+
./spec/carddb/resources/datasets_spec.rb[1:1:2] | passed | 0.00379 seconds |
|
|
102
|
+
./spec/carddb/resources/datasets_spec.rb[1:2:1] | passed | 0.0075 seconds |
|
|
103
|
+
./spec/carddb/resources/decks_spec.rb[1:1:1] | passed | 0.00379 seconds |
|
|
104
|
+
./spec/carddb/resources/decks_spec.rb[1:1:2] | passed | 0.00436 seconds |
|
|
105
|
+
./spec/carddb/resources/decks_spec.rb[1:1:3] | passed | 0.00383 seconds |
|
|
106
|
+
./spec/carddb/resources/decks_spec.rb[1:1:4] | passed | 0.00412 seconds |
|
|
107
|
+
./spec/carddb/resources/decks_spec.rb[1:2:1] | passed | 0.00448 seconds |
|
|
108
|
+
./spec/carddb/resources/decks_spec.rb[1:2:2] | passed | 0.00813 seconds |
|
|
109
|
+
./spec/carddb/resources/decks_spec.rb[1:2:3] | passed | 0.00006 seconds |
|
|
110
|
+
./spec/carddb/resources/decks_spec.rb[1:3:1] | passed | 0.00399 seconds |
|
|
111
|
+
./spec/carddb/resources/decks_spec.rb[1:4:1] | passed | 0.00453 seconds |
|
|
112
|
+
./spec/carddb/resources/decks_spec.rb[1:5:1] | passed | 0.00394 seconds |
|
|
113
|
+
./spec/carddb/resources/decks_spec.rb[1:6:1] | passed | 0.00387 seconds |
|
|
114
|
+
./spec/carddb/resources/decks_spec.rb[1:7:1] | passed | 0.00384 seconds |
|
|
115
|
+
./spec/carddb/resources/decks_spec.rb[1:8:1] | passed | 0.00388 seconds |
|
|
116
|
+
./spec/carddb/resources/decks_spec.rb[1:9:1] | passed | 0.00394 seconds |
|
|
117
|
+
./spec/carddb/resources/decks_spec.rb[1:10:1] | passed | 0.00409 seconds |
|
|
118
|
+
./spec/carddb/resources/decks_spec.rb[1:11:1] | passed | 0.00418 seconds |
|
|
119
|
+
./spec/carddb/resources/decks_spec.rb[1:11:2] | passed | 0.00404 seconds |
|
|
120
|
+
./spec/carddb/resources/decks_spec.rb[1:11:3] | passed | 0.00507 seconds |
|
|
121
|
+
./spec/carddb/resources/decks_spec.rb[1:11:4] | passed | 0.00379 seconds |
|
|
122
|
+
./spec/carddb/resources/decks_spec.rb[1:12:1] | passed | 0.00401 seconds |
|
|
123
|
+
./spec/carddb/resources/decks_spec.rb[1:13:1] | passed | 0.00392 seconds |
|
|
124
|
+
./spec/carddb/resources/decks_spec.rb[1:14:1] | passed | 0.00396 seconds |
|
|
125
|
+
./spec/carddb/resources/decks_spec.rb[1:14:2] | passed | 0.00408 seconds |
|
|
126
|
+
./spec/carddb/resources/decks_spec.rb[1:14:3] | passed | 0.00379 seconds |
|
|
127
|
+
./spec/carddb/resources/decks_spec.rb[1:15:1] | passed | 0.00391 seconds |
|
|
128
|
+
./spec/carddb/resources/decks_spec.rb[1:16:1] | passed | 0.00388 seconds |
|
|
129
|
+
./spec/carddb/resources/decks_spec.rb[1:17:1] | passed | 0.00377 seconds |
|
|
130
|
+
./spec/carddb/resources/decks_spec.rb[1:17:2] | passed | 0.00448 seconds |
|
|
131
|
+
./spec/carddb/resources/decks_spec.rb[1:17:3] | passed | 0.00412 seconds |
|
|
132
|
+
./spec/carddb/resources/decks_spec.rb[1:18:1] | passed | 0.00419 seconds |
|
|
133
|
+
./spec/carddb/resources/decks_spec.rb[1:19:1] | passed | 0.00377 seconds |
|
|
134
|
+
./spec/carddb/resources/decks_spec.rb[1:20:1] | passed | 0.00394 seconds |
|
|
135
|
+
./spec/carddb/resources/decks_spec.rb[1:21:1] | passed | 0.00366 seconds |
|
|
136
|
+
./spec/carddb/resources/decks_spec.rb[1:22:1] | passed | 0.00384 seconds |
|
|
137
|
+
./spec/carddb/resources/decks_spec.rb[1:23:1] | passed | 0.00366 seconds |
|
|
138
|
+
./spec/carddb/resources/decks_spec.rb[1:24:1] | passed | 0.00383 seconds |
|
|
139
|
+
./spec/carddb/resources/decks_spec.rb[1:25:1] | passed | 0.00774 seconds |
|
|
140
|
+
./spec/carddb/resources/games_spec.rb[1:1:1] | passed | 0.00391 seconds |
|
|
141
|
+
./spec/carddb/resources/games_spec.rb[1:1:2] | passed | 0.00006 seconds |
|
|
142
|
+
./spec/carddb/resources/games_spec.rb[1:2:1] | passed | 0.00466 seconds |
|
|
143
|
+
./spec/carddb/resources/games_spec.rb[1:2:2] | passed | 0.0037 seconds |
|
|
144
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:1] | passed | 0.0048 seconds |
|
|
145
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:2] | passed | 0.00383 seconds |
|
|
146
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:1:3] | passed | 0.00454 seconds |
|
|
147
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:2:1] | passed | 0.00478 seconds |
|
|
148
148
|
./spec/carddb/resources/publisher_workflows_spec.rb[1:2:2] | passed | 0.00006 seconds |
|
|
149
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:1] | passed | 0.
|
|
150
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:2] | passed | 0.
|
|
151
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:3] | passed | 0.
|
|
152
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:1] | passed | 0.
|
|
153
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:2] | passed | 0.
|
|
154
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:3] | passed | 0.
|
|
155
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:5:1] | passed | 0.
|
|
156
|
-
./spec/carddb/resources/publisher_workflows_spec.rb[1:5:2] | passed | 0.
|
|
157
|
-
./spec/carddb/resources/publishers_spec.rb[1:1:1] | passed | 0.
|
|
158
|
-
./spec/carddb/resources/publishers_spec.rb[1:2:1] | passed | 0.
|
|
159
|
-
./spec/carddb/resources/records_spec.rb[1:1:1] | passed | 0.
|
|
160
|
-
./spec/carddb/resources/records_spec.rb[1:1:2] | passed | 0.
|
|
161
|
-
./spec/carddb/resources/records_spec.rb[1:1:3] | passed | 0.
|
|
149
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:1] | passed | 0.00396 seconds |
|
|
150
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:2] | passed | 0.00456 seconds |
|
|
151
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:3:3] | passed | 0.0035 seconds |
|
|
152
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:1] | passed | 0.00473 seconds |
|
|
153
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:2] | passed | 0.00405 seconds |
|
|
154
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:4:3] | passed | 0.00448 seconds |
|
|
155
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:5:1] | passed | 0.00474 seconds |
|
|
156
|
+
./spec/carddb/resources/publisher_workflows_spec.rb[1:5:2] | passed | 0.0037 seconds |
|
|
157
|
+
./spec/carddb/resources/publishers_spec.rb[1:1:1] | passed | 0.0035 seconds |
|
|
158
|
+
./spec/carddb/resources/publishers_spec.rb[1:2:1] | passed | 0.0041 seconds |
|
|
159
|
+
./spec/carddb/resources/records_spec.rb[1:1:1] | passed | 0.00357 seconds |
|
|
160
|
+
./spec/carddb/resources/records_spec.rb[1:1:2] | passed | 0.0037 seconds |
|
|
161
|
+
./spec/carddb/resources/records_spec.rb[1:1:3] | passed | 0.00067 seconds |
|
|
162
162
|
./spec/carddb/resources/records_spec.rb[1:1:4] | passed | 0.00005 seconds |
|
|
163
|
-
./spec/carddb/resources/records_spec.rb[1:2:1] | passed | 0.
|
|
164
|
-
./spec/carddb/resources/records_spec.rb[1:2:2] | passed | 0.
|
|
165
|
-
./spec/carddb/resources/records_spec.rb[1:2:3] | passed | 0.
|
|
166
|
-
./spec/carddb/resources/records_spec.rb[1:3:1] | passed | 0.
|
|
163
|
+
./spec/carddb/resources/records_spec.rb[1:2:1] | passed | 0.00367 seconds |
|
|
164
|
+
./spec/carddb/resources/records_spec.rb[1:2:2] | passed | 0.00349 seconds |
|
|
165
|
+
./spec/carddb/resources/records_spec.rb[1:2:3] | passed | 0.00602 seconds |
|
|
166
|
+
./spec/carddb/resources/records_spec.rb[1:3:1] | passed | 0.00381 seconds |
|
|
167
167
|
./spec/carddb/resources/records_spec.rb[1:3:2] | passed | 0.00011 seconds |
|
|
168
|
-
./spec/carddb/resources/records_spec.rb[1:4:1] | passed | 0.
|
|
168
|
+
./spec/carddb/resources/records_spec.rb[1:4:1] | passed | 0.0038 seconds |
|
|
169
169
|
./spec/carddb/resources/records_spec.rb[1:4:2] | passed | 0.00004 seconds |
|
|
170
|
-
./spec/carddb/resources/records_spec.rb[1:4:3] | passed | 0.
|
|
171
|
-
./spec/carddb/resources/rules_spec.rb[1:1:1] | passed | 0.
|
|
172
|
-
./spec/carddb/resources/rules_spec.rb[1:2:1] | passed | 0.
|
|
173
|
-
./spec/carddb/resources/scans_spec.rb[1:1] | passed | 0.
|
|
174
|
-
./spec/carddb/resources/scans_spec.rb[1:2] | passed | 0.
|
|
175
|
-
./spec/carddb/resources/scans_spec.rb[1:3] | passed | 0.
|
|
176
|
-
./spec/carddb/resources/scans_spec.rb[1:4] | passed | 0.
|
|
177
|
-
./spec/carddb/resources/scans_spec.rb[1:5] | passed | 0.
|
|
178
|
-
./spec/carddb/resources/scans_spec.rb[1:6] | passed | 0.
|
|
179
|
-
./spec/carddb/resources/scans_spec.rb[1:7] | passed | 0.
|
|
180
|
-
./spec/
|
|
181
|
-
./spec/carddb_spec.rb[1:
|
|
170
|
+
./spec/carddb/resources/records_spec.rb[1:4:3] | passed | 0.00007 seconds |
|
|
171
|
+
./spec/carddb/resources/rules_spec.rb[1:1:1] | passed | 0.00365 seconds |
|
|
172
|
+
./spec/carddb/resources/rules_spec.rb[1:2:1] | passed | 0.00394 seconds |
|
|
173
|
+
./spec/carddb/resources/scans_spec.rb[1:1] | passed | 0.00377 seconds |
|
|
174
|
+
./spec/carddb/resources/scans_spec.rb[1:2] | passed | 0.00761 seconds |
|
|
175
|
+
./spec/carddb/resources/scans_spec.rb[1:3] | passed | 0.00377 seconds |
|
|
176
|
+
./spec/carddb/resources/scans_spec.rb[1:4] | passed | 0.00406 seconds |
|
|
177
|
+
./spec/carddb/resources/scans_spec.rb[1:5] | passed | 0.00395 seconds |
|
|
178
|
+
./spec/carddb/resources/scans_spec.rb[1:6] | passed | 0.00413 seconds |
|
|
179
|
+
./spec/carddb/resources/scans_spec.rb[1:7] | passed | 0.00377 seconds |
|
|
180
|
+
./spec/carddb/resources/scans_spec.rb[1:8] | passed | 0.00009 seconds |
|
|
181
|
+
./spec/carddb_spec.rb[1:1] | passed | 0.00004 seconds |
|
|
182
|
+
./spec/carddb_spec.rb[1:2:1] | passed | 0.00003 seconds |
|
|
182
183
|
./spec/carddb_spec.rb[1:3:1] | passed | 0.00003 seconds |
|
|
183
184
|
./spec/carddb_spec.rb[1:4:1] | passed | 0.00004 seconds |
|
|
184
|
-
./spec/carddb_spec.rb[1:5:1] | passed | 0.
|
|
185
|
+
./spec/carddb_spec.rb[1:5:1] | passed | 0.00004 seconds |
|
|
185
186
|
./spec/carddb_spec.rb[1:6:1] | passed | 0.00003 seconds |
|
|
186
187
|
./spec/carddb_spec.rb[1:7:1] | passed | 0.00003 seconds |
|
|
187
188
|
./spec/carddb_spec.rb[1:8:1] | passed | 0.00003 seconds |
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.4.1] - 2026-06-22
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Scan-specific upload helpers for publishable-key scan workflows: `client.scans.create_upload_session` and `client.scans.confirm_upload`.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- README scan examples now use scan-specific upload mutations instead of the server-side generic file upload helpers.
|
|
19
|
+
|
|
10
20
|
## [0.4.0] - 2026-06-22
|
|
11
21
|
|
|
12
22
|
### Added
|
data/README.md
CHANGED
|
@@ -268,15 +268,32 @@ export = client.exports.wait_for_job(export.id)
|
|
|
268
268
|
puts export.download_url
|
|
269
269
|
```
|
|
270
270
|
|
|
271
|
-
Card scanning uses
|
|
271
|
+
Card scanning uses scan-specific upload mutations that work with a publishable key carrying `scans:write`. Image bytes still go directly to object storage, then GraphQL confirms the file and creates the scan job:
|
|
272
272
|
|
|
273
273
|
```ruby
|
|
274
|
-
|
|
274
|
+
image = File.open('scan.jpg', 'rb')
|
|
275
|
+
content_type = 'image/jpeg'
|
|
276
|
+
|
|
277
|
+
upload = client.scans.create_upload_session(
|
|
278
|
+
publisher_slug: 'pokemon-company',
|
|
279
|
+
game_key: 'pokemon-tcg',
|
|
280
|
+
dataset_key: 'cards',
|
|
275
281
|
filename: 'scan.jpg',
|
|
276
|
-
content_type:
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
282
|
+
content_type: content_type,
|
|
283
|
+
size: image.stat.size
|
|
284
|
+
)
|
|
285
|
+
|
|
286
|
+
response = Faraday.put(upload.upload_url) do |request|
|
|
287
|
+
request.headers['Content-Type'] = content_type
|
|
288
|
+
request.body = image
|
|
289
|
+
end
|
|
290
|
+
raise "Upload failed with #{response.status}" unless response.success?
|
|
291
|
+
|
|
292
|
+
scan_image = client.scans.confirm_upload(
|
|
293
|
+
publisher_slug: 'pokemon-company',
|
|
294
|
+
game_key: 'pokemon-tcg',
|
|
295
|
+
dataset_key: 'cards',
|
|
296
|
+
file_id: upload.file.id
|
|
280
297
|
)
|
|
281
298
|
|
|
282
299
|
created = client.scans.create_job(
|
|
@@ -309,6 +326,8 @@ metrics = client.scans.metrics(
|
|
|
309
326
|
puts metrics.feedback.accuracy
|
|
310
327
|
```
|
|
311
328
|
|
|
329
|
+
The generic file APIs (`client.files.request_upload`, `client.files.confirm_upload`, and `client.files.upload`) remain server-side helpers for trusted publisher workflows.
|
|
330
|
+
|
|
312
331
|
Scan-capable clients can discover publisher-defined regions and manage templates. Template editing uses scan semantic types such as `card_name`, `collector_number`, `set_code`, and `set_name`.
|
|
313
332
|
|
|
314
333
|
```ruby
|
data/lib/carddb/query_builder.rb
CHANGED
|
@@ -680,6 +680,26 @@ module CardDB
|
|
|
680
680
|
GRAPHQL
|
|
681
681
|
end
|
|
682
682
|
|
|
683
|
+
def create_scan_upload_session
|
|
684
|
+
<<~GRAPHQL
|
|
685
|
+
mutation CreateScanUploadSession($input: CreateScanUploadSessionInput!) {
|
|
686
|
+
createScanUploadSession(input: $input) {
|
|
687
|
+
#{presigned_upload_fields}
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
GRAPHQL
|
|
691
|
+
end
|
|
692
|
+
|
|
693
|
+
def confirm_scan_upload
|
|
694
|
+
<<~GRAPHQL
|
|
695
|
+
mutation ConfirmScanUpload($input: ConfirmScanUploadInput!) {
|
|
696
|
+
confirmScanUpload(input: $input) {
|
|
697
|
+
#{file_fields}
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
GRAPHQL
|
|
701
|
+
end
|
|
702
|
+
|
|
683
703
|
def create_scan_job
|
|
684
704
|
<<~GRAPHQL
|
|
685
705
|
mutation CreateScanJob($input: CreateScanJobInput!) {
|
|
@@ -22,6 +22,20 @@ module CardDB
|
|
|
22
22
|
webhook_secret: 'webhookSecret'
|
|
23
23
|
}.freeze
|
|
24
24
|
|
|
25
|
+
UPLOAD_SESSION_KEY_MAP = {
|
|
26
|
+
publisher_slug: 'publisherSlug',
|
|
27
|
+
game_key: 'gameKey',
|
|
28
|
+
dataset_key: 'datasetKey',
|
|
29
|
+
content_type: 'contentType'
|
|
30
|
+
}.freeze
|
|
31
|
+
|
|
32
|
+
CONFIRM_UPLOAD_KEY_MAP = {
|
|
33
|
+
publisher_slug: 'publisherSlug',
|
|
34
|
+
game_key: 'gameKey',
|
|
35
|
+
dataset_key: 'datasetKey',
|
|
36
|
+
file_id: 'fileId'
|
|
37
|
+
}.freeze
|
|
38
|
+
|
|
25
39
|
FEEDBACK_KEY_MAP = {
|
|
26
40
|
job_id: 'jobId',
|
|
27
41
|
selected_record_id: 'selectedRecordId'
|
|
@@ -33,6 +47,22 @@ module CardDB
|
|
|
33
47
|
dataset_key: 'datasetKey'
|
|
34
48
|
}.freeze
|
|
35
49
|
|
|
50
|
+
# Create a scan image upload session using a scan-scoped credential.
|
|
51
|
+
def create_upload_session(input: nil, **params)
|
|
52
|
+
request = scoped_input(graphql_input(input || params, UPLOAD_SESSION_KEY_MAP))
|
|
53
|
+
data = connection.execute(QueryBuilder.create_scan_upload_session, { input: request })
|
|
54
|
+
|
|
55
|
+
PresignedUpload.new(data['createScanUploadSession'], client: client)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Confirm that a scan image upload completed and return the uploaded file.
|
|
59
|
+
def confirm_upload(input: nil, **params)
|
|
60
|
+
request = scoped_input(graphql_input(input || params, CONFIRM_UPLOAD_KEY_MAP))
|
|
61
|
+
data = connection.execute(QueryBuilder.confirm_scan_upload, { input: request })
|
|
62
|
+
|
|
63
|
+
File.new(data['confirmScanUpload'], client: client)
|
|
64
|
+
end
|
|
65
|
+
|
|
36
66
|
# Create a scan job for an already uploaded image file.
|
|
37
67
|
def create_job(input: nil, **params)
|
|
38
68
|
request = scoped_input(graphql_input(input || params, CREATE_JOB_KEY_MAP))
|
data/lib/carddb/version.rb
CHANGED