Skip to content

Commit

Permalink
Update atproto
Browse files Browse the repository at this point in the history
  • Loading branch information
mnogu committed Sep 28, 2024
1 parent 598d18a commit c8edaf3
Show file tree
Hide file tree
Showing 14 changed files with 93 additions and 34 deletions.
2 changes: 1 addition & 1 deletion atproto
Submodule atproto updated 327 files
33 changes: 28 additions & 5 deletions chitose/app/bsky/actor/defs.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import chitose.app.bsky.actor.defs
import chitose.app.bsky.graph.defs
import chitose.com.atproto.label.defs
import chitose.com.atproto.repo.strong_ref
import typing

class ProfileViewBasic(chitose.Object):
Expand Down Expand Up @@ -44,7 +45,7 @@ def to_dict(self) -> dict[str, typing.Any]:
class ProfileViewDetailed(chitose.Object):
""""""

def __init__(self, did: str, handle: str, display_name: typing.Optional[str]=None, description: typing.Optional[str]=None, avatar: typing.Optional[str]=None, banner: typing.Optional[str]=None, followers_count: typing.Optional[int]=None, follows_count: typing.Optional[int]=None, posts_count: typing.Optional[int]=None, associated: typing.Optional[chitose.app.bsky.actor.defs.ProfileAssociated]=None, joined_via_starter_pack: typing.Optional[chitose.app.bsky.graph.defs.StarterPackViewBasic]=None, indexed_at: typing.Optional[str]=None, created_at: typing.Optional[str]=None, viewer: typing.Optional[chitose.app.bsky.actor.defs.ViewerState]=None, labels: typing.Optional[list[chitose.com.atproto.label.defs.Label]]=None) -> None:
def __init__(self, did: str, handle: str, display_name: typing.Optional[str]=None, description: typing.Optional[str]=None, avatar: typing.Optional[str]=None, banner: typing.Optional[str]=None, followers_count: typing.Optional[int]=None, follows_count: typing.Optional[int]=None, posts_count: typing.Optional[int]=None, associated: typing.Optional[chitose.app.bsky.actor.defs.ProfileAssociated]=None, joined_via_starter_pack: typing.Optional[chitose.app.bsky.graph.defs.StarterPackViewBasic]=None, indexed_at: typing.Optional[str]=None, created_at: typing.Optional[str]=None, viewer: typing.Optional[chitose.app.bsky.actor.defs.ViewerState]=None, labels: typing.Optional[list[chitose.com.atproto.label.defs.Label]]=None, pinned_post: typing.Optional[chitose.com.atproto.repo.strong_ref.StrongRef]=None) -> None:
self.did = did
self.handle = handle
self.display_name = display_name
Expand All @@ -60,9 +61,10 @@ def __init__(self, did: str, handle: str, display_name: typing.Optional[str]=Non
self.created_at = created_at
self.viewer = viewer
self.labels = labels
self.pinned_post = pinned_post

def to_dict(self) -> dict[str, typing.Any]:
return {'did': self.did, 'handle': self.handle, 'displayName': self.display_name, 'description': self.description, 'avatar': self.avatar, 'banner': self.banner, 'followersCount': self.followers_count, 'followsCount': self.follows_count, 'postsCount': self.posts_count, 'associated': self.associated, 'joinedViaStarterPack': self.joined_via_starter_pack, 'indexedAt': self.indexed_at, 'createdAt': self.created_at, 'viewer': self.viewer, 'labels': self.labels, '$type': 'app.bsky.actor.defs#profileViewDetailed'}
return {'did': self.did, 'handle': self.handle, 'displayName': self.display_name, 'description': self.description, 'avatar': self.avatar, 'banner': self.banner, 'followersCount': self.followers_count, 'followsCount': self.follows_count, 'postsCount': self.posts_count, 'associated': self.associated, 'joinedViaStarterPack': self.joined_via_starter_pack, 'indexedAt': self.indexed_at, 'createdAt': self.created_at, 'viewer': self.viewer, 'labels': self.labels, 'pinnedPost': self.pinned_post, '$type': 'app.bsky.actor.defs#profileViewDetailed'}

class ProfileAssociated(chitose.Object):
""""""
Expand Down Expand Up @@ -312,14 +314,17 @@ class BskyAppStatePref(chitose.Object):
:param queued_nudges: An array of tokens which identify nudges (modals, popups, tours, highlight dots) that should be shown to the user.
:param nuxs: Storage for NUXs the user has encountered.
"""

def __init__(self, active_progress_guide: typing.Optional[chitose.app.bsky.actor.defs.BskyAppProgressGuide]=None, queued_nudges: typing.Optional[list[str]]=None) -> None:
def __init__(self, active_progress_guide: typing.Optional[chitose.app.bsky.actor.defs.BskyAppProgressGuide]=None, queued_nudges: typing.Optional[list[str]]=None, nuxs: typing.Optional[list[chitose.app.bsky.actor.defs.Nux]]=None) -> None:
self.active_progress_guide = active_progress_guide
self.queued_nudges = queued_nudges
self.nuxs = nuxs

def to_dict(self) -> dict[str, typing.Any]:
return {'activeProgressGuide': self.active_progress_guide, 'queuedNudges': self.queued_nudges, '$type': 'app.bsky.actor.defs#bskyAppStatePref'}
return {'activeProgressGuide': self.active_progress_guide, 'queuedNudges': self.queued_nudges, 'nuxs': self.nuxs, '$type': 'app.bsky.actor.defs#bskyAppStatePref'}

class BskyAppProgressGuide(chitose.Object):
"""If set, an active progress guide. Once completed, can be set to undefined. Should have unspecced fields tracking progress."""
Expand All @@ -328,4 +333,22 @@ def __init__(self, guide: str) -> None:
self.guide = guide

def to_dict(self) -> dict[str, typing.Any]:
return {'guide': self.guide, '$type': 'app.bsky.actor.defs#bskyAppProgressGuide'}
return {'guide': self.guide, '$type': 'app.bsky.actor.defs#bskyAppProgressGuide'}

class Nux(chitose.Object):
"""A new user experiences (NUX) storage object
:param data: Arbitrary data for the NUX. The structure is defined by the NUX itself. Limited to 300 characters.
:param expires_at: The date and time at which the NUX will expire and should be considered completed.
"""

def __init__(self, id: str, completed: bool, data: typing.Optional[str]=None, expires_at: typing.Optional[str]=None) -> None:
self.id = id
self.completed = completed
self.data = data
self.expires_at = expires_at

def to_dict(self) -> dict[str, typing.Any]:
return {'id': self.id, 'completed': self.completed, 'data': self.data, 'expiresAt': self.expires_at, '$type': 'app.bsky.actor.defs#nux'}
5 changes: 3 additions & 2 deletions chitose/app/bsky/actor/profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,15 @@ class Profile(chitose.Record):
:param labels: Self-label values, specific to the Bluesky application, on the overall account.
"""

def __init__(self, display_name: typing.Optional[str]=None, description: typing.Optional[str]=None, avatar: typing.Optional[chitose.Blob]=None, banner: typing.Optional[chitose.Blob]=None, labels: typing.Optional[chitose.com.atproto.label.defs.SelfLabels]=None, joined_via_starter_pack: typing.Optional[chitose.com.atproto.repo.strong_ref.StrongRef]=None, created_at: typing.Optional[str]=None) -> None:
def __init__(self, display_name: typing.Optional[str]=None, description: typing.Optional[str]=None, avatar: typing.Optional[chitose.Blob]=None, banner: typing.Optional[chitose.Blob]=None, labels: typing.Optional[chitose.com.atproto.label.defs.SelfLabels]=None, joined_via_starter_pack: typing.Optional[chitose.com.atproto.repo.strong_ref.StrongRef]=None, pinned_post: typing.Optional[chitose.com.atproto.repo.strong_ref.StrongRef]=None, created_at: typing.Optional[str]=None) -> None:
self.display_name = display_name
self.description = description
self.avatar = avatar
self.banner = banner
self.labels = labels
self.joined_via_starter_pack = joined_via_starter_pack
self.pinned_post = pinned_post
self.created_at = created_at

def to_dict(self) -> dict[str, typing.Any]:
return {'displayName': self.display_name, 'description': self.description, 'avatar': self.avatar, 'banner': self.banner, 'labels': self.labels, 'joinedViaStarterPack': self.joined_via_starter_pack, 'createdAt': self.created_at, '$type': 'app.bsky.actor.profile'}
return {'displayName': self.display_name, 'description': self.description, 'avatar': self.avatar, 'banner': self.banner, 'labels': self.labels, 'joinedViaStarterPack': self.joined_via_starter_pack, 'pinnedPost': self.pinned_post, 'createdAt': self.created_at, '$type': 'app.bsky.actor.profile'}
4 changes: 2 additions & 2 deletions chitose/app/bsky/feed/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ def get_actor_likes(self, actor: str, limit: typing.Optional[int]=None, cursor:
"""Get a list of posts liked by an actor. Requires auth, actor must be the requesting account."""
return _get_actor_likes(self.call, actor, limit, cursor)

def get_author_feed(self, actor: str, limit: typing.Optional[int]=None, cursor: typing.Optional[str]=None, filter: typing.Optional[typing.Literal['posts_with_replies', 'posts_no_replies', 'posts_with_media', 'posts_and_author_threads']]=None) -> bytes:
def get_author_feed(self, actor: str, limit: typing.Optional[int]=None, cursor: typing.Optional[str]=None, filter: typing.Optional[typing.Literal['posts_with_replies', 'posts_no_replies', 'posts_with_media', 'posts_and_author_threads']]=None, include_pins: typing.Optional[bool]=None) -> bytes:
"""Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth.
:param filter: Combinations of post/repost types to include in response.
"""
return _get_author_feed(self.call, actor, limit, cursor, filter)
return _get_author_feed(self.call, actor, limit, cursor, filter, include_pins)

def get_feed(self, feed: str, limit: typing.Optional[int]=None, cursor: typing.Optional[str]=None) -> bytes:
"""Get a hydrated feed from an actor's selected feed generator. Implemented by App View."""
Expand Down
21 changes: 17 additions & 4 deletions chitose/app/bsky/feed/defs.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,16 @@ def to_dict(self) -> dict[str, typing.Any]:
class ViewerState(chitose.Object):
"""Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests."""

def __init__(self, repost: typing.Optional[str]=None, like: typing.Optional[str]=None, thread_muted: typing.Optional[bool]=None, reply_disabled: typing.Optional[bool]=None, embedding_disabled: typing.Optional[bool]=None) -> None:
def __init__(self, repost: typing.Optional[str]=None, like: typing.Optional[str]=None, thread_muted: typing.Optional[bool]=None, reply_disabled: typing.Optional[bool]=None, embedding_disabled: typing.Optional[bool]=None, pinned: typing.Optional[bool]=None) -> None:
self.repost = repost
self.like = like
self.thread_muted = thread_muted
self.reply_disabled = reply_disabled
self.embedding_disabled = embedding_disabled
self.pinned = pinned

def to_dict(self) -> dict[str, typing.Any]:
return {'repost': self.repost, 'like': self.like, 'threadMuted': self.thread_muted, 'replyDisabled': self.reply_disabled, 'embeddingDisabled': self.embedding_disabled, '$type': 'app.bsky.feed.defs#viewerState'}
return {'repost': self.repost, 'like': self.like, 'threadMuted': self.thread_muted, 'replyDisabled': self.reply_disabled, 'embeddingDisabled': self.embedding_disabled, 'pinned': self.pinned, '$type': 'app.bsky.feed.defs#viewerState'}

class FeedViewPost(chitose.Object):
"""
Expand All @@ -55,7 +56,7 @@ class FeedViewPost(chitose.Object):
:param feed_context: Context provided by feed generator that may be passed back alongside interactions.
"""

def __init__(self, post: chitose.app.bsky.feed.defs.PostView, reply: typing.Optional[chitose.app.bsky.feed.defs.ReplyRef]=None, reason: typing.Optional[chitose.app.bsky.feed.defs.ReasonRepost]=None, feed_context: typing.Optional[str]=None) -> None:
def __init__(self, post: chitose.app.bsky.feed.defs.PostView, reply: typing.Optional[chitose.app.bsky.feed.defs.ReplyRef]=None, reason: typing.Optional[typing.Union[chitose.app.bsky.feed.defs.ReasonRepost, chitose.app.bsky.feed.defs.ReasonPin]]=None, feed_context: typing.Optional[str]=None) -> None:
self.post = post
self.reply = reply
self.reason = reason
Expand Down Expand Up @@ -89,6 +90,12 @@ def __init__(self, by: chitose.app.bsky.actor.defs.ProfileViewBasic, indexed_at:
def to_dict(self) -> dict[str, typing.Any]:
return {'by': self.by, 'indexedAt': self.indexed_at, '$type': 'app.bsky.feed.defs#reasonRepost'}

class ReasonPin(chitose.Object):
""""""

def to_dict(self) -> dict[str, typing.Any]:
return {'$type': 'app.bsky.feed.defs#reasonPin'}

class ThreadViewPost(chitose.Object):
""""""

Expand Down Expand Up @@ -168,7 +175,7 @@ class SkeletonFeedPost(chitose.Object):
:param feed_context: Context that will be passed through to client and may be passed to feed generator back alongside interactions.
"""

def __init__(self, post: str, reason: typing.Optional[chitose.app.bsky.feed.defs.SkeletonReasonRepost]=None, feed_context: typing.Optional[str]=None) -> None:
def __init__(self, post: str, reason: typing.Optional[typing.Union[chitose.app.bsky.feed.defs.SkeletonReasonRepost, chitose.app.bsky.feed.defs.SkeletonReasonPin]]=None, feed_context: typing.Optional[str]=None) -> None:
self.post = post
self.reason = reason
self.feed_context = feed_context
Expand All @@ -185,6 +192,12 @@ def __init__(self, repost: str) -> None:
def to_dict(self) -> dict[str, typing.Any]:
return {'repost': self.repost, '$type': 'app.bsky.feed.defs#skeletonReasonRepost'}

class SkeletonReasonPin(chitose.Object):
""""""

def to_dict(self) -> dict[str, typing.Any]:
return {'$type': 'app.bsky.feed.defs#skeletonReasonPin'}

class ThreadgateView(chitose.Object):
""""""

Expand Down
4 changes: 2 additions & 2 deletions chitose/app/bsky/feed/get_author_feed.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import chitose
import typing

def _get_author_feed(call: chitose.xrpc.XrpcCall, actor: str, limit: typing.Optional[int]=None, cursor: typing.Optional[str]=None, filter: typing.Optional[typing.Literal['posts_with_replies', 'posts_no_replies', 'posts_with_media', 'posts_and_author_threads']]=None) -> bytes:
def _get_author_feed(call: chitose.xrpc.XrpcCall, actor: str, limit: typing.Optional[int]=None, cursor: typing.Optional[str]=None, filter: typing.Optional[typing.Literal['posts_with_replies', 'posts_no_replies', 'posts_with_media', 'posts_and_author_threads']]=None, include_pins: typing.Optional[bool]=None) -> bytes:
"""Get a view of an actor's 'author feed' (post and reposts by the author). Does not require auth.
:param filter: Combinations of post/repost types to include in response.
"""
return call('app.bsky.feed.getAuthorFeed', [('actor', actor), ('limit', limit), ('cursor', cursor), ('filter', filter)], None, {})
return call('app.bsky.feed.getAuthorFeed', [('actor', actor), ('limit', limit), ('cursor', cursor), ('filter', filter), ('includePins', include_pins)], None, {})
12 changes: 8 additions & 4 deletions chitose/tools/ozone/communication/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def __init__(self, call: XrpcCall, subscribe: XrpcSubscribe) -> None:
self.call = call
self.subscribe = subscribe

def create_template(self, name: str, content_markdown: str, subject: str, created_by: typing.Optional[str]=None) -> bytes:
def create_template(self, name: str, content_markdown: str, subject: str, lang: typing.Optional[str]=None, created_by: typing.Optional[str]=None) -> bytes:
"""Administrative action to create a new, re-usable communication (email for now) template.
Expand All @@ -25,9 +25,11 @@ def create_template(self, name: str, content_markdown: str, subject: str, create
:param subject: Subject of the message, used in emails.
:param lang: Message language.
:param created_by: DID of the user who is creating the template.
"""
return _create_template(self.call, name, content_markdown, subject, created_by)
return _create_template(self.call, name, content_markdown, subject, lang, created_by)

def delete_template(self, id: str) -> bytes:
"""Delete a communication template."""
Expand All @@ -37,18 +39,20 @@ def list_templates(self) -> bytes:
"""Get list of all communication templates."""
return _list_templates(self.call)

def update_template(self, id: str, name: typing.Optional[str]=None, content_markdown: typing.Optional[str]=None, subject: typing.Optional[str]=None, updated_by: typing.Optional[str]=None, disabled: typing.Optional[bool]=None) -> bytes:
def update_template(self, id: str, name: typing.Optional[str]=None, lang: typing.Optional[str]=None, content_markdown: typing.Optional[str]=None, subject: typing.Optional[str]=None, updated_by: typing.Optional[str]=None, disabled: typing.Optional[bool]=None) -> bytes:
"""Administrative action to update an existing communication template. Allows passing partial fields to patch specific fields only.
:param id: ID of the template to be updated.
:param name: Name of the template.
:param lang: Message language.
:param content_markdown: Content of the template, markdown supported, can contain variable placeholders.
:param subject: Subject of the message, used in emails.
:param updated_by: DID of the user who is updating the template.
"""
return _update_template(self.call, id, name, content_markdown, subject, updated_by, disabled)
return _update_template(self.call, id, name, lang, content_markdown, subject, updated_by, disabled)
6 changes: 4 additions & 2 deletions chitose/tools/ozone/communication/create_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import chitose
import typing

def _create_template(call: chitose.xrpc.XrpcCall, name: str, content_markdown: str, subject: str, created_by: typing.Optional[str]=None) -> bytes:
def _create_template(call: chitose.xrpc.XrpcCall, name: str, content_markdown: str, subject: str, lang: typing.Optional[str]=None, created_by: typing.Optional[str]=None) -> bytes:
"""Administrative action to create a new, re-usable communication (email for now) template.
Expand All @@ -14,6 +14,8 @@ def _create_template(call: chitose.xrpc.XrpcCall, name: str, content_markdown: s
:param subject: Subject of the message, used in emails.
:param lang: Message language.
:param created_by: DID of the user who is creating the template.
"""
return call('tools.ozone.communication.createTemplate', [], {'name': name, 'contentMarkdown': content_markdown, 'subject': subject, 'createdBy': created_by}, {'Content-Type': 'application/json'})
return call('tools.ozone.communication.createTemplate', [], {'name': name, 'contentMarkdown': content_markdown, 'subject': subject, 'lang': lang, 'createdBy': created_by}, {'Content-Type': 'application/json'})
7 changes: 5 additions & 2 deletions chitose/tools/ozone/communication/defs.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@ class TemplateView(chitose.Object):
:param last_updated_by: DID of the user who last updated the template.
:param subject: Content of the template, can contain markdown and variable placeholders.
:param lang: Message language.
"""

def __init__(self, id: str, name: str, content_markdown: str, disabled: bool, last_updated_by: str, created_at: str, updated_at: str, subject: typing.Optional[str]=None) -> None:
def __init__(self, id: str, name: str, content_markdown: str, disabled: bool, last_updated_by: str, created_at: str, updated_at: str, subject: typing.Optional[str]=None, lang: typing.Optional[str]=None) -> None:
self.id = id
self.name = name
self.content_markdown = content_markdown
Expand All @@ -26,6 +28,7 @@ def __init__(self, id: str, name: str, content_markdown: str, disabled: bool, la
self.created_at = created_at
self.updated_at = updated_at
self.subject = subject
self.lang = lang

def to_dict(self) -> dict[str, typing.Any]:
return {'id': self.id, 'name': self.name, 'contentMarkdown': self.content_markdown, 'disabled': self.disabled, 'lastUpdatedBy': self.last_updated_by, 'createdAt': self.created_at, 'updatedAt': self.updated_at, 'subject': self.subject, '$type': 'tools.ozone.communication.defs#templateView'}
return {'id': self.id, 'name': self.name, 'contentMarkdown': self.content_markdown, 'disabled': self.disabled, 'lastUpdatedBy': self.last_updated_by, 'createdAt': self.created_at, 'updatedAt': self.updated_at, 'subject': self.subject, 'lang': self.lang, '$type': 'tools.ozone.communication.defs#templateView'}
Loading

0 comments on commit c8edaf3

Please sign in to comment.