mediawiki_api-wikidata 0.0.2 → 0.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 +8 -8
- data/README.md +12 -1
- data/lib/mediawiki_api/wikidata/version.rb +5 -5
- data/lib/mediawiki_api/wikidata/wikidata_client.rb +10 -1
- data/spec/support/request_helpers.rb +6 -0
- data/spec/wikidata_client_spec.rb +41 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzgwZTA1YmI5NjBlYzk1ODBhYzA2MDE3YWY0ODc0ODE5YTYyNDAxYQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MTVkZTM0ZjQ5ZTI5ZGU1NmIxOTA0MDM0ZDhkOWMwOTBhOGIzMjkwYw==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Y2I1MWQ3MGM2MjEwNzJkYjc2MzZhZDBkMDJmNGE5MjE1ZWNkOTQyNjRjODEw
|
10
|
+
ODViZjEyZjE4NTU1ZDMwNWYwZThmZjc4OWIzMDEyZmUwN2RhZTE1MWZmOTIw
|
11
|
+
NDU0OTZiZGUzZDQ3YmU5MzYyMTFkZjA3MTFlZGM4YWU0OTA5NDA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ODY4NTQ2MjJkYTZlNjU4YzJmNjU4MDI3YWFkYjE0NWQ1MTY4NTE2OTRmYWU2
|
14
|
+
MTE4OTYyODUxZjk2N2QzNGM5NjdhYzkzNjAxZDY1NThkZTJlYjdjZTg4NGM5
|
15
|
+
ZGZjZjIwZGIyNDEwNzViNDRjMTAwNTY1M2Y4YWY5YzY0ZTliOWQ=
|
data/README.md
CHANGED
@@ -26,11 +26,22 @@ require "mediawiki_api/wikidata"
|
|
26
26
|
|
27
27
|
wikidata_client = MediawikiApi::Wikidata::WikidataClient.new "http://127.0.0.1/w/api.php" #instantiate new client
|
28
28
|
wikidata_client.log_in "username", "password" #log in via the API
|
29
|
-
wikidata_client.
|
29
|
+
wikidata_client.create_item "data" #create a new item specified by "data"
|
30
|
+
wikidata_client.create_property "data" #create a new property specified by "data"
|
31
|
+
wikidata_client.add_sitelink "Q1234", "enwiki", "Berlin" #add a new sitelink enwiki/Berlin to item Q1234
|
32
|
+
wikidata_client.remove_sitelink "Q1234", "enwiki" #remove enwiki sitelink from item Q1234
|
33
|
+
wikidata_client.sitelink_exists? "enwiki", "Berlin" #returns true if enwiki/Berlin sitelink exists, false otherwise
|
34
|
+
wikidata_client.create_claim "Q1234", "value", "P1234", '"test"' #adds claim with property P1234 and value "test" to item Q1234
|
35
|
+
wikidata_client.search_entities "test", "en", "item" #searches for items containing the string "test" in their english labels, descriptions and aliases
|
30
36
|
```
|
31
37
|
|
32
38
|
## Release notes
|
33
39
|
|
40
|
+
### 0.1 (2014-10-09)
|
41
|
+
- feature complete for [Wikidata BrowserTests](https://github.com/wmde/WikidataBrowserTests)
|
42
|
+
- support creating claims
|
43
|
+
- support searching entities
|
44
|
+
|
34
45
|
### 0.0.2 (2014-10-09)
|
35
46
|
|
36
47
|
- support adding sitelinks
|
@@ -1,5 +1,5 @@
|
|
1
|
-
module MediawikiApi
|
2
|
-
module Wikidata
|
3
|
-
VERSION = "0.
|
4
|
-
end
|
5
|
-
end
|
1
|
+
module MediawikiApi
|
2
|
+
module Wikidata
|
3
|
+
VERSION = "0.1"
|
4
|
+
end
|
5
|
+
end
|
@@ -34,10 +34,19 @@ module MediawikiApi
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def sitelink_exists?(site_id, title)
|
37
|
-
resp = action(:wbgetentities, token_type:
|
37
|
+
resp = action(:wbgetentities, token_type: false, sites: [site_id], titles: [title] )
|
38
38
|
!resp.data["entities"]["-1"]
|
39
39
|
end
|
40
40
|
|
41
|
+
def search_entities(search, language, entity_type, limit = 10, continue = nil)
|
42
|
+
action(:wbsearchentities, token_type: false, search: search, language: language, type: entity_type, limit: limit,
|
43
|
+
continue: continue)
|
44
|
+
end
|
45
|
+
|
46
|
+
def create_claim(entity_id, snaktype = "value", property_id, value_data)
|
47
|
+
action(:wbcreateclaim, token_type: "edit", entity: entity_id, snaktype: snaktype, property: property_id, value: value_data)
|
48
|
+
end
|
49
|
+
|
41
50
|
private
|
42
51
|
|
43
52
|
def parse_entity_identifier(identifier)
|
@@ -24,6 +24,12 @@ module MediawikiApi::Wikidata::RequestHelpers
|
|
24
24
|
stub_api_request(method, params.merge(action: action, token: mock_token))
|
25
25
|
end
|
26
26
|
|
27
|
+
def stub_action_request_without_token(action, params = {})
|
28
|
+
method = params.delete(:http_method) || :post
|
29
|
+
|
30
|
+
stub_api_request(method, params.merge(action: action))
|
31
|
+
end
|
32
|
+
|
27
33
|
def stub_token_request(type, warning = nil)
|
28
34
|
response = { tokens: { "#{type}token" => mock_token } }
|
29
35
|
response[:warnings] = { type => { "*" => [warning] } } unless warning.nil?
|
@@ -130,4 +130,45 @@ describe MediawikiApi::Wikidata::WikidataClient do
|
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
133
|
+
describe "#create_claim" do
|
134
|
+
subject { client.create_claim(entity_id, snaktype, property_id, value) }
|
135
|
+
|
136
|
+
let(:entity_id) { "Q1234" }
|
137
|
+
let(:snaktype) { "value" }
|
138
|
+
let(:property_id) { "P1234" }
|
139
|
+
let(:value) { '"stringtest"' }
|
140
|
+
let(:response) { {} }
|
141
|
+
|
142
|
+
before do
|
143
|
+
stub_token_request(:edit)
|
144
|
+
@edit_request = stub_action_request(:wbcreateclaim, entity: entity_id, snaktype: snaktype, property: property_id, value: value).
|
145
|
+
to_return(body: response.to_json)
|
146
|
+
end
|
147
|
+
|
148
|
+
it "makes the right request" do
|
149
|
+
subject
|
150
|
+
expect(@edit_request).to have_been_requested
|
151
|
+
end
|
152
|
+
end
|
153
|
+
describe "#search_entities" do
|
154
|
+
subject { client.search_entities(search, language, entity_type, limit, continue) }
|
155
|
+
|
156
|
+
let(:search) { "test" }
|
157
|
+
let(:language) { "en" }
|
158
|
+
let(:entity_type) { "item" }
|
159
|
+
let(:limit) { 10 }
|
160
|
+
let(:continue) { "" }
|
161
|
+
let(:response) { {} }
|
162
|
+
|
163
|
+
before do
|
164
|
+
@edit_request = stub_action_request_without_token(:wbsearchentities, search: search, language: language, type: entity_type,
|
165
|
+
limit: limit, continue: continue).
|
166
|
+
to_return(body: response.to_json)
|
167
|
+
end
|
168
|
+
|
169
|
+
it "makes the right request" do
|
170
|
+
subject
|
171
|
+
expect(@edit_request).to have_been_requested
|
172
|
+
end
|
173
|
+
end
|
133
174
|
end
|