qiita 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0f6eca33e49eb4d3e65ade2c99c3660212fd1d94
4
- data.tar.gz: a01378d0df082e39e694fa2e485f4050ca7ac2e4
3
+ metadata.gz: 103dfda3a4a2c0db813e4908fa62b94873eaf702
4
+ data.tar.gz: 52dbaf4cdd23b18cdcdeaf38d3ec3c0735bba189
5
5
  SHA512:
6
- metadata.gz: 861e2f18dffa7617c16b70517dd0dc9c132f93abb4622f5d0855ef8201e6eeeb233642a1ba0400d7877c0b576a13f291a702e43800ffe0dbb35b4621ed57a7f3
7
- data.tar.gz: ce4024eec88826e162ec5eb5030aac264e8174fddb2418244a6e6d383084d2b0d529f71216e85a7a41588efbc63f1d0fd6137b8289f09cbc183a421731117374
6
+ metadata.gz: 226526d7c16bb443326855cb615324b1535cb3299ac1daf9f87fd956bbecccbffe1a0ed5c4ff0528b06f93ac9e6cc1ecc80db48eb7ae07dab12181bda3463ede
7
+ data.tar.gz: c1321b24f99122b2af1f989731d7e0bf5626b8883694e27db36a6bb294c6216979092bc99fc10c9031f0760fac9f3c9ebc329ded9d51dcad1eb1bc953d9c8168
@@ -1,14 +1,17 @@
1
+ ## 1.0.5
2
+ - Add client methods about following, LGTM, and stock
3
+
1
4
  ## 1.0.4
2
- * Add list_teams method
5
+ - Add list_teams method
3
6
 
4
7
  ## 1.0.3
5
- * Escape request URL path
8
+ - Escape request URL path
6
9
 
7
10
  ## 1.0.2
8
- * Add a new API: list_item_stockers(item_id)
11
+ - Add a new API: list_item_stockers(item_id)
9
12
 
10
13
  ## 1.0.1
11
- * Fix response body existence check logic
14
+ - Fix response body existence check logic
12
15
 
13
16
  ## 1.0.0
14
- * Support Qiita API v2
17
+ - Support Qiita API v2
@@ -119,6 +119,13 @@ module Qiita
119
119
  get("/api/v2/users/#{user_id}/stocks", params, headers)
120
120
  end
121
121
 
122
+ # ### Qiita::Client#get_item_stock(item_id, params = nil, headers = nil)
123
+ # 特定の投稿をストックしている場合に204を返します。
124
+ #
125
+ def get_item_stock(item_id, params = nil, headers = nil)
126
+ get("/api/v2/items/#{item_id}/stock", params, headers)
127
+ end
128
+
122
129
  # ### Qiita::Client#stock_item(item_id, params = nil, headers = nil)
123
130
  # 特定の投稿をストックします。
124
131
  #
@@ -210,6 +217,27 @@ module Qiita
210
217
  get("/api/v2/users/#{user_id}/following_tags", params, headers)
211
218
  end
212
219
 
220
+ # ### Qiita::Client#get_tag_following(id, params = nil, headers = nil)
221
+ # 特定のタグをフォローしている場合に204を返します。
222
+ #
223
+ def get_tag_following(id, params = nil, headers = nil)
224
+ get("/api/v2/tags/#{id}/following", params, headers)
225
+ end
226
+
227
+ # ### Qiita::Client#follow_tag(id, params = nil, headers = nil)
228
+ # 特定のタグをフォローします。
229
+ #
230
+ def follow_tag(id, params = nil, headers = nil)
231
+ put("/api/v2/tags/#{id}/following", params, headers)
232
+ end
233
+
234
+ # ### Qiita::Client#unfollow_tag(id, params = nil, headers = nil)
235
+ # 特定のタグへのフォローを解除します。
236
+ #
237
+ def unfollow_tag(id, params = nil, headers = nil)
238
+ delete("/api/v2/tags/#{id}/following", params, headers)
239
+ end
240
+
213
241
  # ### Qiita::Client#list_teams(params = nil, headers = nil)
214
242
  # 現在のリクエストで認証されているユーザが所属している全てのチームを返します。
215
243
  #
@@ -293,5 +321,26 @@ module Qiita
293
321
  def list_item_stockers(item_id, params = nil, headers = nil)
294
322
  get("/api/v2/items/#{item_id}/stockers", params, headers)
295
323
  end
324
+
325
+ # ### Qiita::Client#get_user_following(user_id, params = nil, headers = nil)
326
+ # 特定のユーザをフォローしている場合に204を返します。
327
+ #
328
+ def get_user_following(user_id, params = nil, headers = nil)
329
+ get("/api/v2/users/#{user_id}/following", params, headers)
330
+ end
331
+
332
+ # ### Qiita::Client#follow_user(user_id, params = nil, headers = nil)
333
+ # 特定のユーザをフォローします。
334
+ #
335
+ def follow_user(user_id, params = nil, headers = nil)
336
+ put("/api/v2/users/#{user_id}/following", params, headers)
337
+ end
338
+
339
+ # ### Qiita::Client#unfollow_user(user_id, params = nil, headers = nil)
340
+ # 特定のユーザへのフォローを外します。
341
+ #
342
+ def unfollow_user(user_id, params = nil, headers = nil)
343
+ delete("/api/v2/users/#{user_id}/following", params, headers)
344
+ end
296
345
  end
297
346
  end
@@ -1,3 +1,3 @@
1
1
  module Qiita
2
- VERSION = "1.0.4"
2
+ VERSION = "1.0.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qiita
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-05 00:00:00.000000000 Z
11
+ date: 2014-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -225,7 +225,6 @@ files:
225
225
  - lib/qiita/version.rb
226
226
  - qiita.gemspec
