Skip to content
This repository has been archived by the owner on May 28, 2021. It is now read-only.

Commit

Permalink
[fix] UserStream機能を完全に削除、その他機能拡張性を持たせていたところを削除、一部書き換え
Browse files Browse the repository at this point in the history
* このプロジェクトを更新することはないため余計なところは消した。
* 英語表記をすべて日本語表記直した。
* 動作に関係ない誤字脱字を直した。
* 大掛かりな整形・最適化はしていない。
  • Loading branch information
PG-MANA committed Sep 17, 2018
1 parent 0ff279d commit 5cd15ef
Show file tree
Hide file tree
Showing 24 changed files with 32 additions and 149 deletions.
4 changes: 2 additions & 2 deletions rpmbuilder/build.spec
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# spec file for Sardine
# spec file for Salmon
#
# Copyright 2017 PG_MANA
#
Expand All @@ -7,7 +7,7 @@
#

%define APP_NAME salmon
%define APP_VERSION 0.0.3
%define APP_VERSION 0.0.4
%define APP_HOMEPAGE https://soft.taprix.org/product/salmon.html
%define APP_LICENCE Apache License, Version 2.0

Expand Down
1 change: 0 additions & 1 deletion src/Network/Network.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@

#include <QNetworkAccessManager>


class QNetworkRequest;
class QNetworkReply;
class QUrl;
Expand Down
7 changes: 0 additions & 7 deletions src/Network/OAuth.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,7 @@ void OAuth::makeOAuthHeader ( const char *url, bool post, std::vector<OAuth::ent
char buf[buff_size];

//下準備
#if(QT_VERSION>=QT_VERSION_CHECK(5,8,0))
timestamp = QString::number ( QDateTime::currentDateTimeUtc().toSecsSinceEpoch() ).toLatin1(); //Qt5.8以降
#else
//time_tはulonglong だから2038年問題には強そうだが、Qt 5.8が使えるようになり次第、この行は廃止する。
timestamp = QString::number ( QDateTime::currentDateTimeUtc().toTime_t() ).toLatin1() /*数字だけのはず*/;
#endif
nonce = QString::number ( QTime::currentTime().msec() ).toLatin1(); //qrand使わんでもこれで事足りそう。

//とりあえず必要項目をプッシュする。
Expand Down Expand Up @@ -123,5 +118,3 @@ void OAuth::HMAC_SHA1 ( const char *key, const char *data, char buff[buff_size]
SHA1cc_Finalize ( &t, ( uint8_t * ) buff );
return;
}


7 changes: 0 additions & 7 deletions src/Network/SHA1cc.cpp
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
/*
*
* SHA1cc.c
* SHA1ハッシュを出す。
* これは https://osdn.jp/projects/sha1cc/ の改造版です。
*/
#include "SHA1cc.h"
#include <string.h>


/* */
#ifdef NOT_ROL
#define ROL(v, b) (((v) << (b)) | ((v) >> (32-(b))))
#else
#define ROL(v, b) _rotl((v), (b))
#endif
#define BSW(v) __builtin_bswap32((v))

/* */
Expand Down Expand Up @@ -217,4 +211,3 @@ void SHA1cc_Finalize(
*((uint32_t*)(digest + 0x0c)) = UI32(t->State[3]);
*((uint32_t*)(digest + 0x10)) = UI32(t->State[4]);
}

1 change: 0 additions & 1 deletion src/Network/SHA1cc.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

#include <algorithm>
#include <stdint.h>
#define NOT_ROL //_rolが使える場合はこのdefineを外したほうがいいことあるかも

/* SHA1_Context */
struct SHA1_Context {
Expand Down
6 changes: 2 additions & 4 deletions src/Salmon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@ int main ( int argc, char *argv[] ) {
QApplication app ( argc, argv );
//全般設定
QTextCodec::setCodecForLocale ( QTextCodec::codecForName ( "UTF-8" ) );
app.setWindowIcon ( QIcon ( ":/icon-normal.png" ) ); //埋め込み

char setting_file[] = "default.ini";//今のところこれ(コマンドラインから指定できるようにしても良さそう。)
app.setWindowIcon ( QIcon ( ":/icon-normal.png" ) ); //埋め込みMainWindow window;
MainWindow window;
return window.init ( setting_file ) ?window.show(),app.exec() :EXIT_FAILURE;
return window.init ( "default.ini" ) ?window.show(),app.exec() :EXIT_FAILURE;
}
6 changes: 2 additions & 4 deletions src/Salmon.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,7 @@
//設定
#define USER_AGENT "Salmon for Linux"
#define APP_NAME "Salmon"
#define APP_NAME_LONG "Salmon for Linux"
#define APP_VERSION "0.0.3 Dev"
#define APP_NAME_LONG "Salmon for Linux"
#define APP_VERSION "0.0.4 Final"
#define APP_HOMEPAGE "https://soft.taprix.org/product/salmon.html"
#define APP_COPYRIGHT "Copyright 2017 PG_MANA"

#define ENABLE_NEW_STREAM true // 2018/08/16にUser Streamがなくなるため
1 change: 0 additions & 1 deletion src/Twitter/MediaUpload.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,4 +85,3 @@ void MediaUpload::retry() {
start();
return;
}

1 change: 0 additions & 1 deletion src/Twitter/MediaUpload.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,3 @@ public slots:
Twitter *twitter;
unsigned int counter;
};

41 changes: 11 additions & 30 deletions src/Twitter/Streamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
#include "Streamer.h"
#include "Twitter.h"
#include "TwitterJson.h"
#include "../Salmon.h" // ENABLE_NEW_STREAM
#include <QNetworkReply>
#include <QUrlQuery>
#include <QJsonObject>
Expand All @@ -22,7 +21,7 @@ Streamer::Streamer ( QObject *parent )
}

