Class: MediawikiApi::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/mediawiki_api/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url, log = false) ⇒ Client

Returns a new instance of Client.



18
19
20
21
22
23
24
25
26
27
# File 'lib/mediawiki_api/client.rb', line 18

def initialize(url, log = false)
  @conn = Faraday.new(url: url) do |faraday|
    faraday.request :multipart
    faraday.request :url_encoded
    faraday.response :logger if log
    faraday.use :cookie_jar
    faraday.adapter Faraday.default_adapter
  end
  @logged_in = false
end

Instance Attribute Details

#logged_inObject

Returns the value of attribute logged_in.



16
17
18
# File 'lib/mediawiki_api/client.rb', line 16

def logged_in
  @logged_in
end

Instance Method Details

#create_account(username, password, token = nil) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/mediawiki_api/client.rb', line 46

def (username, password, token = nil)
  params = { action: "createaccount", name: username, password: password, format: "json" }
  params[:token] = token unless token.nil?
  resp = @conn.post "", params

  data = JSON.parse(resp.body)["createaccount"]

  case data["result"]
  when "Success"
    @logged_in = true
  when "NeedToken"
     username, password, data["token"]
  else
    raise CreateAccountError, data["result"]
  end
end

#create_page(title, content) ⇒ Object



63
64
65
66
# File 'lib/mediawiki_api/client.rb', line 63

def create_page(title, content)
  token = get_token "edit"
  @conn.post "", action: "edit", title: title, text: content, token: token, format: "json"
end

#delete_page(title, reason) ⇒ Object



68
69
70
71
# File 'lib/mediawiki_api/client.rb', line 68

def delete_page(title, reason)
  token = get_token "delete"
  @conn.post "", action: "delete", title: title, reason: reason, token: token, format: "json"
end

#get_wikitext(title) ⇒ Object



78
79
80
# File 'lib/mediawiki_api/client.rb', line 78

def get_wikitext(title)
  @conn.get "/w/index.php", { action: "raw", title: title }
end

#log_in(username, password, token = nil) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/mediawiki_api/client.rb', line 29

def (username, password, token = nil)
  params = { action: "login", lgname: username, lgpassword: password, format: "json" }
  params[:lgtoken] = token unless token.nil?
  resp = @conn.post "", params

  data = JSON.parse(resp.body)["login"]

  case data["result"]
  when "Success"
    @logged_in = true
  when "NeedToken"
     username, password, data["token"]
  else
    raise LoginError, data["result"]
  end
end

#protect_page(title, reason, protections = "edit=sysop|move=sysop") ⇒ Object



82
83
84
85
# File 'lib/mediawiki_api/client.rb', line 82

def protect_page(title, reason, protections="edit=sysop|move=sysop")
  token = get_token "protect"
  @conn.post "", action: "protect", title: title, reason: reason, token: token, format: "json", protections: protections
end

#upload_image(filename, path, comment, ignorewarnings) ⇒ Object



73
74
75
76
# File 'lib/mediawiki_api/client.rb', line 73

def upload_image(filename, path, comment, ignorewarnings)
  token = get_token "edit"
  @conn.post "", action: "upload", filename: filename, file: Faraday::UploadIO.new(path, 'image/png'), token: token, comment: comment, ignorewarnings: ignorewarnings, format: "json"
end