mediawiki_api-wikidata 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +9 -0
- data/lib/mediawiki_api/wikidata/exceptions.rb +10 -0
- data/lib/mediawiki_api/wikidata/version.rb +1 -1
- data/lib/mediawiki_api/wikidata/wikidata_client.rb +41 -2
- data/spec/wikidata_client_spec.rb +104 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzQzYTUzZTM1ZTAxZGRlMWFiZDc0ODYwNWZkZWZlMjBmOTQ4ZWUzYg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YTEzNjNiZTBkOWE4ZGFjNjQzZTJlMmY4ZWI2ZjlmY2Q2MTZjYWI5ZQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OTFkMzM3MTk5NDViY2MwZmQzNjc5OTA0ODdkM2FiNTg2OWRkZGNkYmYzM2E2
|
10
|
+
NjEyNTIyZTQ5N2IwNDE5YTlkOGRiYmZhZTcwNTQwZWUxMmMwNDBiZGY0YTk1
|
11
|
+
OGJlY2Q5OGZmN2VjZThjMWEwNjRmYmNmYjVkYTBlZWJmN2Q4M2Y=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MTNjZGU0NWQ3YTgxYWMzZDEwYmZmZTRkZDdkZWIwNDY2MmMyMWQzYzE0OTZi
|
14
|
+
NjI0M2M5ZDJjNDFmYjljMzE3YWE0OTBhYTkzY2FjZTk4YzY4NmFmZWU5ZTky
|
15
|
+
MmFiNmM4ZTE0ZmVjZGRmYThlY2UzZGZhODE3MzE5YWU5YWQ4YWU=
|
data/README.md
CHANGED
@@ -31,6 +31,15 @@ wikidata_client.create_entity "data" #create a new item specified by "data"
|
|
31
31
|
|
32
32
|
## Release notes
|
33
33
|
|
34
|
+
### 0.0.2 (2014-10-09)
|
35
|
+
|
36
|
+
- support adding sitelinks
|
37
|
+
- support changing sitelinks
|
38
|
+
- support removing sitelinks
|
39
|
+
- support checking for existing sitelinks
|
40
|
+
- provide separate methods for creating items and properties
|
41
|
+
- removed custom edit summaries
|
42
|
+
|
34
43
|
### 0.0.1 (2014-09-29)
|
35
44
|
|
36
45
|
- Initial version
|
@@ -2,13 +2,52 @@
|
|
2
2
|
# License:: GNU GPL v2+
|
3
3
|
|
4
4
|
require "mediawiki_api/wikidata/version"
|
5
|
+
require "mediawiki_api/wikidata/exceptions"
|
5
6
|
|
6
7
|
module MediawikiApi
|
7
8
|
module Wikidata
|
8
9
|
class WikidataClient < Client
|
9
10
|
|
10
|
-
def create_entity(
|
11
|
-
action(:wbeditentity, token_type: "edit", new: type, data:
|
11
|
+
def create_entity(entity_data, type)
|
12
|
+
action(:wbeditentity, token_type: "edit", new: type, data: entity_data)
|
13
|
+
end
|
14
|
+
|
15
|
+
def create_item(item_data)
|
16
|
+
create_entity(item_data, "item")
|
17
|
+
end
|
18
|
+
|
19
|
+
def create_property(property_data)
|
20
|
+
create_entity(property_data, "property")
|
21
|
+
end
|
22
|
+
|
23
|
+
def set_sitelink(entity_identifier, sitelink_site_id, sitelink_title = nil, badges = nil)
|
24
|
+
params = { token_type: "edit", linksite: sitelink_site_id, linktitle: sitelink_title, badges: badges}
|
25
|
+
action(:wbsetsitelink, params.merge(parse_entity_identifier(entity_identifier)))
|
26
|
+
end
|
27
|
+
|
28
|
+
def add_sitelink(entity_identifier, sitelink_site_id, sitelink_title, badges = nil)
|
29
|
+
set_sitelink(entity_identifier, sitelink_site_id, sitelink_title, badges)
|
30
|
+
end
|
31
|
+
|
32
|
+
def remove_sitelink(entity_identifier, sitelink_site_id)
|
33
|
+
set_sitelink(entity_identifier, sitelink_site_id)
|
34
|
+
end
|
35
|
+
|
36
|
+
def sitelink_exists?(site_id, title)
|
37
|
+
resp = action(:wbgetentities, token_type: "edit", sites: [site_id], titles: [title] )
|
38
|
+
!resp.data["entities"]["-1"]
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def parse_entity_identifier(identifier)
|
44
|
+
if identifier.is_a?(::Hash)
|
45
|
+
{ site: identifier[:site_id], title: identifier[:title] }
|
46
|
+
elsif identifier.is_a?(String)
|
47
|
+
{ id: identifier }
|
48
|
+
else
|
49
|
+
raise EntityIdentifierMismatchError, "Either entity id or site id and page title need to be set to identify the entity."
|
50
|
+
end
|
12
51
|
end
|
13
52
|
|
14
53
|
end
|
@@ -12,14 +12,115 @@ describe MediawikiApi::Wikidata::WikidataClient do
|
|
12
12
|
describe "#create_entity" do
|
13
13
|
subject { client.create_entity(data, type) }
|
14
14
|
|
15
|
-
let(:data) { '{"labels":{"en":{"language":"en","value":"test_label"}},
|
15
|
+
let(:data) { '{"labels":{"en":{"language":"en","value":"test_label"}},
|
16
|
+
"descriptions":{"en":{"language":"en","value":"test_description"}}}' }
|
16
17
|
let(:type) { "item" }
|
17
|
-
let(:summary) { "Created entity using mediawiki_api/wikidata gem" }
|
18
18
|
let(:response) { {} }
|
19
19
|
|
20
20
|
before do
|
21
21
|
stub_token_request(:edit)
|
22
|
-
@edit_request = stub_action_request(:wbeditentity, data: data, new: type
|
22
|
+
@edit_request = stub_action_request(:wbeditentity, data: data, new: type).
|
23
|
+
to_return(body: response.to_json)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "makes the right request" do
|
27
|
+
subject
|
28
|
+
expect(@edit_request).to have_been_requested
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#create_item" do
|
33
|
+
subject { client.create_item(data) }
|
34
|
+
|
35
|
+
let(:data) { '{"labels":{"en":{"language":"en","value":"test_label"}},
|
36
|
+
"descriptions":{"en":{"language":"en","value":"test_description"}}}' }
|
37
|
+
let(:response) { {} }
|
38
|
+
|
39
|
+
before do
|
40
|
+
stub_token_request(:edit)
|
41
|
+
@edit_request = stub_action_request(:wbeditentity, data: data, new: "item").
|
42
|
+
to_return(body: response.to_json)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "makes the right request" do
|
46
|
+
subject
|
47
|
+
expect(@edit_request).to have_been_requested
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "#create_property" do
|
52
|
+
subject { client.create_property(data) }
|
53
|
+
|
54
|
+
let(:data) { '{"labels":{"en":{"language":"en","value":"test_label"}},
|
55
|
+
"descriptions":{"en":{"language":"en","value":"test_description"}},"datatype":"string"}' }
|
56
|
+
let(:response) { {} }
|
57
|
+
|
58
|
+
before do
|
59
|
+
stub_token_request(:edit)
|
60
|
+
@edit_request = stub_action_request(:wbeditentity, data: data, new: "property").
|
61
|
+
to_return(body: response.to_json)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "makes the right request" do
|
65
|
+
subject
|
66
|
+
expect(@edit_request).to have_been_requested
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "#create_property" do
|
71
|
+
subject { client.create_property(data) }
|
72
|
+
|
73
|
+
let(:data) { '{"labels":{"en":{"language":"en","value":"test_label"}},
|
74
|
+
"descriptions":{"en":{"language":"en","value":"test_description"}},"datatype":"string"}' }
|
75
|
+
let(:response) { {} }
|
76
|
+
|
77
|
+
before do
|
78
|
+
stub_token_request(:edit)
|
79
|
+
@edit_request = stub_action_request(:wbeditentity, data: data, new: "property").
|
80
|
+
to_return(body: response.to_json)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "makes the right request" do
|
84
|
+
subject
|
85
|
+
expect(@edit_request).to have_been_requested
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe "#set_sitelink (item identified by site/title)" do
|
90
|
+
subject { client.set_sitelink(entity_identifier, sitelink_site_id, sitelink_title, badges) }
|
91
|
+
|
92
|
+
let(:entity_identifier) { {site_id: "dewiki", title: "Berlin"} }
|
93
|
+
let(:sitelink_site_id) { "itwiki" }
|
94
|
+
let(:sitelink_title) { "Berlino" }
|
95
|
+
let(:badges) { nil }
|
96
|
+
let(:response) { {} }
|
97
|
+
|
98
|
+
before do
|
99
|
+
stub_token_request(:edit)
|
100
|
+
@edit_request = stub_action_request(:wbsetsitelink, site: "dewiki", title: "Berlin", linksite: sitelink_site_id,
|
101
|
+
linktitle: sitelink_title, badges: badges).
|
102
|
+
to_return(body: response.to_json)
|
103
|
+
end
|
104
|
+
|
105
|
+
it "makes the right request" do
|
106
|
+
subject
|
107
|
+
expect(@edit_request).to have_been_requested
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "#set_sitelink (item identified by ID)" do
|
112
|
+
subject { client.set_sitelink(entity_identifier, sitelink_site_id, sitelink_title, badges) }
|
113
|
+
|
114
|
+
let(:entity_identifier) { "Q1234" }
|
115
|
+
let(:sitelink_site_id) { "itwiki" }
|
116
|
+
let(:sitelink_title) { "Berlino" }
|
117
|
+
let(:badges) { nil }
|
118
|
+
let(:response) { {} }
|
119
|
+
|
120
|
+
before do
|
121
|
+
stub_token_request(:edit)
|
122
|
+
@edit_request = stub_action_request(:wbsetsitelink, id: "Q1234", linksite: sitelink_site_id,
|
123
|
+
linktitle: sitelink_title, badges: badges).
|
23
124
|
to_return(body: response.to_json)
|
24
125
|
end
|
25
126
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mediawiki_api-wikidata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Gritschacher
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09
|
11
|
+
date: 2014-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mediawiki_api
|
@@ -134,6 +134,7 @@ files:
|
|
134
134
|
- LICENCE
|
135
135
|
- README.md
|
136
136
|
- lib/mediawiki_api/wikidata.rb
|
137
|
+
- lib/mediawiki_api/wikidata/exceptions.rb
|
137
138
|
- lib/mediawiki_api/wikidata/version.rb
|
138
139
|
- lib/mediawiki_api/wikidata/wikidata_client.rb
|
139
140
|
- mediawiki_api-wikidata.gemspec
|