Streamer::~Streamer() {
stopUserStream();
stopFilterStream();
delete twitter;
}

Expand All @@ -38,43 +37,28 @@ void Streamer::setTwitter ( const TwitterSetting *twset ) {
/*
* 引数:なし
* 戻値:なし
* 概要:user_streamを開始する。reply->closeするか、deleteするまで永遠と動く
* 概要:filter_streamを開始する。まずはフォローしている人のIDを取得する
*/
#if ENABLE_NEW_STREAM
void Streamer::startUserStream() {
void Streamer::startFilterStream() {
if ( !friend_ids.isEmpty() ) return finishedGettingFriendIds();
if ( twitter == nullptr ) return emit abort ( TwitterCore::BadPointer );
if ( reply != nullptr && reply->isRunning() ) return;
reply = twitter->friends_ids();
if ( reply->error() !=QNetworkReply::NoError ) {
if ( reply->error() != QNetworkReply::NoError ) {
delete reply;
reply = nullptr;
return emit abort ( TwitterCore::CannotConnect );
}
connect ( reply,&QNetworkReply::finished,this,&Streamer::startFilterStream );
connect ( reply,&QNetworkReply::finished,this,&Streamer::finishedGettingFriendIds );
return;
}
#else
void Streamer::startUserStream() {
if ( twitter == nullptr ) return emit abort ( TwitterCore::BadPointer );
if ( reply != nullptr && reply->isRunning() ) return;
reply = twitter->user_stream();
if ( reply->error() !=QNetworkReply::NoError ) {
delete reply;
reply = nullptr;
return emit abort ( TwitterCore::CannotConnect );
}
connect ( reply,&QNetworkReply::readyRead,this,&Streamer::readStream ); //qnet->getの前にconnectしたい(ただQtのサンプルを見る限り間違った実装ではなさそう)
connect ( reply,&QNetworkReply::finished,this,&Streamer::finishedStream );
return;
}
#endif

/*
* 引数:なし
* 戻値:なし
* 概要:friends_idsをもとにfilter_streamを開始する。reply->closeするか、deleteするまで永遠と動く。暫定処理
* 概要:friends_idsをもとにfilter_streamを開始する。reply->closeするか、deleteするまで永遠と動く。
*/
void Streamer::startFilterStream() {
void Streamer::finishedGettingFriendIds() {
if ( reply->error() !=QNetworkReply::NoError ) {
delete reply;
reply = nullptr;
Expand All @@ -98,13 +82,12 @@ void Streamer::startFilterStream() {
return;
}


/*
* 引数:なし
* 戻値:なし
* 概要:user_streamを停止する。スレッドは削除されない。なおこのときfinishedシグナルが出される。
* 概要:filter_streamを停止する。スレッドは削除されない。なおこのときfinishedシグナルが出される。
*/
void Streamer::stopUserStream() {
void Streamer::stopFilterStream() {
if ( reply != nullptr ) {
reply->close();
delete reply;
Expand Down Expand Up @@ -140,11 +123,9 @@ void Streamer::readStream() {

TwitterJson::TweetData *twdata = new TwitterJson::TweetData ( json,twitter->getUserId() );
if ( !twdata->isEmpty() ) {
#if ENABLE_NEW_STREAM
if(!friend_ids.contains(twdata->user_info.id)){//エグいにも程がある
return delete twdata;
}
#endif
return emit newTweet ( twdata );
} else {
delete twdata;
Expand All @@ -167,7 +148,7 @@ void Streamer::readStream() {
void Streamer::finishedStream() {
if ( reply ) {
QNetworkReply::NetworkError error = reply->error();
if ( reply->isRunning() ) stopUserStream();
if ( reply->isRunning() ) stopFilterStream();
if ( error != QNetworkReply::OperationCanceledError ) emit abort ( TwitterCore::NetworkError );
}
return;
Expand Down
8 changes: 4 additions & 4 deletions src/Twitter/Streamer.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ class Streamer : public QObject {

public slots:
void setTwitter ( const TwitterSetting *twset );
void startUserStream();
void stopUserStream();
void startFilterStream();
void stopFilterStream();
void readStream();
void finishedStream();
void startFilterStream();

protected:
private:
void finishedGettingFriendIds();
qint64 json_size;
QString friend_ids;
Twitter *twitter;
Expand Down
33 changes: 1 addition & 32 deletions src/Twitter/Twitter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#include "TwitterSetting.h"
#include "../Network/OAuth.h"
#include "../Network/Network.h"
#include "../Salmon.h"
#include "../Key.h"
#include <QtCore>
#include <QNetworkRequest>
#include <QNetworkReply>
Expand Down Expand Up @@ -120,23 +120,6 @@ QNetworkReply *Twitter::home_timeline ( const QByteArray &since_id ) {
return net.get ( req );
}

/*
* 引数:なし
* 戻値:getしたあとのQNetworkReply
* 概要:UserStream、いわゆるタイムラインのストリーム。delimited=lengthがつく。
*/
QNetworkReply *Twitter::user_stream() {
QNetworkRequest req;
std::vector<OAuth::entry> ele;
QUrl qurl ( TwitterUrl::user_stream );

qurl.setQuery ( QUrlQuery ( "delimited=length" ) );
req.setUrl ( qurl );
ele.push_back ( OAuth::entry {"delimited","length",true} );
get ( TwitterUrl::user_stream,req,ele );
return net.get ( req );
}

/*
* 引数:なし
* 戻値:getしたあとのQNetworkReply
Expand Down Expand Up @@ -283,20 +266,6 @@ QNetworkReply *Twitter::media_upload_finalize ( const QByteArray &media_id ) {
return net.post ( req,QByteArray ( "command=FINALIZE&media_id=" ) + media_id );
}

/*
* 引数:なし
* 戻値:getしたあとのQNetworkReply
* 概要:自分の保持してるList一覧を取る。
*/
QNetworkReply *Twitter::get_lists() {
std::vector<OAuth::entry> ele;
QNetworkRequest req;
get ( TwitterUrl::lists_list,req,ele );
req.setUrl ( QUrl ( TwitterUrl::lists_list ) );
//送信
return net.get ( req );
}

/*
* 引数:なし
* 戻値:getしたあとのQNetworkReply
Expand Down
3 changes: 0 additions & 3 deletions src/Twitter/Twitter.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,6 @@ class Twitter {
//ユーザ関係
QNetworkReply *friends_ids ( const QByteArray &cursor = QByteArray() );

//リスト関係
QNetworkReply *get_lists();

protected:
/*汎用関数。あくまでTwitterクラスから呼ぶもので他のクラス(UIなど)からはこれを呼ばず専用の関数を作る。*/
void get ( const char *uri,QNetworkRequest &req,std::vector<OAuth::entry> &ele ); //Requestを作成するだけ
Expand Down
2 changes: 0 additions & 2 deletions src/Twitter/TwitterJson.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
#include <QDateTime>
#include <QVector>


namespace TwitterJson {

UserInfo::UserInfo ( const QJsonObject &json ) {
Expand Down Expand Up @@ -286,4 +285,3 @@ QVector<QPair<QByteArray,QString>> getListInfo ( const QJsonArray &json ) {
return res;
}
}

1 change: 0 additions & 1 deletion src/Twitter/TwitterSetting.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
#include <QSettings>
#include <QDir>


TwitterSetting::TwitterSetting ( const QString &file_name ) : setting ( getFilePath ( file_name ), QSettings::IniFormat ) {
setting.beginGroup ( "Twitter" );
strcpy ( user_id,setting.value ( "User_id","" ).toByteArray().constData() );
Expand Down
1 change: 0 additions & 1 deletion src/Twitter/TwitterUrl.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ static const char request_token[] = "https://api.twitter.com/oauth/request_token
static const char home_timeline[] = "https://api.twitter.com/1.1/statuses/home_timeline.json";

//ストリーム関係
static const char user_stream[] = "https://userstream.twitter.com/1.1/user.json";
static const char filter_stream[] = "https://stream.twitter.com/1.1/statuses/filter.json";

//ツイート関係
Expand Down
1 change: 0 additions & 1 deletion src/UI/ImageLabel.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,3 @@ public slots:
unsigned int index;//何番目か(0から始まる)
unsigned int sizex,sizey;//縮小サイズ(0なら縮小しない)
};

4 changes: 0 additions & 4 deletions src/UI/ImageViewer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ ImageViewer::ImageViewer ( TwitterJson::TweetData *twdata,unsigned int index,QWi

QVBoxLayout *main_layout = new QVBoxLayout ( this );
QScrollArea *image_area = new QScrollArea;
QLabel *open_link = new QLabel ( "<a href=\"" + media_data.url + "\" >" + tr ( "ブラウザで開く" ) + "</a>" ); //おまけ
iml = new ImageLabel ( 0,0,0,nullptr );

setWindowTitle ( tr ( "画像の詳細 " APP_NAME ) );
Expand All @@ -32,9 +31,6 @@ ImageViewer::ImageViewer ( TwitterJson::TweetData *twdata,unsigned int index,QWi
image_area->setWidgetResizable ( true );
image_area->setWidget ( iml ); //先に追加しておいてボタンを下に持ってくる
main_layout->addWidget ( image_area );
//リンク
open_link->setOpenExternalLinks ( true );
main_layout->addWidget ( open_link );
//ボタン作成
createButtons ( main_layout );

Expand Down
Loading

0 comments on commit 5cd15ef

Please sign in to comment.