Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release v0.6.0 #109

Merged
merged 412 commits into from
Feb 20, 2024
Merged
Changes from 12 commits
Commits
Show all changes
412 commits
Select commit Hold shift + click to select a range
10c8c8d
feat: Missingクラスを追加
yupix Dec 3, 2023
c2cac8f
chore: remove_dict_emptyで特定のkeyをignoreできるように
yupix Dec 3, 2023
5e36908
feat: remove_dict_missing関数を追加
yupix Dec 3, 2023
300c2e4
chore: mipac.utils.utilのMISSINGを使うように
yupix Dec 3, 2023
d55a49c
chore: 古いdrive達をいったん避難
yupix Dec 3, 2023
b91aaa1
feat: drive/files/* をサポート
yupix Dec 3, 2023
6e26406
chore: サポート状況を更新
yupix Dec 3, 2023
af4bb82
chore: 型の名前を統一
yupix Dec 3, 2023
7075b13
chore: importのcommit忘れ
yupix Dec 3, 2023
641db1d
chore: 使用していないimportを削除
yupix Dec 3, 2023
0a247c5
feat: drive/streamをサポート
yupix Dec 3, 2023
1cf757f
chore: driveに関するモデルの引数を変更
yupix Dec 3, 2023
86cc8ed
feat: drive/folders/* をサポート
yupix Dec 3, 2023
d098b91
feat: admin/drive/* をサポート
yupix Dec 3, 2023
b286098
Merge pull request #105 from yupix/feat/v13/drive
yupix Dec 3, 2023
c376350
chore: 昔のdrive系を削除
yupix Dec 3, 2023
6dcbe15
docs: update CHANGELOG.md
yupix Dec 3, 2023
f12cda8
chore: endpoints.pyを更新
yupix Dec 3, 2023
10ae56d
chore: AdminActionsのimportを整理
yupix Dec 3, 2023
da296e4
docs: update rst
yupix Dec 3, 2023
feae71a
chore: Noteモデルの引数を変更
yupix Dec 3, 2023
35ce2c6
chore: NoteActions.sendのcontetをsendに
yupix Dec 3, 2023
850e800
feat: Channel周りの型とモデルを作り直した
yupix Dec 3, 2023
bc643fd
chore: ClientChannel系を追加
yupix Dec 3, 2023
35f1eae
chore: 些細な変更
yupix Dec 3, 2023
8fc4ed3
feat: /channels/update をサポート
yupix Dec 3, 2023
7122432
feat: /channels/favorite をサポート
yupix Dec 3, 2023
71ada21
feat: /channels/unfavorite をサポート
yupix Dec 3, 2023
bb30b47
feat: /channels/my-favorites をサポート
yupix Dec 3, 2023
90725ba
feat: /channels/search をサポート
yupix Dec 3, 2023
0734e2e
chore: サポート状況を更新
yupix Dec 3, 2023
af34130
Merge pull request #107 from yupix/refactor/channel
yupix Dec 3, 2023
9054f31
fix: updateでNoneが消されてしまう
yupix Dec 3, 2023
103129d
docs: update CONTRIBUTING.md
yupix Dec 3, 2023
b59eab9
chore: instanceの型を修正
yupix Dec 4, 2023
b38926b
refactor: ユーザーの型を再定義
yupix Dec 4, 2023
957b181
chore: nicknameを非推奨に
yupix Dec 4, 2023
ce9a91f
feat: AvatarDecoration モデルを追加
yupix Dec 4, 2023
59535c6
chore: DocStringを追加
yupix Dec 4, 2023
b98b767
fix: typo
yupix Dec 4, 2023
7b98f66
feat: UserDetailedNotMeOnly モデルを追加
yupix Dec 4, 2023
3abf722
fix: typo
yupix Dec 5, 2023
d4c434d
feat: Announcementに関するモデルと型を作り直した
yupix Dec 5, 2023
6472dd1
chore: is_partial_userの正確さを向上
yupix Dec 5, 2023
ecc8b9b
fix: typo
yupix Dec 5, 2023
dc3978b
refactor: ユーザーモデルを作り直した #108
yupix Dec 5, 2023
ee82e4f
chore: 新しいUser周りのモデルを使用するように変更
yupix Dec 5, 2023
d089de3
docs: サポート状況を更新
yupix Dec 5, 2023
b2b0a02
chore: importの整理
yupix Dec 5, 2023
bdcf431
refactor: get_notesを通常のメソッドに
yupix Dec 5, 2023
8d6358c
feat: get_all_notesメソッドを追加
yupix Dec 5, 2023
7307b8a
chore: Clipの引数を変更
yupix Dec 5, 2023
966601e
fix: 型が間違っている
yupix Dec 5, 2023
171f60b
feat: UserActionsをClientと分けた
yupix Dec 5, 2023
e91617c
feat: ClientUserManagerを追加
yupix Dec 5, 2023
80be00c
feat: Followに関するモデルを追加
yupix Dec 5, 2023
c277bc3
fix: followeeとfollowerは無い場合がある
yupix Dec 6, 2023
1903cca
fix: paginationでlimitが100以外だと全て取得できない
yupix Dec 6, 2023
827a671
feat: PartialUserでClientUserManagerを使うように
yupix Dec 6, 2023
08f5515
feat: /api/users/followers をサポート
yupix Dec 6, 2023
5bb0920
refactor: Paginationクラスで使用していない引数やコードの整理
yupix Dec 6, 2023
3b5d1ef
feat: /api/users/following をサポート
yupix Dec 6, 2023
957db2a
feat: GalleryPostモデルを追加
yupix Dec 8, 2023
bc844eb
feat: /api/users/gallery/posts をサポート
yupix Dec 8, 2023
403dea0
feat: FrequentlyRepliedUser モデルを追加
yupix Dec 8, 2023
9c62357
feat: /api/users/get-frequently-replied-users をサポート
yupix Dec 8, 2023
9285a59
feat: /api/users/featured-notes をサポート
yupix Dec 8, 2023
3bbd994
chore: サポート状況を更新
yupix Dec 8, 2023
e760827
fix: auth引数をつけ忘れている
yupix Dec 8, 2023
d2ffc3a
feat: UserListモデルを追加
yupix Dec 8, 2023
55a2b3e
fix: mipactlでフォルダを作成するように
yupix Dec 8, 2023
5b4f535
feat: /api/users/lists/createをサポート
yupix Dec 8, 2023
b65bc9f
feat: /api/users/lists/delete をサポート
yupix Dec 8, 2023
fea0f37
feat: ClientUserListManagerを追加
yupix Dec 8, 2023
e7116e8
feat: /api/users/lists/list をサポート
yupix Dec 8, 2023
ad0720b
feat: userlist周りでuser_idを使えるように微調整
yupix Dec 8, 2023
de8b8a2
refactor: ClientPartialUserListActionsを追加
yupix Dec 8, 2023
ff2eea4
feat: /api/users/lists/push をサポート
yupix Dec 8, 2023
4cf3b80
feat: /api/users/lists/show をサポート
yupix Dec 8, 2023
ddc122a
feat: /api/users/lists/favorite をサポート
yupix Dec 8, 2023
081f50e
feat: /api/users/lists/unfavorite をサポート
yupix Dec 8, 2023
44ccd07
feat: /api/notes/user-list-timelineをサポート
yupix Dec 29, 2023
07931fd
feat: /api/users/lists/update をサポート
yupix Dec 29, 2023
e6c4756
feat: /api/users/lists/create-from-public をサポート
yupix Dec 29, 2023
5340906
fix: 引数にデフォルト値が入ってる
yupix Dec 29, 2023
9e5cd95
feat: /users/lists/update-membership をサポート
yupix Dec 29, 2023
2e6edaa
chore: メソッド名をapiに合わせた
yupix Dec 29, 2023
64475fc
feat: userlistMembership周りのモデルを追加
yupix Dec 30, 2023
77f2735
feat: /users/lists/get-memberships をサポート
yupix Dec 30, 2023
5d9a40a
feat: サポート状況を更新
yupix Dec 30, 2023
5e99257
feat: サポート状況を更新
yupix Dec 30, 2023
ea1a0c6
feat: より良い品質のmarkdownを出すように
yupix Dec 30, 2023
4c92ad6
chore: format
yupix Dec 30, 2023
9bbdde3
Merge pull request #110 from yupix/feat/v13/users
yupix Dec 30, 2023
41a0fa0
Merge branch 'develop' of github.com:yupix/MiPAC into develop
yupix Dec 30, 2023
e05af37
fix: endpoints.jsonでneedToWorkにならない
yupix Dec 30, 2023
96e4002
chore: データの更新
yupix Dec 30, 2023
e09a405
chore: サポート状況を更新
yupix Dec 30, 2023
0ed9a99
feat: python3.12のジェネリックスの書き方に
yupix Jan 3, 2024
7167a5b
feat: pagination_iterator を削除
yupix Jan 3, 2024
c707bcc
chore: 必要なpythonのバージョンを3.12に
yupix Jan 3, 2024
45864df
ci: python3.12に変更
yupix Jan 3, 2024
7a9239f
ci: ドキュメントのビルドに3.12を使うように
yupix Jan 3, 2024
939b749
chore: python3.12に向けて色々変更
yupix Jan 4, 2024
3158d0e
feat!: AbstractModelを廃止
yupix Jan 5, 2024
e3b40ab
feat: admin/ad/create の引数を最新のものに更新
yupix Jan 5, 2024
8638cee
refactor: admin/ad/delete をより良い形で再実装
yupix Jan 5, 2024
7d99e22
feat: adモデルを最新のものに更新
yupix Jan 6, 2024
7c1607a
refacor: admin/ad/list の実装方法を新しく
yupix Jan 6, 2024
772b43b
chore: Ad周りの型を最新のMisskeyに追従
yupix Jan 6, 2024
8871d4f
chore: format code
yupix Jan 6, 2024
a6de7b9
fix: get_all_listのwhileの条件が間違っている
yupix Jan 6, 2024
dc3ff77
fix: typo
yupix Jan 6, 2024
a7a7a13
feat: admin/ad/update をサポート
yupix Jan 6, 2024
bef1efe
chore: サポート状況を更新
yupix Jan 6, 2024
c50e83e
feat: notes/create のメソッドをcreateに変更
yupix Jan 6, 2024
7a2e647
refactor: clientNoteActionsで定義した引数をoverrideで再定義するように
yupix Jan 6, 2024
e53fd41
feat: notes/conversation をサポート
yupix Jan 6, 2024
5c11b80
refactor: note favorite 周りの実装を新しく
yupix Jan 6, 2024
a569480
feat: notes/featured をサポート
yupix Jan 6, 2024
41e8de3
feat: notes/hybrid-timeline をサポート
yupix Jan 6, 2024
8706750
feat: notes/local-timeline をサポート
yupix Jan 6, 2024
16fc12e
chore: サポート状況を更新
yupix Jan 6, 2024
f21868f
feat: Pollのvoteをoverrideするように
yupix Jan 7, 2024
d55f88c
chore: メソッドの位置を変更
yupix Jan 7, 2024
36026a7
feat: reactionのactionsとmanagerをclientで分けた
yupix Jan 7, 2024
0633853
chore: format code
yupix Jan 7, 2024
9c00909
refactor: 引数の型をより正確に
yupix Jan 7, 2024
27d3a7f
feat: notes/search-by-tag をサポート
yupix Jan 7, 2024
b0d7c20
feat: サポート状況を更新
yupix Jan 7, 2024
3b4fa9c
docs: update README.md
yupix Jan 7, 2024
3bad42b
chore: サポート状況を更新
yupix Feb 2, 2024
7b97e13
feat: Antennaを最新に追従
yupix Feb 2, 2024
1a57815
feat: antennas/createの引数を更新
yupix Feb 2, 2024
0d11373
chore: 使用されていない型を削除
yupix Feb 2, 2024
4348598
feat: アバターデコレーションに関するモデルを更新
yupix Feb 2, 2024
3736ae4
chore: openapiの型を追加
yupix Feb 2, 2024
2ec1093
Merge branches 'develop' and 'develop' of github.com:yupix/MiPAC into…
yupix Feb 2, 2024
8f7ed4f
chore: NoteChannelモデルを更新
yupix Feb 2, 2024
06feabb
fix: サポートしてないものがneedToWorkになる
yupix Feb 2, 2024
29ca576
chore: データをもとに戻す
yupix Feb 2, 2024
bd825f2
chore: データを改めて更新
yupix Feb 2, 2024
b69b47d
feat: UserDetailedNotMeOnlyモデルを更新
yupix Feb 2, 2024
29f565e
fix: サポート済みじゃないとハッシュが更新されない
yupix Feb 2, 2024
7e2eb93
chore: プログレスバーを出すように
yupix Feb 2, 2024
0e768bf
chore: サポート済みスキーマを更新
yupix Feb 2, 2024
7f9c0ac
feat: get_invite_list を all版とで分けた
yupix Feb 2, 2024
16d0287
feat: get_moderation_logs に使える引数を追加
yupix Feb 2, 2024
cba1f30
chore: channels/create の引数を最新に追従
yupix Feb 2, 2024
49958d9
feat: admin/roles/create の引数を最新に追従
yupix Feb 2, 2024
dbd78c6
chore: サポート状況を更新
yupix Feb 2, 2024
d64fecc
chore: ruffの設定を変更
yupix Feb 2, 2024
1297def
chore: format
yupix Feb 2, 2024
8e1cc0c
chore: followの型を正確に
yupix Feb 2, 2024
cb8ffa6
ci: add .onedev-buildspec.yml
yupix Feb 8, 2024
e29b495
feat: emojiに関するモデルを追加
yupix Feb 8, 2024
6a3ddff
feat: 新しい絵文字モデルを使うように
yupix Feb 8, 2024
b3a1a1a
chore: 開発者向けの依存関係を追加
yupix Feb 8, 2024
a29deeb
chore: サポート状況を更新
yupix Feb 8, 2024
6c309e8
fix: repositoryのリンクを修正
yupix Feb 8, 2024
1d8817e
ci: gitlabへのpushはforceで行うように
yupix Feb 8, 2024
0094483
feat: get_all_files メソッドを追加
yupix Feb 8, 2024
72052a2
chore: driveの型を変更
yupix Feb 8, 2024
7599d20
feat: drive系に _get メソッドを追加
yupix Feb 8, 2024
6e7fd40
feat: get_all_attached_notes メソッドを追加
yupix Feb 9, 2024
4c69fc5
chore: update docstring
yupix Feb 9, 2024
443a93b
chore: update support status
yupix Feb 9, 2024
8677735
feat: FileActions.create で扱えるファイルの形式を追加
yupix Feb 9, 2024
e2c0ad0
docs: ドキュメントのデフォルト言語を日本語に
yupix Feb 9, 2024
b1210e6
chore: 引数のデフォルト値を変更、docstringを更新
yupix Feb 9, 2024
e3a420a
chore: docstringを変更
yupix Feb 9, 2024
93028ab
chore: サポート状況を更新
yupix Feb 9, 2024
49ad01d
chore: format
yupix Feb 9, 2024
8cd4503
feat: ChannelモデルにDocStringを追加
yupix Feb 9, 2024
e6748ca
feat: get_all_followed メソッドを追加
yupix Feb 9, 2024
787813e
chore: format
yupix Feb 9, 2024
9439ef5
feat: get_all_owned メソッドを追加
yupix Feb 9, 2024
04d4eef
chore: update DocString
yupix Feb 9, 2024
afe4c8f
chore: update DocString
yupix Feb 9, 2024
3c28646
feat: channels/timeline周りのDocStringを更新 & エラーハンドリングを追加
yupix Feb 9, 2024
c9c8e54
chore: サポート状況を更新
yupix Feb 9, 2024
a72b219
fix: ネストしたフォルダ構造でインポートが壊れる
yupix Feb 9, 2024
45c2479
feat: mute用のmanagerとactionsを用意
yupix Feb 9, 2024
3a9707f
feat: MuteUserモデルを更新
yupix Feb 9, 2024
d6f494d
feat: MuteUserをMutedUserに変更
yupix Feb 9, 2024
bdd4916
feat: /mute/* を再実装
yupix Feb 9, 2024
62ee3eb
feat: MuteActionsをClientと分けた
yupix Feb 9, 2024
3e535fe
chore: format
yupix Feb 9, 2024
1dfd443
chore: endpointを更新
yupix Feb 9, 2024
da1ebfe
chore: 些細な変更
yupix Feb 9, 2024
8cd61c3
chore: サポート状況を更新
yupix Feb 9, 2024
7e2ca3f
docs: update CHANGELOG.md
yupix Feb 9, 2024
b4327ad
refactor: ParameterError から ValueErrorに close #119
yupix Feb 9, 2024
b8792c5
ci: add code_quality.yml
yupix Feb 9, 2024
3cf5b7e
docs: update README.md
yupix Feb 9, 2024
9e23fd5
Merge branch 'develop' of github.com:yupix/MiPAC into develop
yupix Feb 16, 2024
b81ed06
Refactor/use lsp (#122)
yupix Feb 16, 2024
effea0d
Merge branch 'develop' of github.com:yupix/MiPAC into develop
yupix Feb 16, 2024
63f6761
fix: key がキャメルケースのまま
yupix Feb 16, 2024
99f0d55
fix: propertyになってない
yupix Feb 16, 2024
42d1283
chore: 些細な修正
yupix Feb 16, 2024
33fca69
chore: 存在しないエンドポイント用のaction等を削除
yupix Feb 16, 2024
863253c
fix: setup install
omg-xtao Feb 18, 2024
c456ed5
Merge pull request #125 from omg-xtao/fix/install
yupix Feb 19, 2024
2af6095
Merge branch 'develop' of github.com:yupix/MiPAC into develop
yupix Feb 19, 2024
b1c2335
fea:t channel周りを再実装 progress #124
yupix Feb 19, 2024
973ad39
chore: format
yupix Feb 19, 2024
9d562ee
refactor: note周りを再実装 progress #124
yupix Feb 19, 2024
e8ce50d
chore: format
yupix Feb 19, 2024
36faacc
refactor: userlist周りを再実装 progress #124
yupix Feb 19, 2024
2d457e9
feat: user周りを再実装 progress #124
yupix Feb 19, 2024
dc2cf6a
chore: 些細な修正
yupix Feb 19, 2024
a3b0568
fix: 戻り値が間違っている
yupix Feb 19, 2024
8860a1d
chore: clip_idがキーワード引数になっていないのを修正
yupix Feb 19, 2024
f2ace31
chore: 些細な変更
yupix Feb 19, 2024
e7bf18e
chore: pyrightの設定を追記
yupix Feb 19, 2024
cfad9fb
feat: blockingをclientとで分けた close #123
yupix Feb 20, 2024
b44336d
feat: Blockingモデルを追加
yupix Feb 20, 2024
59f7867
chore!: BlockingUserモデルを削除
yupix Feb 20, 2024
62d4037
chore: コミット漏れ
yupix Feb 20, 2024
8dfc32b
feat: BlockingActions._get_listをget_all_listに分けた
yupix Feb 20, 2024
2931e3d
chore: Annoucementの型を明確に
yupix Feb 20, 2024
7008dc7
chore: IUserのunionからMeDetailedを削除
yupix Feb 20, 2024
bca4dd6
chore: EmojiSimpleにlocal_onlyプロパティを追加
yupix Feb 20, 2024
c5109ba
chore: IMutedUserの型を修正
yupix Feb 20, 2024
0550155
feat: Noteモデルにemojisプロパティを追加
yupix Feb 20, 2024
a612cf8
chore: pollの型を修正
yupix Feb 20, 2024
2f0f51e
feat: RolePoliciesを更新
yupix Feb 20, 2024
df9a220
feat: NotificationRecieveConfig を更新
yupix Feb 20, 2024
c62e81e
chore: ModerationLogの型を更新
yupix Feb 20, 2024
303c415
chore: format
yupix Feb 20, 2024
bef5c6f
fix: build error & typo
yupix Feb 20, 2024
00f13ce
chore: 使用していないimportを削除
yupix Feb 20, 2024
9ba6e8a
feat: pre commitを使用するように
yupix Feb 20, 2024
3f0c718
docs: update CONTRIBUTING.md
yupix Feb 20, 2024
9b67359
feat: Permissions型を追加
yupix Feb 20, 2024
08a3629
chore!: AuthClientを削除
yupix Feb 20, 2024
a690e1c
feat: MiAuth用のユーティリティクラスを追加
yupix Feb 20, 2024
a130033
docs: update CONTRIBUTING.md
yupix Feb 20, 2024
bfce899
chore: 些細な変更
yupix Feb 20, 2024
a4c878c
feat!: MeRoleを削除
yupix Feb 20, 2024
0b5b646
feat: modelに_getメソッドを追加
yupix Feb 20, 2024
357bd2c
chore: credentials_required を削除 close #101
yupix Feb 20, 2024
6e3dac1
chore!: requestのauth引数のデフォルト値をTrueに変更
yupix Feb 20, 2024
3a286c3
feat!: AntennaActions.get_notesをget_allと分けた
yupix Feb 20, 2024
a7963e8
feat!: MutedUserをMutingに改名
yupix Feb 20, 2024
5b6f52b
chore: 未消化のTODOを消化
yupix Feb 20, 2024
0f066b7
fix: circular import
yupix Feb 20, 2024
b5a734a
docs: update rst & po
yupix Feb 20, 2024
749a519
feat: release v0.6.0
yupix Feb 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions compiler/datas/endpoints.json
Original file line number Diff line number Diff line change
@@ -533,79 +533,79 @@
"path": "/channels/create",
"request_body_hash": "a93b5965ac430f0559117367c477cdbdba3b666dfbcaf6e872f7b8d8ad9a7018",
"response_body_hash": "5b021f93f602da140c41c923e0b6b0f11fbf4aa1133f3f4090627f2ee0444707",
"status": "notSupported"
"status": "supported"
},
"/channels/featured": {
"path": "/channels/featured",
"request_body_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a",
"response_body_hash": "636dd2c64e1c2caadfdece63ab5654daab1dd2ad142a9823634965a67e48dcc3",
"status": "notSupported"
"status": "supported"
},
"/channels/follow": {
"path": "/channels/follow",
"request_body_hash": "680923b4e18887b81f0c58cdda275876c2b7ba3f072efa9f91e00bcf4361bb1a",
"response_body_hash": "6b66afa06051d494558994e6b9a3d5229059ac8a6638ef092a26e3f9559f04f9",
"status": "notSupported"
"status": "supported"
},
"/channels/followed": {
"path": "/channels/followed",
"request_body_hash": "874fe7a09828d52b1e209c103e7d8808af6b0af79213965be746d011906df3d3",
"response_body_hash": "636dd2c64e1c2caadfdece63ab5654daab1dd2ad142a9823634965a67e48dcc3",
"status": "notSupported"
"status": "supported"
},
"/channels/owned": {
"path": "/channels/owned",
"request_body_hash": "874fe7a09828d52b1e209c103e7d8808af6b0af79213965be746d011906df3d3",
"response_body_hash": "636dd2c64e1c2caadfdece63ab5654daab1dd2ad142a9823634965a67e48dcc3",
"status": "notSupported"
"status": "supported"
},
"/channels/show": {
"path": "/channels/show",
"request_body_hash": "680923b4e18887b81f0c58cdda275876c2b7ba3f072efa9f91e00bcf4361bb1a",
"response_body_hash": "3d0e4c16a4c8a0b329eaff932045dda300f10b6560fa52b03628af7a5c23e42a",
"status": "notSupported"
"status": "supported"
},
"/channels/timeline": {
"path": "/channels/timeline",
"request_body_hash": "37acc373792cce6e83ba8dce673302849ea9a986f20627e3552c4e0f9036035c",
"response_body_hash": "dd2892a643d7549cc19d7b41adbd2acfbe3b82ea6643caee9538bbe7c84c4b70",
"status": "notSupported"
"status": "supported"
},
"/channels/unfollow": {
"path": "/channels/unfollow",
"request_body_hash": "680923b4e18887b81f0c58cdda275876c2b7ba3f072efa9f91e00bcf4361bb1a",
"response_body_hash": "e4f90abe92cc8eabcb43faa501d98d6be2fd3ca16b3bb4f4f978621012a91381",
"status": "notSupported"
"status": "supported"
},
"/channels/update": {
"path": "/channels/update",
"request_body_hash": "acd5353c3480f6faad9d555bc73124cca6189dac4480610408fc1225c366e3a3",
"response_body_hash": "c3492ae1d3a037efb2a2ae98a56288cfb52ed3717737ebef935a884fdc17d285",
"status": "notSupported"
"status": "supported"
},
"/channels/favorite": {
"path": "/channels/favorite",
"request_body_hash": "680923b4e18887b81f0c58cdda275876c2b7ba3f072efa9f91e00bcf4361bb1a",
"response_body_hash": "0e50dd9d6190d1252681a3a892b43db593f79a296da9440aa0f98b2c6fccd5e3",
"status": "notSupported"
"status": "supported"
},
"/channels/unfavorite": {
"path": "/channels/unfavorite",
"request_body_hash": "680923b4e18887b81f0c58cdda275876c2b7ba3f072efa9f91e00bcf4361bb1a",
"response_body_hash": "4dca34b5e13d095bd1572b4d4665d65dbed089ddeb0b0d51f7e6b9e84aeb1713",
"status": "notSupported"
"status": "supported"
},
"/channels/my-favorites": {
"path": "/channels/my-favorites",
"request_body_hash": "44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a",
"response_body_hash": "636dd2c64e1c2caadfdece63ab5654daab1dd2ad142a9823634965a67e48dcc3",
"status": "notSupported"
"status": "supported"
},
"/channels/search": {
"path": "/channels/search",
"request_body_hash": "99efb621a25e5e80a19df58b6cbdccf5d64f8e11f33a4aeedfc3bd6ab9a17b99",
"response_body_hash": "636dd2c64e1c2caadfdece63ab5654daab1dd2ad142a9823634965a67e48dcc3",
"status": "notSupported"
"status": "supported"
},
"/charts/active-users": {
"path": "/charts/active-users",
28 changes: 14 additions & 14 deletions compiler/datas/support_status.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## SUPPORTED ENDPOINTS (65/322)
## SUPPORTED ENDPOINTS (78/322)
- [x] /admin/drive/clean-remote-files
- [x] /admin/drive/cleanup
- [x] /admin/drive/files
@@ -12,6 +12,19 @@
- [x] /admin/show-moderation-logs
- [x] /admin/unsuspend-user
- [x] /admin/update-user-note
- [x] /channels/create
- [x] /channels/featured
- [x] /channels/follow
- [x] /channels/followed
- [x] /channels/owned
- [x] /channels/show
- [x] /channels/timeline
- [x] /channels/unfollow
- [x] /channels/update
- [x] /channels/favorite
- [x] /channels/unfavorite
- [x] /channels/my-favorites
- [x] /channels/search
- [x] /drive
- [x] /drive/files
- [x] /drive/files/attached-notes
@@ -143,19 +156,6 @@
- [ ] /blocking/create
- [ ] /blocking/delete
- [ ] /blocking/list
- [ ] /channels/create
- [ ] /channels/featured
- [ ] /channels/follow
- [ ] /channels/followed
- [ ] /channels/owned
- [ ] /channels/show
- [ ] /channels/timeline
- [ ] /channels/unfollow
- [ ] /channels/update
- [ ] /channels/favorite
- [ ] /channels/unfavorite
- [ ] /channels/my-favorites
- [ ] /channels/search
- [ ] /charts/active-users
- [ ] /charts/ap-request
- [ ] /charts/drive
871 changes: 625 additions & 246 deletions mipac/actions/channel.py

Large diffs are not rendered by default.

82 changes: 41 additions & 41 deletions mipac/actions/note.py
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@


def create_note_body(
content: str | None = None,
text: str | None = None,
visibility: INoteVisibility = "public",
visible_user_ids: list[str] | None = None,
cw: str | None = None,
@@ -40,11 +40,11 @@ def create_note_body(
files: list[MiFile | File | str] | None = None,
poll: MiPoll | None = None,
):
content = content or None
text = text or None
body = {
"visibility": visibility,
"visibleUserIds": visible_user_ids,
"text": content,
"text": text,
"cw": cw,
"localOnly": local_only,
"reactionAcceptance": reaction_acceptance,
@@ -55,7 +55,7 @@ def create_note_body(
"renoteId": renote_id,
"channelId": channel_id,
}
if not check_multi_arg(content, files, renote_id, poll):
if not check_multi_arg(text, files, renote_id, poll):
raise ParameterError(
"To send a note, one of content, file_ids, renote_id or poll is required"
)
@@ -473,19 +473,19 @@ async def renote(
renote_id = renote_id or self._note_id

body = create_note_body(
content=text,
cw=cw,
channel_id=channel_id,
text=text,
visibility=visibility,
visible_user_ids=visible_user_ids,
extract_emojis=extract_emojis,
extract_hashtags=extract_hashtags,
extract_mentions=extract_mentions,
poll=poll,
cw=cw,
local_only=local_only,
reaction_acceptance=reaction_acceptance,
extract_mentions=extract_mentions,
extract_hashtags=extract_hashtags,
extract_emojis=extract_emojis,
renote_id=renote_id,
channel_id=channel_id,
files=files,
poll=poll,
)

res: ICreatedNote = await self._session.request(
@@ -518,18 +518,18 @@ async def reply(
raise ParameterError("reply_id is required")

body = create_note_body(
content=text,
cw=cw,
text=text,
visibility=visibility,
visible_user_ids=visible_user_ids,
extract_emojis=extract_emojis,
extract_hashtags=extract_hashtags,
extract_mentions=extract_mentions,
poll=poll,
cw=cw,
local_only=local_only,
reaction_acceptance=reaction_acceptance,
extract_mentions=extract_mentions,
extract_hashtags=extract_hashtags,
extract_emojis=extract_emojis,
reply_id=reply_id,
files=files,
poll=poll,
)
res: ICreatedNote = await self._session.request(
Route("POST", "/api/notes/create"),
@@ -590,18 +590,18 @@ async def create_quote(
raise ParameterError("note_id is required")

body = create_note_body(
content=content,
cw=cw,
text=content,
visibility=visibility,
visible_user_ids=visible_user_ids,
extract_emojis=extract_emojis,
extract_hashtags=extract_hashtags,
extract_mentions=extract_mentions,
poll=poll,
cw=cw,
local_only=local_only,
reaction_acceptance=reaction_acceptance,
extract_mentions=extract_mentions,
extract_hashtags=extract_hashtags,
extract_emojis=extract_emojis,
renote_id=note_id,
files=files,
poll=poll,
)
res: ICreatedNote = await self._session.request(
Route("POST", "/api/notes/create"),
@@ -792,15 +792,15 @@ def __init__(

async def send(
self,
content: str | None = None,
text: str | None = None,
visibility: INoteVisibility = "public",
visible_user_ids: list[str] | None = None,
cw: str | None = None,
local_only: bool = False,
reaction_acceptance: IReactionAcceptance = None,
extract_mentions: bool = True,
extract_hashtags: bool = True,
extract_emojis: bool = True,
extract_mentions: bool = True, # 元は noExtractMentions
extract_hashtags: bool = True, # 元は noExtractHashtags
extract_emojis: bool = True, # 元は noExtractEmojis
reply_id: str | None = None,
renote_id: str | None = None,
channel_id: str | None = None,
@@ -813,7 +813,7 @@ async def send(
Parameters
----------
content : str | None, default=None
text : str | None, default=None
投稿する内容
visibility : INoteVisibility, optional
公開範囲, by default "public"
@@ -827,11 +827,11 @@ async def send(
reaction_acceptance : IReactionAcceptance, optional
リアクションの受け入れ設定, by default None
extract_mentions : bool, optional
メンションを展開するか, by default False
メンションを展開するか, by default True
extract_hashtags : bool, optional
ハッシュタグを展開するか, by default False
ハッシュタグを展開するか, by default True
extract_emojis : bool, optional
絵文字を展開するか, by default False
絵文字を展開するか, by default True
reply_id : str | None, optional
リプライ先のid, by default None
renote_id : str | None, optional
@@ -854,20 +854,20 @@ async def send(
[description]
"""
body = create_note_body(
content=content,
cw=cw,
channel_id=channel_id,
text=text,
visibility=visibility,
visible_user_ids=visible_user_ids,
extract_emojis=extract_emojis,
extract_hashtags=extract_hashtags,
extract_mentions=extract_mentions,
files=files,
poll=poll,
cw=cw,
local_only=local_only,
reaction_acceptance=reaction_acceptance,
renote_id=renote_id,
extract_mentions=extract_mentions,
extract_hashtags=extract_hashtags,
extract_emojis=extract_emojis,
reply_id=reply_id,
renote_id=renote_id,
channel_id=channel_id,
files=files,
poll=poll,
)
res: ICreatedNote = await self._session.request(
Route("POST", "/api/notes/create"),
@@ -979,7 +979,7 @@ async def get_mentions(
visibility: INoteVisibility = "public",
):
"""Get notes with mentions addressed to you
Endpoint: `/api/notes/mentions`
Parameters
16 changes: 15 additions & 1 deletion mipac/manager/channel.py
Original file line number Diff line number Diff line change
@@ -3,13 +3,27 @@
from typing import TYPE_CHECKING

from mipac.abstract.manager import AbstractManager
from mipac.actions.channel import ChannelActions
from mipac.actions.channel import ChannelActions, ClientChannelActions
from mipac.http import HTTPClient

if TYPE_CHECKING:
from mipac.manager.client import ClientManager


class ClientChannelManager(AbstractManager):
def __init__(self, channel_id: str, *, session: HTTPClient, client: ClientManager):
self._channel_id: str = channel_id
self._session: HTTPClient = session
self._client: ClientManager = client
self._action: ClientChannelActions = ClientChannelActions(
channel_id=channel_id, session=session, client=client
)

@property
def action(self) -> ClientChannelActions:
return self._action


class ChannelManager(AbstractManager):
def __init__(
self, channel_id: str | None = None, *, session: HTTPClient, client: ClientManager
7 changes: 4 additions & 3 deletions mipac/manager/client.py
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@
from mipac.http import HTTPClient
from mipac.manager.admins.admin import AdminManager
from mipac.manager.antenna import AntennaManager
from mipac.manager.channel import ChannelManager
from mipac.manager.channel import ChannelManager, ClientChannelManager
from mipac.manager.chart import ChartManager
from mipac.manager.clip import ClipManager
from mipac.manager.drive.drive import DriveManager
@@ -64,8 +64,9 @@ def _create_user_instance(self, user: PartialUser) -> UserManager:
def _create_note_instance(self, note_id: str) -> NoteManager:
return NoteManager(note_id, session=self.__session, client=self)

def _create_channel_instance(self, channel_id: str) -> ChannelManager:
return ChannelManager(channel_id=channel_id, session=self.__session, client=self)

def _create_client_channel_manager(self, channel_id: str) -> ClientChannelManager:
return ClientChannelManager(channel_id=channel_id, session=self.__session, client=self)

def _create_client_note_manager(self, note_id: str) -> ClientNoteManager:
return ClientNoteManager(note_id=note_id, session=self.__session, client=self)
89 changes: 81 additions & 8 deletions mipac/models/channel.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,99 @@
from __future__ import annotations
from datetime import datetime

from typing import TYPE_CHECKING

from mipac.models.lite.channel import ChannelLite
from mipac.models.note import Note
from mipac.types.channel import IChannel
from mipac.utils.format import str_to_datetime

if TYPE_CHECKING:
from mipac.manager.channel import ClientChannelManager
from mipac.manager import ClientManager


class Channel(ChannelLite[IChannel]):
def __init__(self, channel: IChannel, *, client: ClientManager) -> None:
super().__init__(channel=channel, client=client)
class Channel:
def __init__(self, raw_channel: IChannel, *, client: ClientManager) -> None:
self._raw_channel: IChannel = raw_channel
self.__client: ClientManager = client

@property
def has_unread_note(self) -> bool:
return self._channel["has_unread_note"]
def id(self) -> str:
return self._raw_channel["id"]

@property
def created_at(self) -> datetime:
return str_to_datetime(self._raw_channel["created_at"])

@property
def last_noted_at(self) -> datetime | None:
last_noted_at = self._raw_channel.get("last_noted_at")
return str_to_datetime(last_noted_at) if last_noted_at else None

@property
def name(self) -> str:
return self._raw_channel["name"]

@property
def description(self) -> str | None:
return self._raw_channel["description"]

@property
def user_id(self) -> str | None:
return self._raw_channel["user_id"]

@property
def banner_url(self) -> str | None:
return self._raw_channel["banner_url"]

@property
def pinned_note_ids(self) -> list[str]:
return self._raw_channel["pinned_note_ids"]

@property
def color(self) -> str:
return self._raw_channel["color"]

@property
def is_archived(self) -> bool:
return self._raw_channel["is_archived"]

@property
def users_count(self) -> int:
return self._raw_channel["users_count"]

@property
def notes_count(self) -> int:
return self._raw_channel["notes_count"]

@property
def is_sensitive(self) -> bool:
return self._raw_channel["is_sensitive"]

@property
def allow_renote_to_external(self) -> bool:
return self._raw_channel["allow_renote_to_external"]

@property
def is_following(self) -> bool | None:
return self._channel.get("is_following")
return self._raw_channel.get("is_following")

@property
def is_favorited(self) -> bool | None:
return self._channel.get("is_favorited")
return self._raw_channel.get("is_favorited")

@property
def pinned_notes(self) -> list[Note]:
return [
Note(note, client=self.__client) for note in self._raw_channel.get("pinned_notes", [])
]

@property
def api(self) -> ClientChannelManager:
return self.__client._create_client_channel_manager(channel_id=self.id)

def __eq__(self, __value: object) -> bool:
return isinstance(__value, Channel) and self.id == __value.id

def __ne__(self, __value: object) -> bool:
return not self.__eq__(__value)
72 changes: 0 additions & 72 deletions mipac/models/lite/channel.py

This file was deleted.

8 changes: 4 additions & 4 deletions mipac/models/note.py
Original file line number Diff line number Diff line change
@@ -77,8 +77,8 @@ def __init__(self, data):
class NoteReaction(AbstractModel):
__slots__ = ("__reaction", "__client")

def __init__(self, reaction: INoteReaction, *, client: ClientManager):
self.__reaction: INoteReaction = reaction
def __init__(self, raw_reaction: INoteReaction, *, client: ClientManager):
self.__reaction: INoteReaction = raw_reaction
self.__client: ClientManager = client

@property
@@ -208,8 +208,8 @@ class Note:
client: ClientManager
"""

def __init__(self, note: INote, client: ClientManager):
self.__raw_note: INote = note
def __init__(self, raw_note: INote, client: ClientManager):
self.__raw_note: INote = raw_note
self.__client: ClientManager = client

@property
10 changes: 2 additions & 8 deletions mipac/models/notification.py
Original file line number Diff line number Diff line change
@@ -131,10 +131,7 @@ def user_id(self) -> str:

@property
def note(self) -> Note:
return Note(
self.__notification["note"],
client=self.__client,
)
return Note(self.__notification["note"], client=self.__client)


class NotificationPollEnd(Notification):
@@ -150,10 +147,7 @@ def __init__(

@property
def note(self) -> Note:
return Note(
self.__notification["note"],
client=self.__client,
)
return Note(self.__notification["note"], client=self.__client)


class NotificationReaction(Notification):
34 changes: 13 additions & 21 deletions mipac/types/channel.py
Original file line number Diff line number Diff line change
@@ -1,32 +1,24 @@
from typing import NotRequired, TypedDict

from mipac.types.note import IPartialNote


class IPartialChannel(TypedDict):
id: str
name: str


class IChannelNote(IPartialNote):
channel: IPartialChannel
channel_id: str
local_only: bool
from mipac.types.note import INote


class IChannelLite(IPartialChannel):
class IChannel(TypedDict):
id: str
created_at: str
last_noted_at: str | None
name: str
description: str | None
user_id: str
user_id: str | None
banner_url: str | None
pinned_note_ids: list[str]
color: str
is_archived: bool
users_count: int
notes_count: int
pinned_note_ids: NotRequired[list[str]] # pinned系は 13.11.0以上が必要
pinned_notes: NotRequired[list[IChannelNote]]


class IChannel(IChannelLite):
has_unread_note: bool
is_following: bool | None
is_favorited: bool | None # is_favoritedは 13.11.0以上が必要
is_sensitive: bool
allow_renote_to_external: bool
is_following: NotRequired[bool]
is_favorited: NotRequired[bool]
pinned_notes: NotRequired[list[INote]]
2 changes: 1 addition & 1 deletion mipac/types/reaction.py
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@
if TYPE_CHECKING:
from mipac.types.user import IPartialUser

__all__ = ("NoteReactionPayload",)
__all__ = ("NoteReactionPayload", "IReactionAcceptance")

IReactionAcceptance = Literal[
None,