227
227
  - script/generate
228
- - script/generate-objc
229
228
  - spec/qiita/client_spec.rb
230
229
  - spec/spec_helper.rb
231
230
  homepage: https://github.com/increments/qiita-rb
@@ -1,152 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # # script/generate-objc
3
- # Generates a subclass of AFHTTPSessionManager from given JSON Schema.
4
- #
5
- # ## Usage
6
- # Run this script with a path to JSON Schema of Qiita API v2, available only for staff.
7
- #
8
- # ```sh
9
- # bundle exec ./script/generate-objc [-h|-m] INCQiitaSessionManager /path/to/json/schema > INCQiitaSessionManager.[h|m]
10
- # ```
11
- #
12
- require "active_support/core_ext/object/try"
13
- require "active_support/core_ext/string/indent"
14
- require "active_support/core_ext/string/inflections"
15
- require "active_support/core_ext/string/strip"
16
- require "json_schema"
17
- require "optparse"
18
- require "ostruct"
19
- require "yaml"
20
-
21
- # View object class to generate String representation of each method.
22
- method_class = Class.new(OpenStruct) do
23
- def to_s
24
- if header?
25
- <<-EOS.strip_heredoc
26
- /// #{description}
27
- #{return_type_marker}#{wrapped_method_signature(return_type_marker.length).indent(8).strip};
28
- EOS
29
- else
30
- <<-EOS.strip_heredoc
31
- #{return_type_marker}#{wrapped_method_signature(return_type_marker.length).indent(8).strip} {
32
- NSString *path = [NSString stringWithFormat:#{path_format_and_arguments}];
33
- return [self #{request_method}:path parameters:parameters success:success failure:failure];
34
- }
35
- EOS
36
- end
37
- end
38
-
39
- private
40
-
41
- def return_type_marker
42
- "- (NSURLSessionDataTask *)"
43
- end
44
-
45
- def wrapped_method_signature(offset)
46
- components = method_signature.split(/ (?=[0-9A-Za-z_]+:)/)
47
- colon_position = offset + components[0].index(":")
48
- aligned = [components[0]]
49
- components[1..-1].each do |component|
50
- aligned << " " * (colon_position - component.index(":")) + component
51
- end
52
- aligned.join("\n")
53
- end
54
-
55
- def method_signature
56
- camelize_objcish(method_name) + with_arguments
57
- end
58
-
59
- def with_arguments
60
- arguments = required_argument_names.map {|name|
61
- camelize_objcish(name) + ":(NSString *)" + camelize_objcish(name)
62
- }
63
- arguments << "parameters:(NSDictionary *)parameters"
64
- arguments << "success:(void (^)(NSURLSessionDataTask *task, id responseObject))success"
65
- arguments << "failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure"
66
- "With" + upcase_first(arguments.join(" "))
67
- end
68
-
69
- def camelize_objcish(name)
70
- name = name.split(/_/).map {|component|
71
- case component
72
- when "id" then "i_d" # to camelize into "ID"
73
- else component
74
- end
75
- }.join("_")
76
- name =~ /^i_d/ ? name.camelize : name.camelize(:lower)
77
- end
78
-
79
- def upcase_first(s)
80
- s[0].upcase + s[1..-1]
81
- end
82
-
83
- def path_format_and_arguments
84
- placeholder_pattern = %r<{\(.*/([^/]+)\)}>
85
- format = %Q<@"#{href.gsub(placeholder_pattern, '%@')}">
86
- keys = href.scan(placeholder_pattern).flatten
87
- arguments = keys.map {|key| camelize_objcish(key) }
88
- ([format] + arguments).join(", ")
89
- end
90
-
91
- def path
92
- ?" + href.gsub(%r<{\(.*/([^/]+)\)}>, '#{\1}') + ?"
93
- end
94
-
95
- def header?
96
- _generates_header
97
- end
98
- end
99
-
100
- opt = OptionParser.new
101
- opt.on("-h CLASS") {|c| $class_name = c; $generates_header = true }
102
- opt.on("-m CLASS") {|c| $class_name = c; $generates_header = false }
103
- opt.parse!(ARGV)
104
- unless $class_name
105
- abort "Neither -h nor -m given. Aborted."
106
- end
107
- path_to_json_schema = ARGV[0]
108
- hash = YAML.load_file(path_to_json_schema)
109
- schema = JsonSchema.parse!(hash).tap(&:expand_references!)
110
- links = schema.properties.values.map(&:links).flatten
111
- methods = links.map do |link|
112
- method_class.new(
113
- _generates_header: $generates_header,
114
- available_parameters: (link.schema.try(:properties) || {}).map do |name, property|
115
- {
116
- description: property.description,
117
- name: name,
118
- type: property.type,
119
- }
120
- end,
121
- description: link.description,
122
- href: link.href,
123
- method_name: link.title,
124
- request_method: link.method.upcase,
125
- required_argument_names: link.href.scan(%r<{\(.*/([^/]+)\)}>).flatten,
126
- )
127
- end
128
- if $generates_header
129
- puts <<-EOS.strip_heredoc
130
- #import <AFNetworking/AFHTTPSessionManager.h>
131
-
132
- @interface #{$class_name} : AFHTTPSessionManager
133
-
134
- #{methods.join("\n").indent(4).strip}
135
-
136
- @end
137
- EOS
138
- else
139
- puts <<-EOS.strip_heredoc
140
- #import "#{$class_name}.h"
141
-
142
- @implementation #{$class_name}
143
-
144
- + (instancetype)manager {
145
- return [[[self class] alloc] initWithBaseURL:[NSURL URLWithString:@"https://qiita.com"]];
146
- }
147
-
148
- #{methods.join("\n").indent(4).strip}
149
-
150
- @end
151
- EOS
152
- end