| 457 | } |
| 458 | |
| 459 | Data * NNTPSession::fetchArticle(String *groupName, unsigned int index, NNTPProgressCallback * callback, ErrorCode * pError) |
| 460 | { |
| 461 | int r; |
| 462 | char * content; |
| 463 | size_t content_len; |
| 464 | |
| 465 | MCLog("fetch article at index %u", index); |
| 466 | |
| 467 | selectGroup(groupName, pError); |
| 468 | if (* pError != ErrorNone) { |
| 469 | return NULL; |
| 470 | } |
| 471 | |
| 472 | r = newsnntp_article(mNNTP, index, &content, &content_len); |
| 473 | if (r == NEWSNNTP_ERROR_STREAM) { |
| 474 | * pError = ErrorConnection; |
| 475 | return NULL; |
| 476 | } |
| 477 | else if (r != NEWSNNTP_NO_ERROR) { |
| 478 | * pError = ErrorFetchMessageList; |
| 479 | return NULL; |
| 480 | } |
| 481 | |
| 482 | Data * result; |
| 483 | result = Data::dataWithBytes(content, (unsigned int) content_len); |
| 484 | newsnntp_article_free(content); |
| 485 | * pError = ErrorNone; |
| 486 | |
| 487 | return result; |
| 488 | } |
| 489 | |
| 490 | Data * NNTPSession::fetchArticleByMessageID(String * messageID, ErrorCode * pError) |
| 491 | { |