Class: CrowdinUtil

Inherits:
Object
  • Object
show all
Defined in:
lib/cocoapods-aqara-localzedLoader/crowdin_util.rb

Instance Method Summary collapse

Constructor Details

#initialize(project_id = "71", access_token = nil) ⇒ CrowdinUtil

Returns a new instance of CrowdinUtil.



7
8
9
10
11
# File 'lib/cocoapods-aqara-localzedLoader/crowdin_util.rb', line 7

def initialize(project_id = "71", access_token = nil)
  @project_id = project_id
  @access_token = access_token || ENV["CROWDIN_ACCESS_TOKEN"] || ENV["CROWDIN_TOKEN"]
  raise "未找到 Crowdin token,无法发布 OTA Release" if @access_token.to_s.empty?
end

Instance Method Details

#crowdin_headersObject



13
14
15
16
17
18
# File 'lib/cocoapods-aqara-localzedLoader/crowdin_util.rb', line 13

def crowdin_headers
  {
    "Authorization" => "Bearer #{@access_token}",
    "Content-Type"  => "application/json"
  }
end

#release_distribution(distribution_hash = "e-53615346e6d639beb7263b3iht") ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/cocoapods-aqara-localzedLoader/crowdin_util.rb', line 20

def release_distribution(distribution_hash = "e-53615346e6d639beb7263b3iht")
  url = URI(
    "https://aqara.crowdin.com/api/v2/projects/#{@project_id}/distributions/#{distribution_hash}/release"
  )

  puts "🚀 OTA Release: distribution=#{distribution_hash}"

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true

  request = Net::HTTP::Post.new(url.request_uri)
  crowdin_headers.each do |k, v|
    request[k] = v
  end

  request.body = {}.to_json

  response = http.request(request)

  unless response.is_a?(Net::HTTPSuccess)
    raise "Crowdin OTA Release failed: #{response.code} #{response.body}"
  end

  puts "✅ OTA Release 成功"
end